我在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?
有趣的问题.
有些事情需要注意.
在普通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版本现在也已得到纠正.
| 归档时间: |
|
| 查看次数: |
1474 次 |
| 最近记录: |