2017-06-15 12 views
2

ここでは、SVGのマウスが押されたときにマウスのダウンイベントを停止しようとしています。私もevent.stopPropagationを試しましたが、ここでは機能しません。 ここに私のコードです。SVGマウス上でマウスのダウンイベントを停止する

var svgElem=document.getElementById("mySVG"); 
svgElem.onmousedown=function(){ 
     event.stopPropagation(); 
     event.preventDefault(); 
     console.log("svg down"); 
    } 
document.body.onmousedown=function(){ 
     console.log("body down"); 
} 

SVGマウスを押し下げた後、ボディーマウスがダウンします。上記の例

+0

あなたのコードは完璧に動作します。 [this](https://jsfiddle.net/27rstd0p/) –

+0

を見てください。フィドルはクロームで動作し、ファイアフォックスでは動作しません。 –

+0

[チェックボックスをオンにしてイベントのバブリングを停止する方法]の複製の可能性があります(https://stackoverflow.com/questions/1164213/how-to-stop-event-bubbling-on-checkbox-click) – Tigger

答えて

2

あなたはかなり近いようです。次のサンプルは私があなたが望むと思うものです。

function redClick(e) { 
 
    e.preventDefault(); 
 
    e.stopPropagation(); 
 
    console.log('red clicked'); 
 
} 
 
function bodyClick(e) { 
 
    console.log('body clicked'); 
 
} 
 
window.onload = function() { 
 
document.getElementById('noclick').addEventListener('mousedown',redClick,false); 
 
document.body.addEventListener('mousedown',bodyClick,false); 
 
}
<div style="background:grey;width:100%;height:6em;">click me too. 
 
<div id="noclick" style="color:white;width:50%;height:3em;background:red">click me :]</div> 
 
</div>

1

var svgElem=document.getElementById("mySVG"); 
 
svgElem.onmousedown=function(){ 
 
     event.stopPropagation(); 
 
     event.preventDefault(); 
 
     alert("svg down") 
 
     console.log("svg down"); 
 
    } 
 
document.body.onmousedown=function(){ 
 
     console.log("body down"); 
 
     alert("body down") 
 
}
<body> 
 
    <div id="mySVG"> 
 
    hey svg 
 
    </div> 
 
</body>

クロームで動作し、Firefoxでありません。それは以下のようにあなたのコードsvgElem.onmousedown

変化eventパラメータを見つけることができませんので

Firefoxがエラーを投げています。

svgElem.onmousedown=function(event){ 
     event.stopPropagation(); 
     event.preventDefault(); 
     console.log("svg down"); 
    } 
関連する問題