>> 古い記事: AutoPagerize で「次に読み込むページのURL」を加工する
<< 新しい記事: Script-Fu: 「すべてのレイヤーに対して処理○○を行う」のテンプレートとスクリプト作成メモ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

JavaScript: 子要素に入ったときに mouseout 用の処理をさせないようにする

行儀の良い方法かどうかは分からないです。 とりあえずメモ。


document.getElementById("foo").addEventListener(
  "mouseout"
, function(e) {
    // e.currentTarget => リスナを設定した要素(子要素ではない)
    var rect = e.currentTarget.getClientRects()[0]; // とりあえず [0] で……

    // 内側にある場合は何もしない
    if(    e.clientX >= rect.left
        && e.clientX <= rect.right
        && e.clientY >= rect.top
        && e.clientY <= rect.bottom
    ){
      return;
    }

    // mouseout 用の処理
  }
, false
);

追記 20100724

……というのをやっつけで書いてお茶を濁したのですが、 見るからに微妙です。。。 そこで、javascript mouseout child などのキーワードで検索し直してみたところ いろいろ出てきました。 とりあえず一番上に出ていた記事へ誘導しておきます。

onMouseOut fix on nested elements – JavaScript « Web Development – Programming – Coding Recipes

追記 20100828
子要素が object 要素の場合 event.toElement, event.relatedTarget では取得できない (Firefox 3.6.8)ので、 event.rangeParent を使うのが良いかも。

>> 古い記事: AutoPagerize で「次に読み込むページのURL」を加工する
<< 新しい記事: Script-Fu: 「すべてのレイヤーに対して処理○○を行う」のテンプレートとスクリプト作成メモ
** ホームに戻る

コメント

コメントの投稿

管理者にだけ表示を許可する

|
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。