【问题标题】:Safari strips tags from XML parsed with jQuerySafari 从用 jQuery 解析的 XML 中去除标签
【发布时间】:2011-02-22 20:52:26
【问题描述】:

Safari 总是表现出一些奇怪的行为,最好用一个代码示例(在 JavaScript 中)来演示:

var xml = "<whatever><status>success</status><title>interface update</title><details>just an example</details></whatever>"
var $jquery_xml = jQuery(xml);
var $jquery_xml.html();

最后一行应该返回:

<status>success</status><title>interface update</title><details>just an example</details>

但是,它实际上返回

<status>success</status><details>just an example</details>

标签已被删除!关于为什么以及如何在仍然使用 jQuery 的同时解决这个问题的任何想法?

【问题讨论】:

  • 可能是因为&lt;title&gt; 是一个特殊的标签,它在头部的使用只是一种预感:)
  • 嗨,我和 Val 的意见相同。它在 IE8 上也失败,但在 Firefox 上有效。如果您将标签更改为&lt;titles&gt;..&lt;/titles&gt;,它适用于所有这些浏览器,包括 Safari。
  • 我也认为是这样。但这有点令人担忧,因为很多 XML 文档都有 标签,以及出现在 HTML 中的其他标签。我不确定这是否只是删除它们的原因——它是有效的 XML,对吗?也许我应该考虑在 Safari 上使用 jQuery 以外的东西进行解析?
  • 有效的 XML 但无效的 HTML。当要求 jQuery 将 XML 转换为 HTML 时,您对 jQuery 有什么期望?

标签: javascript jquery xml parsing safari


【解决方案1】:

jQuery 有一个built in XML parser,它可能会更好地为您服务。

var xml = "<whatever><status>success</status><title>interface update</title><details>just an example</details></whatever>";
var $jquery_xm = jQuery.parseXML(xml);

【讨论】:

  • parseXML 自 jQuery 1.5 起才存在,但这是要走的路。注意:您从parseXML 返回的对象是一个 XML Document 对象,您需要将其传递给$() 以将其转换为您可以查询和遍历的 jQuery 对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
  • 1970-01-01
  • 2012-10-01
  • 2016-04-24
  • 1970-01-01
  • 1970-01-01
  • 2017-06-15
相关资源
最近更新 更多