このことを考慮:
<!DOCTYPE HTML>
<html><head><title>XML-problem</title>
<script src="jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$('<p/>').load("text.xml", function(responseText, textStatus, xhr) {
var xml = $(xhr.responseXML);
var x_txt = xml.find('atom\\:x').text();
$(this).text(x_txt).appendTo('#container');
});
});
</script>
</head><body><div id="container" /></body></html>
このスクリプトは、ドキュメントが読み込まれたときに text.xml を読み込む必要があります。text.xml は次のようになります。
<xml xmlns:atom="http://www.w3.org/2005/Atom">
<atom:x>Text</atom:x>
</xml>
このファイルがロードされると、ノードのテキスト コンテンツがatom:x
ドキュメントに追加されます。ブラウザ ウィンドウに「テキスト」が表示されます。
これは、Firefox では期待どおりに機能します。'atom\\:x'
ただし、クエリをから justに変更しない限り、Opera では機能しません'x'
。この場合、Opera では機能しますが、Firefox では機能しません。
クエリを に変更するという回避策を発見しましたが、'atom\\:x, x'
むしろこれを突き止めたいと思います。
ここで面白いひねりを加えます: XHR から取得する代わりに、xml を直接インライン化することができます。
var xml = $(xhr.responseXML);
の中へ
var xml = $('<xml xmlns:atom="http://www.w3.org/2005/Atom"><atom:x>Text</atom:x></xml>');
この場合、クエリを実行する'atom\\:x'
と、両方のブラウザで目的'x'
の結果が得られますが、両方のブラウザで結果が得られません。
これが Opera では異なる動作をするという事実から、前者の動作は Opera のバグであると結論付けられます。これは合理的な結論ですか?これがどのように機能するかを説明している標準については、どこを参照できますか?
結論は:
- この問題の代替回避策は何ですか? 私が見つけたものよりも良いものはありますか?
- これは Opera のバグですか? はいの場合、どの標準がそう言っていますか?
あなたが助けてくれることを願っています:)