2013-05-18 99 views
3

我開始使用SVG返回NULL,我有以下代碼:getSVGDocument是在Chrome

HTML

<embed id="embed" src="svg.svg" type="image/svg+xml" width="400" height="300" > 

<object id="object" data="svg.svg" type="image/svg+xml" width="400" height="300"></object> 

的Javascript

$(window).load(function(){ 
//alert("Document loaded, including graphics and embedded documents (like SVG)"); 

    var svgDoc_embed = document.getElementById("embed").getSVGDocument(); 
    alert("My svgDoc_embed => " + svgDoc_embed); 

    var svgDoc_object = document.getElementById("object").getSVGDocument(); 
    alert("My svgDoc_object => " + svgDoc_object); 

}); 

在FireFox瀏覽器效果不錯

My svgDoc_embed => [object SVGDocument] 
My svgDoc_object => [object SVGDocument] 

但在Chrome瀏覽器上不起作用。

My svgDoc_embed => null 
My svgDoc_object => null 

我已經在互聯網上搜索,但無法找到任何工作

任何建議,歡迎

================== ================================================== ======

我嘗試打開Chrome瀏覽器JS控制檯,輸入:

document.getElementById ("object"). GetSVGDocument();

結果爲空。

另外的代碼更改爲:

$ ("embed"). load (function() { 
svgDoc_embed var = document.getElementById ("embed"). getSVGDocument(); 
alert ("My # embed svgDoc_embed =>" + svgDoc_embed); 
}); 

    $ ("object"). load (function() { 
    svgDoc_object var = document.getElementById ("object"). getSVGDocument(); 
alert ("My # object svgDoc_object =>" + svgDoc_object); 
    }); 

,不給任何結果。

任何建議是值得歡迎的。

+1

contentDocument是否可以在Chrome中使用?即document.getElementById(「embed」)contentDocument –

+0

getSVGDocument()在我的一臺服務器上的Chrome上工作,但不在另一臺上。也許這是密碼保護? contentDocument也返回null。 firstElementChild也爲null。 – Curtis

+0

顯然你必須等待它加載第一,然後'contentDocument'似乎工作。請參閱http://stackoverflow.com/questions/11434916/javascript-accessing-inner-dom-of-svg –

回答

0

我相信getSVGDocument()已被棄用,並且在我的FF副本中不起作用。嘗試使用firstElementChild代替:

var svg = document.getElementById("object").firstElementChild; 

,或者直接與訪問SVG元素:

var svg = document.getElementById("foo"); 

在哪裏 「foo」 的是根svg元素的id屬性的值。

<svg id="foo"> 
+2

當您插入內嵌元素時,它不會形成單獨的SVG文檔。它成爲外部HTML文檔的一部分。但是,當SVG嵌入時,它包含它自己的文檔。 – WGH

相關問題