2011-07-05 49 views
0

我有一個幾乎完全由腳本組成的svg文件。我想把腳本分開,這樣我就可以通過壓縮器運行它,但是我找不到這樣做的方法。任何幫助感激地讚賞。將js從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'中?

謝謝 -

回答

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)" > 
+0

這將產生一個錯誤: 「命名空間前綴的XLink對腳本href是沒有定義」。 – EML

+0

@ user7 - 在您的''元素中添加對命名空間的引用。我已經更新了我的答案。 – gilly3

+0

優秀 - 做到了。謝謝。您將「應用程序」更改爲「文本」的任何特定原因? – EML

0

除了吉利斯的回答,你有沒有嘗試過移動腳本包括去之前的SVG線?

像這樣:

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

不幸的是,也不起作用。問題是,svg文檔現在包含兩個頂級元素:一個svg和一個腳本,瀏覽器會抱怨第二個標籤超出了文檔的末尾。 – EML

+0

這不是有效的XML,但如果svg內嵌在html文檔中,那麼它可能會起作用。 –

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> 
+0

重要提示: 引入順序,後: ........... .......... SVG對象 ......... .. 正在關閉 保存擴展名爲*的文件。 SVG – ingcapp

相關問題