Javascript和`<></>;`标签
因此,我最近发现我可以在Firefox的javascript中使用Javascript和`<></>;`标签,javascript,cdata,Javascript,Cdata,因此,我最近发现我可以在Firefox的javascript中使用…标记,这在定义HTML或CSS块时非常方便 GM_addStyle(<><![CDATA[ .page { display: block } /* ... */ td { vertical-align: top } ]]></>); //... div.innerHTML = <><![CDATA[ <table class="section">
…
标记,这在定义HTML或CSS块时非常方便
GM_addStyle(<><![CDATA[
.page { display: block }
/* ... */
td { vertical-align: top }
]]></>);
//...
div.innerHTML = <><![CDATA[
<table class="section">
<!-- ... -->
</table>
]]></>;
GM_addStyle();
//...
div.innerHTML=
]]>;
但我不确定到底发生了什么,我喜欢理解我使用的语法。…
返回的是什么?我注意到,当我将内容包含在
中时,转义效果更好,那么那里发生了什么?这是只使用Firefox还是跨浏览器
我试图在网上查找,但遇到了正常的谷歌/符号问题。另外,的大多数结果似乎都不相关。我认为空标记只是一种编写根元素的方法,这样您就可以在其中包装一团XML了。它说的是“将这个根元素的子元素解释为XML”,而在您的例子中,单个子元素说的是“将这个子元素解释为CDATA块。”没有理由只对一个子元素使用XMLList文本(
…
),因为它是作为单个XML项处理的。为什么不直接使用
?另外,
只返回一个XML文本节点(.nodeKind()==“text”
)
这都是的一部分,由ActionScript3和两个JavaScript引擎实现。正如Elijah所说,E4X语法除了Mozilla之外在任何地方都不起作用。您似乎没有使用它来处理XML,只是依赖于
XML
对象的隐式toString
方法与原始标记相同。ECMA-357(E4X规范)没有为XML指定确切的解析和序列化规则,因此它不能保证为您删除标记。即使仅仅在Firefox上,我也不相信这一点
在任何情况下,它都不能真正解决在脚本中使用转义内容的问题。。。特别是+1,这是个好问题。不要幻想在这里实现跨浏览器兼容性:-)这对Firefox扩展很好。@Andy E-它看起来像是在javascript 1.6标准中,所以它应该适用于任何支持它的东西。它被称为ECMAScript for XML。我也很惊讶地看到这一点,尽管我已经读过很多次了。下面是关于这个()的wikipedia信息(ECMAScript for XML)是JavaScript的扩展。Gecko在其自己的JavaScript1.6引擎中实现了这一点,但这并不意味着其他人已经实现了,或者永远不会实现?这似乎很奇怪。当我第一次看到它的时候,我也很惊讶。但这就是它在Flex/Actionscript中的工作原理,我不认为这完全是巧合。警告:我说“我相信”是因为我不能肯定地说出来。看起来你是对的:@rampion:太好了,所以你使用了Firefox支持的功能。。。其他浏览器呢,比如IE、Chrome/Safari和Opera?我认为有些浏览器还没有流行起来,除非它使用Gecko Javascript引擎SpiderMonkey()Hmmm。。。只是
是FF3.6中的语法错误(只是将其插入错误控制台)。我不确定它在Greasemonkey脚本中会如何计算,但是mozilla文档()说您需要设置一个特殊属性,以防止在普通标记中被特殊处理。这是因为您在错误控制台中计算的是JavaScript 1.5,而不是1.6。CDATA问题不会出现在greasemonkey脚本中,因为它不是内联HTML脚本。添加;e4x=1
到脚本的类型的末尾。或者更好地使用这个shell,它允许您使用E4X: