火狐瀏覽器(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()失效問題)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM