關於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;
}
以上就是本文的全部內容,希望對大家有所幫助,謝謝對的支持!