开发者

Problem separating js out from an svg file

I have an svg file which is almost entirely made up of a script. I'd like to separate the script out, so that I can run it through a compressor, but I can't find a way to do this. Any help gratefully appreciated.

The svg file look like this:

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

What I've done is extracted out "lots of code" as lotsOfCode.js, and changed the svg file to:

<?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)"开发者_JAVA百科 >

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

However, this doesn't work. The browser complains that it can't find the onload 'init' function. Any ideas? Do I have to do something to tell the browser that 'init' is in 'lotsOfCode.js'?

Thanks -

Al


Try using xlink:href instead of src:

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

Edit: You'll also need to reference the xlink namespace:

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


In addition to Gillys answer, have you tried moving the script include to go before the svg line?

Like this:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜