首頁 > web前端 > js教程 > 為什麼我的 JavaScript `indexOf()` 方法在 IE8 失敗,如何修復它?

為什麼我的 JavaScript `indexOf()` 方法在 IE8 失敗,如何修復它?

DDD
發布: 2024-12-01 04:28:10
原創
444 人瀏覽過

Why is my JavaScript `indexOf()` method failing in IE8, and how can I fix it?

IE8 中缺少陣列 indexOf() 方法

在提供的程式碼中,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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板