0

IE8で正常に連携する3つのファイル(htm、xml、js)がありますが、IE10ではjavascriptがxml要素を取得できません。

getxml.htm

<html>
    <head><title>getxml.htm</title></head>

    <xml id="myxml" src="myxml.xml"></xml>
    <script src="getxml.js" language="javascript" type="text/javascript"></script>
</html>

myxml.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<publish>
</publish>

getxml.js

get_xml_content();
function get_xml_content() {
    alert("get_xml_content");
    alert(myxml);       // ie8: [object], ie10: [object HTMLUnknownElement]
    var xmle=myxml.getElementsByTagName("publish").item(0);  
    alert(xmle);        // ie8: [object], ie10: null
}

IE8およびIE10からのアラートメッセージは、上記のコメントとしてgetxml.jsに書き込まれます。

助けてくれてありがとう!

4

1 に答える 1

2

IEBlog のブログ投稿によると、IE10 は標準モードで実行されている場合、XML データ アイランドをサポートしていません。これにより、IE10 は他のブラウザーが HTML を解析する方法に準拠するようになります。

これを IE10 で機能させるには、ページをレガシー モードで読み込む必要があります。X-UA-Compatibleメタタグを含めることでそれを行うことができます:

<meta http-equiv="X-UA-Compatible" content="IE=9" />

よりクロスブラウザなアプローチは、<iframe>代わりに XML をリンクすることです:

<iframe id="myxml" src="myxml.xml" />

もちろん、少しの CSS で非表示にする必要があります。

iframe { display: none; }

contentDocumentドキュメントを解析するための参照:

var myxml = document.getElementById("myxml").contentDocument;
var xmle=myxml.getElementsByTagName("publish").item(0);  
alert(xmle);
于 2012-12-14T01:38:41.863 に答える