2013-02-27 49 views
3

此代碼在Firefox中很好用,但在IE中我沒有閱讀SVGWeb(http://svgweb.googlecode.com/svn/trunk/docs/UserManual.html)的文檔,但是我沒有找到/理解解決方案,任何想法?無法在Internet Explorer中使用SVGweb添加偵聽器到SVG

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

}

im使用這樣的事情在IE中沒有問題:

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

與該代碼我可以改變顏色和文本中的形狀。但我不能讓偵聽器在IE中工作。

編輯:這適用於Chrome,FF和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,FF,Chrome上鼠標移動的動態線條上工作: https://www.destatis.de/bevoelkerungspyramide/

謝謝!

+0

你可以添加一個透明的div覆蓋並分配你的代碼中的鼠標事件。 – Matthias 2013-03-12 14:29:55

+0

我明白你的意思,但在文檔中說SVGWEB可以添加可以在IE中使用的監聽器。這些是地圖,有很多,並有不同的形狀/地區/等,div覆蓋不是這個解決方案。謝謝! – Alejandro 2013-03-12 16:26:04

+0

你是否試過這樣的事情: – Matthias 2013-03-12 18:39:13

回答

0

嘗試調用addEventListener此塊中,而不是onsvgload

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

這些結構都是平等的,但我做這樣的假設,因爲一個錯誤:「錯誤而發射的onload:不支持」

+0

這是個好主意,謝謝!但我在同一行中有相同的錯誤。 – Alejandro 2013-03-13 20:26:39

+0

嗯......這很有趣。也許你正在使用'jQuery'?它看起來像有一個兼容性的問題:https://bitbucket.org/thomaswaldmann/moin-2.0/issue/265/svgweb-fails-on-ie7-and-ie8 – XiM 2013-03-13 21:06:19

+0

沒有,僅此:SVGWEB和AMCHARTS(試過禁用amcharts沒有結果)謝謝 – Alejandro 2013-03-13 21:11:59

0

不知道它是否有幫助,但我在除IE8和IE7以外的每個瀏覽器中都有類似的問題。該問題是由svg中使用自關閉圖像元素<image/>而不是<image></image>造成的。

+0

感謝@Hoppy,但心不是的情況下,這個時間。 – Alejandro 2013-03-13 20:31:07