11

我试图弄清楚这一点,但没有太多信息。哪些浏览器支持 E4X,为什么它没有被更广泛地采用?

4

4 回答 4

10

哪些浏览器支持 E4X

Firefox 和其他基于 Mozilla 代码库的。

为什么它没有被更广泛地采用?

因为它提供了一些现有标准(如 DOM)尚未涵盖的实用功能。

好吧,它比 DOM 使用起来更简单,但代价是你无法访问 XML 的所有功能,而且完全愚蠢、不必要的 XML 文字/模板语法是一场安全灾难,因此它的作者甚至完全静态的受 htaccess 保护的文档必须担心解决该功能。

作为访问 XMLHttpRequest 结果的更简单方法,JSON 完全胜出。对于完整的 XML 处理,您仍然需要 DOM。为了更轻松地处理文档,有选择器、XPath 和 JS 库可以做到这一点,而无需引入奇怪的新语言语法。

这并没有为 E4X 留下太多的利基市场。TBH 我希望它会死。(ETA:它现在几乎已经这样做了。)

于 2010-02-13T09:21:04.620 回答
4

Firefox在版本 16 中放弃了 E4X 支持:

E4X 已弃用。Firefox 16 中的内容默认禁用,Firefox 17 中的 chrome 默认禁用,Firefox 18 中将其删除。请改用 DOMParser/DOMSerializer 或非本机 JXON 算法。

于 2012-10-23T15:09:01.357 回答
3

w3schools称,“Firefox 是目前唯一对 E4X 支持相对较好的浏览器。”

您可以改用XPath。尽管 XPath 不是跨浏览器,但有几个 Javascript 解决方案,例如这个 jQuery 插件

编辑

您实际上可以在没有插件的情况下使用 jQuery:

$('<xml><some><code>code</code><tag>text</tag></xml></xml>').find('some > code').text()
于 2010-02-13T09:06:59.310 回答
0

我开发了一个 babel 插件,通过 babel 编译为所有浏览器添加了 E4X 基本支持。

https://www.npmjs.com/package/babel-plugin-transform-simple-e4x

您还可以使用 npm simple4x 库将 xml 字符串解析为类似 XML 的对象。

https://www.npmjs.com/package/simple4x

该插件转译以下 E4X:

var fooId = 'foo-id';
var barText = 'bar text';
var xml =
    <xml>
        <foo id={fooId}>
          {barText}
        </foo>
    </xml>;

到以下 JavaScript:

var XML = new require("simple4x");

var fooId = 'foo-id';
var barText = 'bar text';
var xml = new XML("<xml><foo id=\"" + fooId + "\">" + barText + "</foo></xml>");
于 2020-01-01T09:05:15.330 回答