質問

AJAXリクエストを頻繁に使用するWebを実行しています XMLサービス。実際、私のウェブはほとんどのフロントエンドです サーバーは一切なく、AJAXを使用して通信します バックエンド。

すべてがうまくいった(Ubuntu 9.04で開発およびテストした) およびブラウザとしてのFirefox 3.0)。 ある日、IE8でWebがどのように動作するかを確認することにしました... 恐怖!

Firefoxで見事に機能したように、何も機能していませんでした。 具体的には、Request.HTMLが機能していませんでした。 私が言ったように、私のウェブはそれに大きく依存していたので、何も機能しませんでした。

何かを実行しようとして1日過ごしましたが、運がありませんでした。 私が着いた唯一の結論は、XMLが 誤って解析された (私は間違っていると思います)。コードを見てみましょう:

var req = new Request.HTML({
        url: 'service/Catalog.groovy',

        onSuccess: function(responseTree, responseElements) {

            var catz = responseElements.filter('category');
            catz.each(function(cat){
                // cat = $(cat);
                var cat_id = cat.get('id');
                var subcategory = cat.getElement('subcategory');
                alert(cat_id);
                alert(cat.get('html'));
                alert(subcategory.get('html'));
           }
       },
       onFailure: function(){...}

});

たとえば、そのコード。 Firefoxでは、完全に機能しました。 ID(たとえば、7)を警告し、 次に、カテゴリ要素の内容が表示されました。例:

<subcategory id='1'>
      <category_id>7</category_id>
      <code>ACTIO</code>
      <name>Action</name>
</subcategory>

そして、この場合、いくつかの内部要素の内容を示しました:

<category_id>7</category_id>
<code>ACTIO</code>
<name>Action</name>

IE8では、最初のアラートは正常に機能しました(アラート7) しかし、次のアラート(alert(cat.get( 'html'));)は空の文字列を与えました そして最後は例外を投げました...それはサブカテゴリについて何かを言いました nullになる。

これですべて結論付けたのは、解析される要素 正しく Firefoxでは、IE8ではタグと属性のみがOKでした。 ほかのすべて 完全に間違っていました(実際、欠落しています)。つまり、の内部コンテンツ 全ての 応答の要素が消えた!

使用できるその他の事実:このコード:

alert(cat.get('tag')); resulted in
      Firefox: category
      IE8: /category <-----------(?)

うーん、他に... そうそう...上記のコメント行( cat = $(cat); )は 何か これを修正しようとしました。 IEが必要としたmootools Docsを読む 明示的に呼び出す すべてのElement-magicを取得するための要素の $ 関数... 何も修正しませんでした。

私はとても必死でした... mootools.js コードをいじりました

OK、だから... mootool-proの皆さん、この問題を解決するのを手伝うことを望んでいます。 なぜなら、私は本当にIE8で機能するウェブが必要だからです。実際、私は 互換性の問題を忘れるmootools ...

ps:不明な点がある場合は、お問い合わせください!助けていただければ幸いです:D

役に立ちましたか?

解決

jQueryを使用する前に、このような同様の問題がありました。問題は、IEでは、着信応答データを Microsoft.XMLDOM ActiveXオブジェクトで処理する必要があることでした。

一般的な手順は次のとおりです。

  1. ActiveXオブジェクトをインスタンス化します。

    var oXmlDoc = new ActiveXObject(&quot; Microsoft.XMLDOM&quot;);

  2. 着信応答データを渡し、ロードします。

    oXmlDoc.loadXML(sXmlResponseData);

  3. 必要に応じて解析します。

完全な解像度を確認できますここ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top