E4X浏览器支持

时间:2010-02-13 08:53:19

标签: javascript e4x

我正试图解决这个问题,但没有太多信息。哪些浏览器支持E4X,为什么它不被广泛采用?

4 个答案:

答案 0 :(得分:10)

  

哪些浏览器支持E4X

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

  

为什么不被广泛采用?

因为它提供的实用功能很少,但现有标准(如DOM)尚未涵盖。

好吧,它比DOM更简单,但是因为你不能访问XML的所有功能,而且完全愚蠢的,不必要的XML文字/模板语法是security disaster,因此,即使完全静态的受htaccess保护的文档的作者也不得不担心使用该功能。

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

这并没有为E4X留下太多利基。 TBH我希望它会死。 (ETA:它现在已经完成了。)

答案 1 :(得分:3)

根据w3schools,“Firefox目前是唯一一款对E4X提供相对较好支持的浏览器。”

您可以尝试使用XPath。虽然XPath不是跨浏览器,但它有几个Javascript解决方案,如this jQuery plugin

修改

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

$('<xml><some><code>code</code><tag>text</tag></xml></xml>').find('some > code').text()

答案 2 :(得分:3)

版本16中的Firefox dropped E4X support

  

不推荐使用E4X。对于Firefox 16中的内容,默认情况下禁用它,默认情况下禁用Firefox 17中的chrome,并在Firefox 18中删除。使用DOMParser / DOMSerializer或非原生JXON算法。

答案 3 :(得分: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>");