解決IE8 中的Array.indexOf() 問題
indexOf() 方法在現代瀏覽器中廣泛用於搜尋數組中的元素。但是,它可能會在舊版的 Internet Explorer 中遇到問題。
由於缺少indexOf() 而在IE8 中失敗的範例腳本是:
function CheckMe() { var allowed = new Array('docx','xls','xlsx', 'mp3', 'mp4', '3gp', 'sis', 'sisx', 'mp3', 'wav', 'mid', 'amr', 'jpg', 'gif', 'png', 'jpeg', 'txt', 'pdf', 'doc', 'rtf', 'thm', 'rar', 'zip', 'htm', 'html', 'css', 'swf', 'jar', 'nth', 'aac', 'cab', 'wgz'); var fileinput=document.getElementById('f'); var ext = fileinput.value.toLowerCase().split('.'); if ( allowed.indexOf(ext[1]) == -1) { document.getElementById('uploadsec').innerHTML = document.getElementById('uploadsec').innerHTML; alert('This file type is not allowed!'); } }
IE8 的解決方案相容性
要在IE8 中解決此問題,需要明確定義indexOf() 函數對於使用polyfill 的Array物件:
if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(elt /*, from*/) { // Code from MDN or another compatible implementation }; }
實現此 polyfill 後,indexOf() 方法應該在 IE8 和其他可能缺乏本機支援的瀏覽器中按預期運作。
以上是為什麼 `Array.indexOf()` 在 IE8 中不起作用,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!