[JS] IE 的 JS 陣列不可使用 indexOf()

Javascript 的 Array.indexOf() 必須要 JS 1.6 版本才能使用,IE7、IE8 只有JS 1.3,且 IE9 改成相容 IE7 也會出問題。

/* 2012.10.12 Maple 記錄

2012.10.17 Maple 修改 */

昨天程式換版後連續遇到兩個使用者反應功能異常,

第一個是 IE9 相容模式成 IE7,另一個是 IE8

經過檢測後發現是 Javascript 的 Array.indexOf() 判斷失效,導致後續的 JS 執行強制停止

W3schools 網站中寫必須要 JS 1.6 版本才能使用,但是 IE 到底是幾版的呢 ?

爬文後發現  IE7、IE8 只有JS 1.3 阿!  

而且看樣子 IE9 改成相容 IE7 也會出問題

( 一開始還真的摸不透原因,直到 IE8 的使用者也有問題才發現 ~"~ )

網友 毛豆 建議使用 JQuery 的 jQuery.inArray( target, Array) 來解決

果然比較省事呀!

若採用我 GOOGLE 到的文章 http://www.phpzixue.cn/detail1086.shtml 來解決

也就是自己擴展方法寫一個 Array._indexOf() 呼叫

會造成只要是陣列的元素,執行到 for( var tempKey in array ) { ... } 就會多一個 tempKey 為 _indexOf 

所以不建議用擴展方式 !