ホームページ > 記事 > ウェブフロントエンド > IEとFirefoxのJavaScriptの違いと代替実装方法_JavaScriptスキル
IE と Firefox で js を扱う場合、互換性の問題がよく発生します。ここでいくつかの概要を説明します。
1.document.formName.item("itemName") 問題
説明: IE では、document.formName.item("itemName") または document.formName を使用できます。 . elements["elementName"]; Firefox では、document.formName.elements["elementName"] のみを使用できます。
解決策: document.formName.elements["elementName"] を一律に使用します。
2. コレクション オブジェクトに関する問題
説明: IE では、() または [] を使用してコレクション オブジェクトを取得できますが、Firefox では、[] を使用してのみコレクション オブジェクトを取得できます。
解決策: コレクション クラス オブジェクトを取得するには、一律に [] を使用します。
3. カスタム属性の問題
説明: IE では、取得方法を使用できます。通常の属性の場合、getAttribute() を使用してカスタム属性を取得することもできます。Firefox では、getAttribute() を使用してのみカスタム属性を取得できます。
解決策: getAttribute() を通じてカスタム属性を均一に取得します。
4.eval("idName") の問題
説明: IE では、eval("idName") または getElementById("idName") を使用して HTML を取得できます。その ID は idName オブジェクトです。Firefox では、idName の ID を持つ HTML オブジェクトを取得するには getElementById("idName") のみを使用します。
解決策: getElementById("idName") を一律に使用して、 idName.
5. 変数名が HTML オブジェクトの ID と同じである問題
説明: IE では、HTML の ID object はドキュメントの下位オブジェクトの変数名として直接使用できますが、Firefox では HTML オブジェクト ID と同じ変数名を使用できます。
解決策: document.idName の代わりに document.getElementById("idName") を使用します。エラーを減らすために、変数を宣言するときは常に var を追加してください。
6.const の問題
説明: Firefox では定数を定義するために const キーワードまたは var キーワードを使用できますが、IE では var キーワードのみを使用できます。定数を定義します。
解決策: var キーワードを一律に使用して定数を定義します。
7. input.type 属性の問題
説明: IE での input.type属性は読み取り専用ですが、Firefox の input.type 属性は読み書き可能です。
8.window.event の問題
説明: window.event は読み取り専用です。これは、Firefox のイベントはイベントが発生する場面でのみ使用できるためです。
解決策:
IE:
...
IE&Firefox:
...
9.event.x およびevent.y の問題
説明: IE では、even オブジェクトはx、y 属性。ただし、pageX、pageY 属性はありません。Firefox では、even オブジェクトには pageX、pageY 属性がありますが、x、y 属性はありません。
解決策: mX (mX =event.x ?event.x) を使用します。 :event.pageX;) IE のevent.x または Firefox のevent.pageX を置き換えます。
10.event.srcElement の問題
説明: IE では偶数object には srcElement 属性がありますが、target 属性はありません。Firefox では、even オブジェクトには target 属性がありますが、srcElement 属性はありません。解決策: obj (obj =event.srcElement ?event.srcElement :event.target) を使用します。 ;) IE の srcElement または Firefox のevent.target の代わりに。
11.window.location.href の問題
説明: IE または Firefox2.0 の場合。 .x では、window.location または window.location.href を使用できます。Firefox1.5.x では、window.location のみを使用できます。
解決策: window.location.href の代わりに window.location を使用します。 >
12 .モーダル ウィンドウと非モーダル ウィンドウの問題
説明: IE では、showModalDialog および showModelessDialog を通じてモーダル ウィンドウと非モーダル ウィンドウを開くことができますが、これは Firefox では不可能です。 .
解決策: 直接使用します。 window.open(pageURL,name,parameters) メソッドにより、新しいウィンドウが開きます。子ウィンドウのパラメータを親ウィンドウに渡す必要がある場合は、子ウィンドウで window.opener を使用して親ウィンドウにアクセスできます。例: var parWin = window.opener.getElementById("Aqing) ").value = " Aqing";
13.フレームの問題
次のフレームを例に挙げます。
(1) フレーム オブジェクトにアクセスします:
IE: window.frameId または window.frameName を使用して、このフレーム オブジェクトにアクセスします。
Firefox: このフレーム オブジェクトにアクセスするには、window.frameName のみを使用できます。
さらに、IE と Firefox の両方で window.document.getElementById("frameId") を使用して、このフレーム オブジェクトにアクセスできます。
(2) フレームコンテンツの切り替え:
IE と Firefox の両方で、window.document.getElementById("testFrame").src = "xxx.html" または window.frameName.location = "xxx.html" を使用してフレームのコンテンツを切り替えることができます。
フレーム内のパラメータを親ウィンドウに戻す必要がある場合は、 frme のparentを使用して親ウィンドウにアクセスできます。例:parent.document.form1.filename.value="Aqing";
14.body の問題
Firefox の body タグがブラウザによって完全に読み取られません。
は、入力される前に存在します。一方、IE の本体は、ブラウザーによって body タグが完全に読み取られた後に存在する必要があります。 例:
Firefox: