4

这段代码在 Firefox 中运行良好,但在 IE 中不行。我已经阅读了 SVGWeb 的文档(http://svgweb.googlecode.com/svn/trunk/docs/UserManual.html),但我没有找到/理解解决方案,知道吗?

window.onsvgload = function() {
  carga();
var mySVG = document.getElementById("mySVGObject").contentDocument;
        mySVG.addEventListener('click', function(evt) {
                alert(evt.target.id);
    }, false);
}

我在 IE 中使用这样的东西没有问题:

mySVG.getElementById('Color2').style.fill='#00cc00'

使用该代码,我可以更改形状中的颜色和文本,但我无法让侦听器在 IE 中工作。

编辑:这适用于 Chrome、Firefox 和 IE9,我需要它在 IE7 上运行。这就是我加载 SVG 对象的方式:

 <div style="text-align:center" id="mapaSvg" >
<!--[if !IE]>-->
 <object data="ca.svg" type="image/svg+xml"
      width="700" height="800" id="mySVGObject" > <!--<![endif]-->
<!--[if lt IE 9]>
<object src="ca.svg" classid="image/svg+xml"
      width="700" height="800" id="mySVGObject" > <![endif]-->
<!--[if gte IE 9]>
<object data="ca.svg" type="image/svg+xml"
      width="700" height="800" id="mySVGObject" > <![endif]-->
</object>
</div>
<div style="text-align:center">

IE开发工具显示错误:

“触发 onload 时出错:不支持”

在线上:

mySVG.addEventListener('click', function(evt) {
                alert(evt.target.id);
    }, false);

在这里,您可以看到 SVGWEB 在 IE、Firefox、Chrome 中工作的示例,鼠标悬停在动态行上: https ://www.destatis.de/bevoelkerungspyramide/

4

2 回答 2

1

尝试addEventListener在此块内调用onsvgload

window.addEventListener('SVGLoad', function() {
   // all SVG loaded and rendered
}, false)

这些结构是相等的,但我做出这个假设是因为一个错误:“触发 onload 时出错:不支持”

于 2013-03-13T08:37:43.843 回答
0

不知道它是否有帮助,但我在除 IE8 和 IE7 之外的所有浏览器中都遇到了同样的问题。该问题是由使用自闭合图像元素<image/>而不是<image></image>在 svg 中引起的。

于 2013-03-12T22:52:47.403 回答