• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:イベントハンドラを外部ファイルに分離させた時のevent.target)

イベントハンドラを外部ファイルに分離させた場合のevent.targetやevent.srcElementの挙動について

このQ&Aのポイント
  • イベントハンドラを外部ファイルに分離させた場合、Firefoxで動作しない問題が発生します。
  • イベントハンドラをfunction()からfunction(event)に変更すると、Firefoxでの動作は修正されますが、Internet Explorerでは動作しなくなります。
  • FirefoxとInternet Explorerの両方で動作するようにするには、条件分岐を追加して、event.targetとevent.srcElementの両方を考慮した処理を行う必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

こんなんでどうでしょう。↓(マウスオーバーとマウスアウトは同時に補足出来ます) <script type="text/javascript"> <!-- $(function() { if('undefined' !== typeof document.addEventListener){  document.addEventListener('mousemove',listener,false); }else if ('undefined' !== document.attachEvent){  document.attachEvent('onmousemove',listener); } function listener(event){  var target = event.target || event.srcElement;  switch(event.type){   case "mousemove":  var outtarget = event.relatedTarget || event.fromElement;    if (target == document.getElementsByTagName('div')[0]){    alert("マウスが入ったのは" + target.tagName);    if(outtarget != null)     alert("マウスが出たのは" + outtarget.tagName);    }   break;  } } }); // --> </script>

bokuchan7
質問者

お礼

できました!ありがとうございます!

その他の回答 (1)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

No.1 訂正 'mousemove' でなく 'mouseover' でしたね。 それから、$(function(){ って、jQuery使ってるなら $(function() {  $("div:eq(0)").mouseover(function(){ alert($(this).get(0).tagName); }); }); だけでしょう...

関連するQ&A

専門家に質問してみよう