将js从svg文件中分离出来的问题

时间:2011-07-05 21:03:58

标签: javascript html svg

我有一个svg文件,几乎完全由脚本组成。我想将脚本分开,以便我可以通过压缩器运行它,但我找不到这样做的方法。感谢任何帮助。

svg文件如下所示:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<svg id="chart"
     xmlns="http://www.w3.org/2000/svg"
     onload="init(evt)" >

<script type="application/ecmascript">
<![CDATA[
...lots of code
//]]>
</script>
</svg>

我所做的是将许多代码作为lotsOfCode.js提取出来,并将svg文件更改为:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<svg id="chart"
     xmlns="http://www.w3.org/2000/svg"
     onload="init(evt)" >

<script type="application/ecmascript" src="lotsOfCode.js">
</script>
</svg>

然而,这不起作用。浏览器抱怨它无法找到onload'init'函数。有任何想法吗?我是否必须做一些事情告诉浏览器'init'在'lotsOfCode.js'中?

谢谢 -

的Al

3 个答案:

答案 0 :(得分:3)

尝试使用xlink:href代替src

<script type="text/ecmascript" xlink:href="lotsOfCode.js"></script>

修改:您还需要引用xlink命名空间:

<svg id="chart"
     xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     onload="init(evt)" >

答案 1 :(得分:0)

除了Gillys的回答,您是否尝试过将脚本包含在svg行之前?

像这样:

<script type="application/ecmascript" src="lotsOfCode.js">
</script>
<svg id="chart"
     xmlns="http://www.w3.org/2000/svg"
     onload="init(evt)" >
</svg>

答案 2 :(得分:0)

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 
<svg id="chart"
     xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     onload="init(evt)" >
<script type="text/ecmascript" xlink:href="lotsOfCode.js"></script>
   <circle id='BlueCircle' cx='25' cy='25' r='20' style='fill:blue; '/>
</svg>