在提供的程式碼中,indexOf() 方法用於 CheckMe() 函數中的陣列。雖然此函數在 Opera、Firefox 和 Chrome 中完美運行,但在 IE8 中的 if ( allowed.indexOf(ext[1]) == -1) 行中遇到錯誤。出現此問題的原因是 IE8 本身不支援陣列的 indexOf() 函數。
要解決此問題,您可以合併一個 Polyfill,將 indexOf() 方法新增至 Array 物件。以下是範例:
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() 的此實作基於 MDN 的版本,並且與 Firefox 和 SpiderMonkey 相容。它將把 indexOf() 方法加入 IE8 或任何其他本身不支援它的瀏覽器中的 Array 物件。
透過合併此填充,您可以確保您的程式碼即使在舊版瀏覽器中也能如預期運作像IE8一樣缺少indexOf()方法。
以上是為什麼我的 JavaScript `indexOf()` 方法在 IE8 失敗,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!