开发者社区> 问答> 正文

为啥chrome使用svg技术,没法正常使用getSVGDocument这个方法?报错

在谷歌浏览器调用这个方法,就提示获取的东西为null,但是在IE下是可以的。。。

有人说是文件格式打开的原因,但是我试了把相关的html和svg部署到web容器上也是没法正常

相应的解决方案如下,但是对于我并不适合,求有没有和我一样情况的,帮我说说啥情况,谢谢各位大侠

http://blog.csdn.net/xiaochangwei789/article/details/7823455

http://code.google.com/p/chromium/issues/detail?id=21338

我是在html中嵌入svg的,主要代码如下:

//需要获取当前SVG图像的DOM
var svgDoc=null;
function initHtml(){
var svgEle = document.getElementById("testSVG");
svgDoc = svgEle.getSVGDocument();//获得svg的document对象

alert(svgDoc);

var rect = svgDoc.getElementById("rect");//这个是svg文档中的一个元素的id,了解svg会懂的,就是这句报错

}

<body onload="initHtml()">
<div style="position:static;text-align:center;z-index:100">
<embed id="testSVG" name="testSVG" src="test.svg" width="1024" height="768" type="image/svg+xml" pluginspage="http://www.adobe.com/svg/viewer/install/" />

</div>

</body>

然后通过调试工具,提示“cannot call method getElementById”,其实实际上是前面的那个svgDoc获得的值是null引起的,不过在ie下,svgDoc 通过alert出来是有值的,但是在chrome下不行。这个写法应该是通用写法,也怀疑过是svg文档没有加载完成就调用了getSVGDocument方法,所有我也试了把js代码块放到了body后边,先让页面加载然后再调用js代码,但还是一样的问题,求解啊,各位大侠



展开
收起
爱吃鱼的程序员 2020-06-22 17:02:39 1346 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    我也遇到了这个问题,请问你解决了嘛?1.先获取页面元素
    ①doc=document.getElementById("doc");
    2.获取svg对象
    ①svg=doc.getSVGDocument();
    3.获取svg文档对象
    ①svgDoc=svg.documentElement;
    4.获取svg文档对象节点
    circle=svgDoc.getElementsByTagName("circle")[0];

    你是不是svgDoc为null

    2020-06-22 17:02:54
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flash Player最新安全特性分析 及绕过思路 立即下载
Flash Player最新安全特性分析及绕过思路 立即下载
Python第五讲——关于爬虫如何做js逆向的思路 立即下载