• 火狐浏览器(firefox)中js要注意的问题


    1.出现错误调用error方法或者ajax请求了多次,那么极有可能是异步请求的原因。

       添加   async  : false  ,

        -> async. 默认是 true,即为异步方式,$.ajax执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发$.ajax里的success方法,这时候执行的是两个线程。

        -> async 设置为 false,则所有的请求均为同步请求,在没有返回值之前,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。

    2.后台返回的dataType类型和前台js写的不一致会跳入error

       传的不是json格式的数据就不用写 dataType : 'json' ,

         json格式错误也会跳入error.{"test":1} 所以要注意格式。

         在不需要返回值的情况下,扔按模板格式,设置了dataType:"json",参数;这时候,ajax传值正确时,出现200返回成功状态下报错的特殊情况。

      3.url:'http://192.168.1.100:8080/Xxx

       如果你请求的数据不在本地或者不在同一服务器中,那么就可能是跨域问题,要用jsonp,即  dataType : 'jsonp' ,  当然这意思最基础的方法,jsonp和json的格式还是有点小区别的:  jsonp比json多了个方法,即  json= " json格式数据 ",jsonp= " 方法名(json格式数据)",至于跨域的详细的解释和解决方法找度娘吧。

         4. event.preventDefault();失效问题的解决办法

    /**
    *firefox----这段重新封装了event对象
    *在火狐浏览器上就可以用event对象了
    */
    function __firefox(){
    HTMLElement.prototype.__defineGetter__("runtimeStyle", __element_style);
    window.constructor.prototype.__defineGetter__("event", __window_event);
    Event.prototype.__defineGetter__("srcElement", __event_srcElement);
    }
    function __element_style(){
    return this.style;
    }
    function __window_event(){
    return __window_event_constructor();
    }
    function __event_srcElement(){
    return this.target;
    }
    function __window_event_constructor(){
    if(document.all){
    return window.event;
    }
    var _caller = __window_event_constructor.caller;
    while(_caller!=null){
    var _argument = _caller.arguments[0];
    if(_argument){
    var _temp = _argument.constructor;
    if(_temp.toString().indexOf("Event")!=-1){
    return _argument;
    }
    }
    _caller = _caller.caller;
    }
    return null;
    }
    if(window.addEventListener){
    __firefox();
    }
      

    在右event参数传递的情况下,可以用下面的方法试试:(这个还未验证,如果不行使用上面的方法)

    function show (e){
        var event = document.all ? window.event : e;
            event.preventDefault();
    }

    不常见的情况:

      1.data没有写

        解决方法:data为空也一定要传"{}";不然返回的是xml格式的。并提示parsererror. data:"{}"。

      2.url路径有中文

        解决方法:去掉中文。

      3.传的数据格式ajax不支持

        解决方法:换成json或其他ajax支持的数据格式。

      4.字符编码不匹配

        解决方法:统一UTF-8。

    本文参考资料:

    1.https://blog.csdn.net/c_molione/article/details/85072235

    2.https://www.cnblogs.com/huxiuqian/p/10152166.html

    3.https://www.cnblogs.com/lu2527/p/10059951.html   (event.preventdefault()失效问题)

  • 相关阅读:
    还得还得学啊
    感觉自己写的东西很死板啊
    好烦啊,不知道选哪个?
    222
    111
    愁人啊
    ssm+ajax实现登陆
    ssm框架搭建
    抽象类与接口
    代理设计模式
  • 原文地址:https://www.cnblogs.com/imustun/p/10454730.html
Copyright © 2020-2023  润新知