100

Chromeでシミュレートするコードを探していましたmouseoverが、「マウスオーバー」リスナーが起動されても、CSS の「ホバー」宣言が設定されていません!

私もやってみました:

//Called within mouseover listener
theElement.classList.add("hover");

しかし、要素をそのhover宣言で宣言されているものに変更するものは何もないようです。

これは可能ですか?

4

6 に答える 6

121

できません。これは信頼できるイベントではありません。

ユーザー インタラクションの結果として、または DOM への変更の直接的な結果として、ユーザー エージェントによって生成されるイベントは、DocumentEvent.createEvent を介してスクリプトによって生成されるイベントには与えられない特権を持つユーザー エージェントによって信頼されます。 ("Event") メソッド、Event.initEvent() メソッドを使用して変更、または EventTarget.dispatchEvent() メソッドを介してディスパッチされます。信頼できるイベントの isTrusted 属性の値は true ですが、信頼できないイベントの isTrusted 属性の値は false です。

クリックまたは DOMActivate イベントを除いて、ほとんどの信頼できないイベントはデフォルト アクションをトリガーするべきではありません。

クラスを追加し、それをマウスオーバー/マウスアウト イベントで手動で追加/削除する必要があります。

于 2013-06-21T02:18:03.413 に答える
6

この場合、私が通常行うことは、javascript を使用してクラスを追加し、このクラスに同じCSSものを添付することです。:hover

使ってみて

theElement.addEventListener('onmouseover', 
    function(){ theElement.className += ' hovered' });

または古いブラウザの場合:

theElement.onmouseover = function(){theElement.className += ' hovered'};

もちろんonmouseout、要素を離れるときに「ホバーされた」クラスを削除するために使用する必要があります...

于 2013-06-21T02:09:42.703 に答える