不能使用SVGweb在Internet Explorer中为SVG添加侦听器

Can't add listener to a SVG in Internet Explorer using SVGweb

本文关键字:中为 SVG 添加 侦听器 Explorer Internet SVGweb 不能      更新时间:2023-09-26

这段代码在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/

尝试在此块中调用addEventListener而不是onsvgload:

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

这些结构是相等的,但我做这个假设是因为一个错误:" error while firing onload: Not supported"

不知道它是否有帮助,但我在除IE8和IE7以外的所有浏览器中都有同样的问题。问题是由于在svg中使用自关闭图像元素<image/>而不是<image></image>造成的。