HTMLで読み込まれたSVGファイルで奇妙な問題が発生しました。私はクリックイベントをSVGファイルの特定の要素に添付していますが、これはうまくいきます。しかし、私はまたそれを親divにマウスとタッチのイベントを添付する必要があります。 SVGオブジェクトがマウスイベントをキャプチャしていると思われるため、親divにバブリングしていません。ですから、私はSVG上のポインタイベントをnoneに設定しようとします。この場合、親divはマウスイベントを受け取りますが、子SVG要素はもはやマウスイベントを取得しません。子svg要素をポインタイベントに設定しようとしています:すべてですが、まだマウスイベントを取得していません。私はここで間違って何をしていますか?ここでオブジェクト内のSVG要素上のマウスイベントをキャプチャし、親コンテナdivでもある
私はSVGファイルに埋め込むい方法です。ここで
<div
id="map"
ng-pinchable
scale-factor="2"
max-zoom="2"
>
<object data="./media/map.svg" type="image/svg+xml"
id="mapsvg" width="100%" height="100%"></object>
</div>
を私はJSを経由してSVG要素にイベントを追加してい方法です:
//add event listeners to stations
var el = $scope.svgDoc.getElementById("station-test");
el.style.pointerEvents = "all";
el.addEventListener("mouseup",
function(){
$scope.stationClicked("some id");
}
);
}, false);
そして、ここで私は、イベントを追加していSVGオブジェクトを保持している親「マップ」div:
el.addEventListener("click", function(){ console.log("Hello World!"); });
el.addEventListener("mousedown", function(){ console.log("mousedown"); });
ありがとうございます!
@AliSomay私はこれを考慮しましたが、変更を加えるたびにコードをコピーして貼り付けなくてもSVGファイルの編集を続けたいと思っています。しかし、私はこのようなことのために不平をつかむこともできますが、それを解決するための最も効率的なルートは何ですか?私の場合は、すでに上記の方法で動作させています。しかし、あなたの提案をありがとう。 – JackKalish