【发布时间】:2013-05-18 17:16:08
【问题描述】:
我开始使用 SVG,我有以下代码:
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);
});
并且没有给出任何结果。
欢迎提出任何建议。
【问题讨论】:
-
contentDocument 能否在 Chrome 中工作?即 document.getElementById("embed").contentDocument
-
getSVGDocument() 在我的一台服务器上的 Chrome 上工作,但在另一台服务器上却不行。也许是密码保护? contentDocument 也返回 null。 firstElementChild 也为空。
-
显然你必须先等待它加载,然后
contentDocument似乎工作。见stackoverflow.com/questions/11434916/… -
我在尝试从本地文件系统而不是 http 或 https 使用 GetSVGDocument 时遇到了同样的问题。这似乎是一个安全问题。请参阅stackoverflow.com/questions/52693026 和 Serge 在stackoverflow.com/questions/22529398 中的回答
标签: javascript jquery svg