JavaScript函数可以在[CDATA [tag?]之外运行吗?

时间:2017-10-07 17:03:23

标签: javascript svg

根据我的阅读,SVG中的JavaScript必须放入[CDATA [标签(类型名称显然是可选的):

<script type="application/javascript"> 
<![CDATA[

 (JavaScipt stuff here)

]]> 
</script>

但是,以下标记/代码在没有该标记的情况下工作,即使它看起来像是使用了JavaScript方法:

<svg width="400px" height="400px" viewBox="0 0 400 400">
<rect id="rect1" x="160" y="10" width="60" height="60"  fill="blue"
onmouseenter="evt.target.setAttribute('fill', 'red');"
onmouseout="evt.target.setAttribute('x', '0');"
/>
</svg>

那么,evt.target.setattribute命令所有SVG吗?我知道这是一个超级新手问题...但我很难确定SVG结束的地方和JavaScript的开始。文档在描述上非常粗略,我想在学习另一种语言之前了解我在SVG中可以做的事情的总体程度。非常感谢任何澄清。如果有人知道关于这个主题的参考非常明确,我很想知道。

1 个答案:

答案 0 :(得分:1)

CDATA部分是XML文档的一项功能。它不是HTML的一部分。您似乎在html中使用SVG,因为您的SVG示例没有名称空间,因此CDATA既不是必需的也不是有用的。

在独立SVG中,您需要定义名称空间,即xmlns =“http://www.w3.org/2000/svg”,并且您需要CDATA来防止javascript中的各种字符,例如&LT;被解释为标签的开头。其他角色也有问题。