关于javascript:getSVGDocument在Chrome中返回NULL

getSVGDocument is returning NULL in Chrome

本问题已经有最佳答案,请猛点这里访问。

我开始使用SVG,并且具有以下代码:

HTML

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

Javascript

1
2
3
4
5
6
7
8
9
10
$(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浏览器中效果很好

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

但在Chrome浏览器上不起作用。

1
2
My svgDoc_embed => null
My svgDoc_object => null

我已经搜索了Internet,但是找不到任何可行的方法

欢迎任何建议

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

我尝试打开Chrome JS控制台并输入:

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

结果为空。

也将代码更改为:

1
2
3
4
5
6
7
8
9
$ ("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);
  });

并且不给出任何结果。

欢迎任何建议。


我相信getSVGDocument()已被弃用,并且在我的FF副本中不起作用。尝试改用firstElementChild:

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

或直接通过以下方式访问SVG元素:

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

其中" foo "是svg根元素的id属性的值。

1
<svg id="foo">