IE 8はJSの配列に対して、属性遍歴の方法を採用して、異なるところを解析します.
887 ワード
ここはブラウザバージョンの違いによって穴が開けられています.
Array.prototype.Contains = function (str) {
if (!str)
return false;
for (var i = 0; i < this.length; i++) {
if (this[i] == str) {
return true;
}
}
return false;
}
var tmp = new Array();
tmp.push("1");
tmp.push("2");
tmp.push("3");
alert(" ");
for ( var i in tmp ) {
alert(tmp[i]);
}
alert(" ");
for ( var i=0;i<tmp.length;i++ ) {
alert(tmp[i]);
}
IE 8ブラウザであれば、 えば(IE 7、IE 9、Chrome、FFのみをテストする) と を して、その は じです.
しかし、IE 8については、 が し ってきます.IE 8ではプロトタイプチェーン を として しますので、テストしてみてください.
この いを したのも、 しげなバグを したからです.ある がコードの でfor(var i in tmp)という を って の を しています.もしArayに してプロトタイプチェーンの を したら、この が します.
を するなら、 な き for(var i=0;i<tmp.length;i+)を するべきです.