2017-10-07 56 views
0

從我讀,一個SVG中的JavaScript必須裝在一個[CDATA [標籤(類型名稱顯然是現在可選):JavaScript可以在[CDATA [tag?

<script type="application/javascript"> 
<![CDATA[ 

(JavaScipt stuff here) 

]]> 
</script> 

但是,下面的標記/代碼工作沒有這個標籤,即使它看起來像正在使用的JavaScript方法:

<svg width="400px" height="400px" viewBox="0 0 400 400"> 
<rect id="rect1" x="160" y="10" width="60" height="60" fill="blue" 
onmouseenter="evt.target.setAttribute('fill', 'red');" 
onmouseout="evt.target.setAttribute('x', '0');" 
/> 
</svg> 

那麼,是evt.target.setattribute命令所有SVG?我知道這是一個超級新手問題......但我很難確定SVG的結束位置和JavaScript的開始位置。文檔描述非常粗略,我想了解在學習其他語言之前我可以在SVG中做什麼的總體範圍。非常感謝您的澄清。如果有人知道這個主題非常明確的參考,我很想知道。

回答

1

CDATA節是XML文檔的一個功能。它不是html的一部分。您似乎在html中使用SVG,因爲您的SVG示例沒有命名空間,所以CDATA在這裏既不需要也不用。

在獨立的SVG中,您需要定義名稱空間,即xmlns =「http://www.w3.org/2000/svg」,並且您需要CDATA來防止javascript中的各種字符,例如<被解釋爲標籤的開始。其他角色也有問題。

+0

感謝您花時間回答。這可能是我的無知,但我不明白答案與我的問題有關。至少在Chrome中,代碼的運行方式與我在這裏發佈的完全相同,因爲根本沒有html標記,因此沒有涉及html(?)。我的問題依然存在:SVG的evt.target.setAttribute代碼部分是什麼?或者,它是否正在運行,儘管不在我發佈頂部的標籤結構中運行的JavaScript函數?或者它還不是那麼清楚? – darrellart

+0

這是關於你正在使用的MIME類型。如果頁面是text/html,那麼它是否是html,是否有任何html標記。 setAttribute是DOM的一部分,它既不是html也不是SVG,但兩者都是通用的。 –