E4X浏览器支持

问题描述 投票:11回答:4

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

javascript e4x
4个回答
10
投票

哪些浏览器支持E4X

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

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

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

[确定,它比DOM更容易使用,但是代价是您无法使用XML的所有功能,而彻底愚蠢的,不必要的XML文字/模板语法是security disaster,因此即使是完全静态的htaccess保护文档的作者,也必须担心使用该功能。

作为访问XMLHttpRequest结果的一种更简单的方法,JSON完全胜出。对于完整的XML处理,您仍然需要DOM。为了简化文档的处理,可以使用选择器,XPath和JS库来执行此操作,而不必引入奇怪的新语言语法。

对于E4X而言,这没有多大利基。 TBH我希望它会死。 (ETA:现在已经完成了。)


4
投票

版本16中的Firefox dropped E4X support

E4X已过时。在Firefox 16中,默认情况下将禁用此功能,而在Firefox 17中,默认情况下将禁用chrome,在Firefox 18中将其删除。请改用DOMParser / DOMSerializer或非本机JXON算法。


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()

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>");
© www.soinside.com 2019 - 2024. All rights reserved.