ホームページ  >  記事  >  ウェブフロントエンド  >  Jquery は IE7_jquery では $.ajax ソリューションを使用できません

Jquery は IE7_jquery では $.ajax ソリューションを使用できません

WBOY
WBOYオリジナル
2016-05-16 18:42:081419ブラウズ

ソースコードを見ると、

コードをコピーします コードは次のとおりです。

// リクエスト オブジェクトを作成します。Microsoft は、IE7 で XMLHttpRequest を適切に実装できませんでした。そのため、利用可能な場合は ActiveXObject を使用します。
// この関数は、jQuery.ajaxSetup
xhr を呼び出すことでオーバーライドできます。 :function(){
return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();


以下は、このバージョンのステートメントです。 jquery ソース コード


/*
* jQuery JavaScript ライブラリ v1.3.2
* http:// /jquery.com/
*
* Copyright (c) 2009 John Resig
* MIT ライセンスと GPL ライセンスに基づくデュアル ライセンス
* http://docs.jquery.com/License
*
* 日付: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
* リビジョン: 6246
*/


「window.ActiveXObject」を HTML で出力した結果から、IE6、IE7、IE8 はすべて true を返すことがわかります。
テストされた HTML ソース コードは次のとおりです。同じディレクトリにあるindex.jspという名前のページ。内容は関係ありません。)




ここにタイトルを挿入





ソースコードが変更されていない場合、「成功」 IE6 ではプロンプトが表示されますが、IE7 ではプロンプトは表示されず、エラー プロンプトも表示されません。
ケース 2:
window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); ソース コード内の
window.ActiveXObject() ): new XMLHttpRequest();
IE7 では「成功」プロンプトが表示されますが、IE6 では js エラーが表示されます。詳細はおそらく「XMLHttpRequest オブジェクトが定義されていません」です。
どちらの場合も、FireFox は正常にプロンプ​​トを表示できます。 「成功」、バージョンはFireFox3.5.3、他のブラウザは分かりません。
IE7 は ajax オブジェクトを初期化するために new XMLHttpRequest() を使用する必要があり、IE6 は new ActiveXObject("Microsoft.XMLHTTP") を使用することがわかります。ただし、jQuery ソース コードは IE7 の初期化メソッドと互換性がありません、および公式 Web サイトの互換性に関するメモは IE6 です。
私の理解が間違っていたのか、それとも何か別のことがあったのでしょうか? jQuery は使いやすいですが、顧客に IE7 の代わりに IE6 を使用するように要求することはできません。
最後の一文:
プロトタイプ 1.6.1 の最新バージョンにも同じ問題があります。IE7 では Ajax.Request は効果がありません。ソース コードの 1130 行付近を変更する必要があります。




コードをコピーします


コードは次のとおりです:


var Ajax = {
getTransport: function() {
変更を加えます。コメント部分は追加する必要がある変更です。
これにより、IE7 でこの ajax リクエスト メソッドを使用できるようになります。
しかし、ざっと見てみると、ここでの ajax 初期化は、最初に new XMLHttpRequest() を使用して作成されています。つまり、
変更しなければ、IE7 で実行できるはずです。
注: 最後の 1 文の IE7 互換性メソッドがインターネット上で見つかりました。
上記は今日私が調べた結果であり、IE6 と完全に互換性のある jQuery の目的は何でしょうか。 IE7 と IE8 はどのように実装すればよいでしょうか (FireFox などには影響しません)
結論は次のとおりです:
IE7 は ajax オブジェクトを初期化するために new XMLHttpRequest() を使用する必要があり、IE6 は new XMLHttpRequest() を使用することがわかります。 ActiveXObject("Microsoft.XMLHTTP")
では、プロトタイプではどのように説明するのでしょうか?
混乱しているので、アドバイスをいただければ幸いです。
XMLHttpRequest の作成メソッドについて再度検索し、最終的にソース コードを
return window.XMLHttpRequest? new XMLHttpRequest() : window.ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest に変更しました。 () ;
これでIE678もFFも動くようになりました。
ついに解決しました。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:Js_javascript スキルを使用してテーブル内の代替行の色を変更する例次の記事:Js_javascript スキルを使用してテーブル内の代替行の色を変更する例

関連記事

続きを見る