ホームページ > 記事 > ウェブフロントエンド > Firefox、Chrome、およびデバッグ Windows で JavaScript 関数のエイリアスが「document.getElementById」で失敗するのはなぜですか?
JavaScript 関数のエイリアスに関する難題
JavaScript 関数のエイリアスにエイリアス メソッドを使用しようとしているときに、一部のユーザーが Firefox、Chrome、
原因
分析の結果、JavaScript 関数がそのホスト オブジェクトと緩やかに接続されていることが判明しました。関数を呼び出すとき、JavaScript はスコープを決定し、それを関数に渡します。エイリアシングの場合、スコープは明示的に指定されないため、グローバル Window オブジェクトがスコープとして渡されます。
Document.getElementById への影響 Aliasing
With document .getElementById、具体的には、getElementById はこのオブジェクトがドキュメント オブジェクトであると想定しているため、この不整合が問題になります。正しいスコープ (つまり、ドキュメント) を指定せずにエイリアスされた関数が呼び出される場合、関数呼び出しは失敗し、「WrappedNative プロトタイプ オブジェクトに対する不正な操作」というエラーが発生します。
Working Solution
この問題を解決するには、apply メソッドを使用して関数呼び出し時にスコープを手動で指定します。たとえば、myAlias を直接呼び出す代わりに、次の構文を使用できます。
myAlias.apply(document, ['someElement']);
例外: Internet Explorer
特に、関数のエイリアスは、次の場合に期待どおりに機能します。インターネットエクスプローラー。これは、Internet Explorer の getElementById の実装が原因であると考えられます。この実装により、ウィンドウ オブジェクトがドキュメント オブジェクトと同一視される可能性があります。
以上がFirefox、Chrome、およびデバッグ Windows で JavaScript 関数のエイリアスが「document.getElementById」で失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。