2012-01-13 75 views
0

我試圖檢測什麼時候在我的頁面上使用svgweb插件加載svg對象,然後獲取svg中的屬性值。我想這是我的文檔中找到:使用svgweb檢測svg對象何時被加載?

$(document).ready(function() { 
    window.addEventListener('SVGLoad', function() { 
     alert('done'); 
    }, false); 
    }); 

但它似乎並沒有工作。我選擇了這種版本的各種檢查方法,因爲我在此之後使用其他jQuery的文檔準備功能。我究竟做錯了什麼?我需要添加其他東西嗎?

編輯:哦,順便說一句,這並不工作之一:jQuery $(document).ready and svg-web window.onsvgload

+0

我不確定這樣的事件是否真的存在。也許你可以創建像http://raphaeljs.com/這樣的庫的SVG? – Armin 2012-01-13 16:04:19

+0

我正在使用庫/插件:svgweb。這是事件發生的地方。我只是不明白如何讓它工作。 – Anders 2012-01-13 16:09:38

+0

你有沒有svgweb對象嗎?也許你可以使用這個事件呢? – Armin 2012-01-13 16:13:18

回答

0

您需要調用addEventListener外SVG元素,而不是在窗口上。與html不同,SVG事件不會轉到窗口。

如果你有一個SVG文檔,而不是HTML5之一,在它SVG,你可以使用document.documentElement中,否則把外部SVG元素ID,並調用的document.getElementById得到它拿到外SVG元素。

var svgElement = document.getElementById("<outer svg element id>"); 
svgElement.addEventListener("SVGLoad", ... 
+0

我有對象元素來包含具有data屬性的svg文件。我無法自己更改svg文件,因爲這些文件始終在不同的環境中生成(這是一個技術文檔系統)。而且我無法通過id真正到達svg元素,因爲我不會事先知道這個id(這是從一個巨大的xslt轉換完成的)。我可以到達對象元素,然後當我知道它被加載時,我想選擇其中的svg ... – Anders 2012-01-13 22:39:48

+0

你的情況var svgElement = document.getSVGDocument()。documentElement; – 2012-01-13 23:14:28

+0

這就是我在問題的評論中的意思:) – Armin 2012-01-14 02:42:48