2017-06-05 14 views
1

私はインタラクティブなSVGマップを開発しようとしています。マウスがSVG画像内の四角形に入ると、やりたいことがあります。現在のところ、マウスがSVGイメージに入ったときにコードがコンソールに記録されますが、長方形の上にマウスを置いたときは表示されません。どんな助けでも大歓迎です。ありがとう!Javascript SVGインタラクションの問題

<object onload="svgOnLoad()" id="activeSVG" data="SVGNAME.svg" type="image/svg+xml"> 
 
</object> 
 

 
    <script> 
 
      function svgOnLoad() { 
 
       console.log("SVG Loaded"); 
 
       $("#activeSVG").mouseenter(function(e) { 
 
       console.log("In the SVG") 
 
       }); 
 

 
       //Executed when the mouse enters an SVG rect element 
 
       $("rect").mouseenter(function(e) { 
 
       console.log("Mouse Entered rectangles!!") 
 
       }); 
 
      } 
 
    </script>

答えて

0

:あなたはjQuerymouseover機能を必要とするmouseoverイベントの場合

。 svgオブジェクトの内容を取得し、そこから再生する必要があります。以下に新しいスクリプトコードを追加しました。

<script> 
 
      function svgOnLoad() { 
 
       // Get SVG object 
 
       var officeMapFloor = document.getElementById("activeSVG"); 
 

 
       // Get the content of the SVG object 
 
       var svgDoc = officeMapFloor.contentDocument; 
 

 
       // Access an ID within the content of the object 
 
       var rect = svgDoc.getElementById("siesta"); 
 

 
       // Apply the event listener 
 
       rect.onmouseover = function(){ 
 
       console.log("Finally in the rectangle"); 
 
       }; 
 

 
      } 
 
</script>

0

短い説明はhttps://www.tutorialspoint.com/svg/svg_interactivity.htmに、例えば、あります。私が追加されるために必要なものを見つけビットのためにそれをいじり後https://api.jquery.com/mouseover/

+0

右、私は最終的にイベントを変更する必要があることを承知しているが、それはどちらかの方法をログに記録されていません。私は矩形に入るとまだログに記録されているはずですが、現在は矩形ではありません。 –

+0

'document.ready()'関数にコードを入れてみてください。おそらく、イベントの登録は、SVGが完全にロードされる前に行われます。 – Guybrush

+0

しかし、それは準備の後に発生するonloadと呼ばれているので、私はthats問題を信じていません –