Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript和`<></>;`标签_Javascript_Cdata - Fatal编程技术网

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">

因此,我最近发现我可以在Firefox的javascript中使用
标记,这在定义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: