Mag*_*off 5 javascript firefox jquery opera xmlhttprequest
考虑一下:
<!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>
Run Code Online (Sandbox Code Playgroud)
加载文档时,此脚本应加载text.xml.text.xml看起来像这样:
<xml xmlns:atom="http://www.w3.org/2005/Atom">
<atom:x>Text</atom:x>
</xml>
Run Code Online (Sandbox Code Playgroud)
加载此文件后,atom:x-node 的文本内容将附加到文档中.我可以在浏览器窗口中看到"文本".
这在Firefox中可以正常工作.但是,除非我将查询更改'atom\\:x'为just,否则它在Opera中不起作用'x'.在这种情况下,它适用于Opera,但不适用于Firefox.
我发现了一种解决方法,即将查询更改为'atom\\:x, x',但我更愿意深入了解这一点.
现在有趣的转折:我可以直接内联xml而不是通过更改从XHR获取它
var xml = $(xhr.responseXML);
Run Code Online (Sandbox Code Playgroud)
成
var xml = $('<xml xmlns:atom="http://www.w3.org/2005/Atom"><atom:x>Text</atom:x></xml>');
Run Code Online (Sandbox Code Playgroud)
在这种情况下,查询'atom\\:x'将在两个浏览器中提供所需的结果,并且在两个浏览器中都'x'不会产生任何结果.
事实上,这在Opera中的工作方式不同,这让我得出结论,前者的行为是Opera中的一个错误.这是一个合理的结论吗?我在哪里可以指出描述它应该如何工作的标准?
结论:
希望你能帮忙:)
我认为你应该说“atom:x”(不带反斜杠),并确保在主页面的 html 标签上有 xmlns:atom="http://www.w3.org/2005/Atom" 声明html 文件,或者以 javascript 已知的其他方式。
| 归档时间: |
|
| 查看次数: |
1734 次 |
| 最近记录: |