【发布时间】:2013-04-13 03:08:19
【问题描述】:
我正在尝试基于 XML 将图像加载到屏幕上。这是我正在使用的xml
<item>
<heading>Heading 1</heading>
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fringilla tempus varius. Nulla facilisi. In nisi leo, commodo id vestibulum non, mollis quis justo. Nunc elementum feugiat gravida. Praesent condimentum nisi id sapien placerat sed posuere velit fringilla. Curabitur ac purus odio. </content>
<image>image.jpg</image>
</item>
<item>
<heading>Heading 2</heading>
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fringilla tempus varius. Nulla facilisi. In nisi leo, commodo id vestibulum non, mollis quis justo. Nunc elementum feugiat gravida. Praesent condimentum nisi id sapien placerat sed posuere velit fringilla. Curabitur ac purus odio. </content>
<image>image.jpg</image>
</item>
我正在像这样使用 jQuery 检索元素。
$.get('feed1.xml', function(xml) {
$(xml).find('item').each(function() {
content+= "\<li class=\"paginate\"\>";
content+= '\<img src=\"' + $(this).find('image').text() + '\"\/\>';
content+= "\<h3\>" + $(this).find('heading').text() + "\<\/h3\>" ;
content+= "\<p\>" + $(this).find('content').text() + "\<\/p\>";
content+="\<\/li\>";
});
这在 Firefox 中运行良好。然而,在 Chrome 和 IE 中,“标题”和“内容”按预期加载,但图像部分返回一个空字符串。我调试了一下,发现如果我只是将元素名称“图像”更改为其他名称,那么相同的代码在 Chrome 中也可以工作。然后我做了一点console.log 来了解后台发生了什么。
$(xml).find('item').children().each(function(){
console.log((this).nodeName);
});
返回,
HEADING
CONTENT
IMG
在 chrome 中,FF 保留元素名称。
我也试过把源代码改成这个 内容+= '\';
但这也不起作用。
知道为什么 Chrome 将元素名称“image”更改为“img”吗?另外,为什么当它存在于 DOM 中时,它无法定位对象“img”?
【问题讨论】:
-
image 不是有效的标签名称,img 是。看起来你的 xml 被解析为 html。
-
我没有看到任何特定的 XML 规则取消了 w3 规范中的
标记的资格。即使我们假设这是正确的一分钟,当我使用 find('img') 时图像应该已经加载。
标签: jquery xml image google-chrome