2012-09-06 85 views
0

我試圖在SVG標籤內嵌入腳本標籤,但SVG在Safari中顯示爲空白。嵌套在SVG標籤中的腳本標籤直接嵌入在HTML中導致SVG顯示空白

以下小提琴適用於FF 15.0,Chrome 21.0和IE9,但不適用於Windows上的Safari 5。

http://jsfiddle.net/5rnbU/4/

<svg height="320" width="320" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"> 
    <script > 
    setTimeout("run()",1000); 

    function run(){ 
     var e = document.getElementById("rect"); 
     console.log(e); 
     setTimeout("run()",1000); 
    } 
    </script> 
    <rect id="rect" ry="6" rx="6" fill="silver" height="320" width="320" y="0" x="0"/> 
</svg> 

的SVG被直接嵌入到HTML。如果腳本標記被刪除,這將起作用,如果您檢查SVG,您將看到腳本標記包含以下SVG元素。爲什麼?什麼是一些解決方法?

+1

也許safari需要type =「text/javascript」作爲腳本元素的屬性。 –

+0

我試過了。它仍然顯示空白。 –

+0

是否可以在SVG命名空間中查找'script'並且沒有找到它,這要感謝'svg'標籤中出現的'xmlns'?不知道SVG名稱空間中是否存在'script'。無論如何,如果你將腳本移動到'svg'元素之外,它是否工作? –

回答

0

JSFiddle需要你在javascript面板中編寫javascript代碼。您在HTML面板中編寫JavaScript代碼,JSFiddle無法正確運行。

正確的方法是:在HTML面板

http://jsfiddle.net/5rnbU/7/

寫HTML:

<svg height="320" width="320" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"> 
    <rect id="rect" ry="6" rx="6" fill="silver" height="320" width="320" y="0" x="0"/> 
</svg> 

JavaScript編寫的JavaScript面板:

setTimeout("run()",1000); 

function run(){ 
    var e = document.getElementById("rect"); 
    console.log(e); 
    setTimeout("run()",1000); 
} 

不要寫他們都在html面板中。

+0

我正在尋找嵌套到SVG本身的腳本。 Safari很可能不喜歡劇本在那裏,我必須忍受它。 –