關於JavaSctipt的兼容性,最懶的辦法就是用jQuery的工具函數。盡量不要用那些什麼ECMAScript之類的函數,因為很多浏覽器都會報找不到函數的錯誤。下面列出一些在開發過程中碰到過的javascript問題。
1、參數列表多個逗號。
$.ajax({})方法,非常熟悉了吧,但是在IE中有個小地方要注意,如果你在拼接參數列表的時候最後一個也加了逗號,那麼毫無疑問,IE下全部JS失效。
調試時報如下錯誤:
缺少標識符、字符串或數字
data: { S_Id: Subject_Id, level: $("#addKey").attr("lang"), --如果寫上這個逗號,IE會報錯,火狐谷歌正常。 },
2、var str; 與 var str=""的區別
<script> var Str1; for (var i = 0; i < 3; i++) { Str1 += "xxx" } alert(Str1); var Str2 = ""; for (var i = 0; i < 3; i++) { Str2 += "xxx" } alert(Str2); </script>
兩次輸出結果分別如下:
第一次:
第二次:
一個變量,如果定義時不賦值,那麼就是undefined。再加字符串就是undefined + "要加的字符串"。如果這樣給HTML元素賦值。undefined也是會顯示出來的,怎麼注意你懂的。
3、IE緩存JS的調試
今天調試的時候,發現IE8的JS緩存,非常非常霸氣。刷新,清空緩存都無效。搞得刷新到鼠標左鍵都快碎了,還是不刷新。
現在特別來說個技巧,就是引入JS的時候,在後面加個new Date()。這樣就不用刷新得那麼辛苦了。
<script type="text/javascript" src="/123.js?new Date()"></script>
4、JS判斷函數/變量是否存在,存在則調用
javascript中null,undefined,0,"",false作為if的條件的時候,被認為是flase。
所以對於變量,如果我們定義了一個變量 var str = "";這樣判斷,依然返回false。
//是否存在指定函數 function isExitsFunction(funcName) { try { if (typeof(eval(funcName)) == "function") { return true; } } catch(e) {} return false; } //是否存在指定變量 function isExitsVariable(variableName) { try { if (typeof(variableName) == "undefined") { //alert("value is undefined"); return false; } else { //alert("value is true"); return true; } } catch(e) {} return false; }
以上就是本文的全部內容,希望對大家有所幫助,謝謝對的支持!