Array.indexOf() 函數在IE8 失敗
indexOf() 函數,用於檢查數組中元素的索引,在9之前的Internet Explorer (IE) 版本中提出了挑戰。具體來說,在IE8 中,此功能無法按預期工作,讓開發人員
要追蹤根本原因,請考慮以下函數,該函數在Opera、Firefox 和Chrome 等瀏覽器中可用:
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) {...
當函數嘗試執行以下操作時,會發生錯誤執行if (allowed.indexOf(ext[1]) == -1) 條件語句。在 IE8 中,陣列不支援 indexOf(),導致程式碼失敗。
要修正此問題,可以實施以下修復:
if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(elt /*, from*/) { var len = this.length >>> 0; var from = Number(arguments[1]) || 0; from = (from < 0) ? Math.ceil(from) : Math.floor(from); if (from < 0) from += len; for (; from < len; from++) { if (from in this && this[from] === elt) return from; } return -1; }; }
此修復添加了indexOf () 方法到數組原型(如果它不存在),特別是針對IE8 或更低版本。透過合併此修復,CheckMe() 函數將按預期執行,解決 IE8 中的問題。
以上是為什麼 Array.indexOf() 在 IE8 失敗,如何修復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!