web-dev-qa-db-ja.com

IE8とFirefoxのevent.toElement?

ChromeおよびIE9では、onmouseoutイベントに対してevent.toElementプロパティがあります(マウスが現在どの要素を指しているかを判断できます)。

Firefoxで同等のプロパティが見つかりません。

残念ながら、jQueryを使用してこれらのイベントを処理することはできません。ネイティブjsを使用する必要があります。

アドバイスをいただければ幸いです。

46
captainclam

これを使用して問題を解決します

event.target
37
Azam Alvi
21
captainclam

私は、Firefoxのevent.targetがchromeのevent.toElementのターゲットの親要素を指しているJayの答えを使用すると問題に遭遇しました。
イベントオブジェクトを調べたところ、event.originalEvent.targetが見つかりました。FirefoxとChromeの両方でうまく機能します。

10
simomo

実際event.currentTargetはChrome、Firefox、IEで動作するはずです

8
gpasse

2014年現在、IE11はtoElementをサポートしていません。イベントオブジェクトを調べたところ、targetがtoElementと同じデータを持っていることがわかりました。

つまり、このイベントがトリガーされた要素内の子要素をクリックすると、子要素が「ターゲット」になり、この属性に保存されます。

イベントが発生した要素は、currentTarget属性に格納されます。

これは、11でのみテストしているため、古いバージョンではサポートされていない可能性があることに注意してください。

したがって、Firefoxをサポートするには、ieおよびchrome(および場合によっては、ポリフィルが必要になります。

var target = e.toElement || e.relatedTarget || e.target || function () { throw "Failed to attach an event target!"; }

eeventです

6
Jay

わかりやすいコード..

enter code here
if(typeof evt.toElement !== "undefined")
{
        evt.toElement.classList.toggle('done');
}
else if(typeof evt.relatedTarget !== "undefined")
{
    if(evt.relatedTarget !== null)
    {
        evt.relatedTarget.classList.toggle('done');
    }
    else if(typeof evt.currentTarget !== "undefined")
    {
        evt.currentTarget.classList.toggle('done');
    }
    else
    {
    console.log("s_f_li_clickexception...");    
    } //endif
} //endif