首頁 >web前端 >js教程 >如何修復 IE8 中陣列的「indexOf」方法問題?

如何修復 IE8 中陣列的「indexOf」方法問題?

DDD
DDD原創
2024-11-25 03:34:14613瀏覽

How Can I Fix the `indexOf` Method Issue for Arrays in IE8?

IE8 陣列缺少indexOf:解

在這個常見的JavaScript 函數中,在條件if 中使用Array.prototype.indexOf (totype.indexOf (totype.indexOf allowed.indexOf(ext[1]) == -1) 在IE8 會導致問題。要了解原因,讓我們深入研究 IE8 的獨特行為。

IE8 與 Opera、Firefox 和 Chrome 等現代瀏覽器不同,缺少陣列的 indexOf 方法。這項遺漏源自於 IE8 不支援引進了 indexOf 方法的 ECMAScript 5 標準。因此,在 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;
  };
}

這段程式碼片段源自 MDN,為 indexOf 方法定義了一個 polyfill。它確保 Array.prototype.indexOf 在所有環境中都可用,包括 IE8。透過在數組上使用indexOf之前添加此程式碼,我們可以確保它在所有瀏覽器中都能正確運行,包括IE8。

透過實現此解決方案,原始函數將在IE8中無縫運行,允許開發人員檢查是否使用者選擇的檔案中允許使用特定的檔案副檔名。

以上是如何修復 IE8 中陣列的「indexOf」方法問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn