7

私は次のアプリを書いています:

  1. 経由でサーバーにデータを送信することに絶対に依存していますJavascript
  2. JQueryライブラリをコードに含めてはなりません。

(私のコードが、既に jquery lib を持っている Web ページに含まれるかどうかはわかりません。正しいバージョンがあるかどうかもわかりませんJQuery。競合が発生するかどうかもわかりません...)

JSネイティブ機能メソッドを中継する必要がありXMLHttpRequest(ActiveX for older IE's)ます。これは単純ですが、警告を見たよりも:

「jQuery がなければ、AJAX コーディングは少しトリッキーになる可能性があります!

通常の AJAX コードの記述は、ブラウザーごとに AJAX 実装の構文が異なるため、少し注意が必要です。これは、さまざまなブラウザーをテストするために追加のコードを作成する必要があることを意味します。しかし、jQuery チームがこれを処理してくれたので、たった 1 行のコードで AJAX 機能を記述できるようになりました。」

それについて「トリッキー」とは何ですか?私は何が間違っている可能性がありますか? 私の知る限りでは

var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp = new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }

は、さまざまなブラウザ用の追加コードにすぎず、 xmlhttp var は、今後IE5IE6でジョブを実行する準備ができているはずです。IE7+FirefoxChromeOperaSafari

XMLHttpRequest上記のクロスブラウザ コード調整だけで十分ですか、それともネイティブオブジェクトを使用する際に注意すべきことはありますか?

4

2 に答える 2

8

本当に古い IE (別の ActiveXObject を使用しているようです) をサポートする必要がない限り、クロスブラウザーのサポートに必要なのはこれだけです。

ただし、jQuery などを使用すると、さらに多くの利点が得られます。

  • 単一の関数呼び出し、不要な変数がスコープを乱雑にすることはありません。
  • GET/POST 引数へのオブジェクトの自動シリアル化。単純にオブジェクトを渡すことができるのに、なぜ手動で行うのですか (値を適切にエンコードする必要があります!)。
  • 応答の自動解析。たとえば、JSON の場合、手動で解析する必要がある文字列だけでなく、オブジェクトを取得します。
  • 一般的なイベント (成功/失敗/終了) の適切なコールバック
  • IE の CORS の XDomainRequest などをサポートするプラグ可能なアーキテクチャ。

アプリが競合する可能性のある別のサイトに埋め込まれているため、jQuery を使用できないと述べているため、jQuery を含めてから、古い変数と変数$.noConflict(true)の両方を復元することで、これを回避できます。コードで使用するには、次のように記述します。$jQuery

(function($) {

})(jQuery.noConflict(true));
于 2012-11-13T09:44:01.893 に答える
0

XMLHttpRequest オブジェクトは、W3C 標準として次のように定義されています。

http://www.w3.org/TR/XMLHttpRequest2/

したがって、API 自体はブラウザ間で一貫している必要があります。

あなたが言及したように、唯一の変更点は、XMLHttpRequest オブジェクトを取得する方法です。ここを参照してください:

http://www.quirksmode.org/js/xmlhttp.html

クロスブラウザーで、jQuery 以外の方法でそれを行う場合 (オブジェクトの取得は彼のXMLHttpFactories配列で行われます。

于 2012-11-13T09:44:27.540 に答える