6
我有一個SVG文檔,我希望能夠在其中包含腳本(使用<script>
標籤)。在這個腳本里面,我想設置一個函數,當文檔已經加載並且可以進行操作時會被調用。SVG:加載文檔時運行腳本
如果我使用HTML和JQuery來做這件事,我只需要使用$(document).ready(...)
。我期望在SVG文檔中做同樣的事情,但顯然我不能以相同的方式使用JQuery。
總之,我要找的是一樣的東西:
test.svg:
<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg">
<script type="text/ecmascript" xlink:href="myscript.js" />
<!-- Rest of SVG body goes here -->
</svg>
myscript.js:
function init(evt) {
var svgDocument = evt.target.ownerDocument;
var svgRoot = svgDocument.documentElement;
// Manipulate SVG DOM here
}
// --> Somehow attach init() function to onload event of SVG <--
我想嘗試在腳本中執行此操作,而不是依賴明確的SVG定義中的。 (我想編寫一個可能包含在幾個SVG中的腳本,而不需要知道腳本如何工作)。
可能是,但我正在尋找一種方法來通過JavaScript從** SVG(或至少包含從'
下面是一個例子
來源
2011-10-05 23:22:19 Clafou
謝謝。這大致是我想要實現的。然而,我想要做的是避免在'
沒事(但IE)阻礙你使用的JS標準DOM事件處理程序嵌入SVG:
對於IE瀏覽器,您通常使用
attachEvent
左右,但我不知道,如果IE(> = 9)在SVG中支持這個。大多數情況下,SVG文件是獨立的,所以DOMReady(又名DOMContentLoaded)和加載事件並沒有太大的區別(與HTML相比,需要加載數十個CSS文件和圖像)。所以與使用加載事件而不是DOMReady事件(這不幸尚未標準化穩定)將被忽略。除此之外,我從來沒有嘗試過,如果瀏覽器甚至發起DOMReady事件,當SVG的DOM加載。
來源
2011-10-06 08:15:07 Boldewyn
您可以嘗試將腳本包含在svg文檔的最後,然後您不需要等待加載事件。但是,如果您正在引用文檔ant中的任何外部文件,但腳本運行時尚未加載它們,則可能會失敗。
來源
2011-10-07 20:52:53