1

重複の可能性:
indexOf が配列 IE8 で機能しないのはなぜですか?

最近、ネイティブ Javascript と jQuery を使用するスクリプトを開発しました。私の開発のほとんどは、IE 9、Chrome、Firefox で行われました。それらすべてに対して、以下の行は完全に機能します。

if(data.cols.indexOf("footprint") < 0)

しかし、今日、コードの一部を本番システムにプッシュしたところ、いくつかのクライアントがページが壊れていると言って戻ってきました。検索を に絞り込みましたがindexOf、どうやら IE 8 は少しも気に入らないようです。だから私は代替案を見つけようとしていて、このビットを見つけましたArray.prototype.indexOfが、それを上記のような if-else にどのように結び付けるかはよくわかりません。

また、より良い代替案があれば、私はすべて耳にします。また、これは IE 8 ブラウザーにのみ適用する必要があるかもしれません。IE 8 が見つかった場合はこれを使用し、オリジナルを使用しない場合は使用しますか?

4

1 に答える 1

1

この質問は何度も出てきました。別の Stackoverflow スレッドがここにあります: How to fix Array indexOf() in JavaScript for Internet Explorer browsers

さまざまなスレッドの何人かが、MDC のこのコードを使用することを推奨しています。これはコードのようです:

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() を呼び出す前に、このコードを実行するだけです

于 2012-07-13T14:58:31.150 に答える