5

私はこの非常に古い Web アプリケーションを最新のブラウザーで動作するように最新化する作業を行っていますが、IE 10 で問題が発生しました。最終的に、XML ドキュメントを文字列に変換する必要があるところまで来ました。

function xmlToString(xmlElement)
{
     if (document.evaluate)
     {
          var serializer = new XMLSerializer()
          var strXml = serializer.serializeToString(xmlElement)
     }
     else
          var strXml = xmlElement.xml
}

最初の if ブロックは Firefox と Chrome 用です。それはうまくいきます。else の後の行は Internet Explorer 用です。8 と 9 では正常に動作しますが、10 では動作しません (3 つすべてで動作する必要があります)。私が収集したものから、これは IE 10 が xml を処理する以前の Microsoft の方法から標準に近いものに移行したためです。しかし、IE 10 の .xml プロパティに代わるものはまだ見つかりませんか?

IE 10 で XML ドキュメントを文字列に変換する方法を知っている人はいますか?

ありがとう。

編集:ここでの問題の実際の原因は、IE 10 で xmlElement.xml の値が定義されていないことです。さらに、xml ドキュメントを文字列に変換していませんでした。そのプロパティは、既に xml ドキュメントの文字列表現でした。ただし、IE 10 でこれを行う方法を理解する必要があります。

編集2:だから私は答えを見つけましたが、どうやら私は実際に自分の質問に数時間答えることを許可されていないので、今のところここにコピーしてください:

AAAそしてもちろん、これを投稿してから約 5 分後に、Google に尋ねる適切な質問を最終的に見つけました... -_-

とにかく、IE 9 以降では XMLSerializer がサポートされていることが判明したため、必要なブラウザーを疎外することなくその機能を検出する方法を見つけることが問題でした。このページは、すべてを機能させる JavaScript 機能を検出する素晴らしい方法を示してくれました。

最終的なコードは次のとおりです。IE 8 と 10、および最新の Chrome と Firefox で動作します。

function xmlToString(xmlElement)
{
    if (typeof XMLSerializer == 'function')
    {
        var serializer = new XMLSerializer()
        var strXml = serializer.serializeToString(xmlElement)
    }
    else
        var strXml = xmlElement.xml
}

これが IE 8 で機能するには、最後の行がまだ存在している必要があります。

4

2 に答える 2