带有脚本元素的HTML中的SVG

arv*_*kri 6 html svg

我在HTML页面中有一个内联SVG代码,

<body>
<div style="width:1000px;height:1000px">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" id="svgcanvas" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="viewport">
<circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red"/>
<script xlink:href="js/SVGPan.js" type="text/javascript"/>
</svg>
Run Code Online (Sandbox Code Playgroud)

该脚本在Firefox 7.0中正确调用,但在Chrome 16.0中未调用.为什么会这样?我应该在代码中进行哪些修改来调用Chrome中的javascript?

Alo*_*hci 8

有趣的问题.

有些事情需要注意.

在普通HTML中,<script ... />不会自动关闭,后面的任何内容都将成为脚本元素内容的一部分.

<svg>元素内部,<script ... />自闭合并形成整个元素.

Firefox和Chrome都能做到这一点.

但是,HTML5规范说只应在解析器遇到结束标记时处理脚本.由于该元素没有结束标记,因此不应处理该脚本.这就是Chrome所做的.

但是,SVG规范要求在元素通过任何方式关闭后运行脚本,而不仅仅是在结束标记上.这就是Firefox的功能.

恕我直言,HTML5规范是错误的,应该指定与SVG一致的行为.

更新:2012年8月10日.

HTML5规范(目前仅限WHATWG版本)已更改,因此应运行SVG脚本.请参阅https://www.w3.org/Bugs/Public/show_bug.cgi?id=17995

更新:2012年9月16日.

HTML5规范的W3C版本现在也已得到纠正.


Emi*_*röm 5

尝试<script></script>代替<script/>,之前我遇到过这个问题.