web-dev-qa-db-ja.com

Vimperatorプラグインでマウスオーバーをシミュレートする

ドロップダウンメニューでマウスオーバーをシミュレートするためのヒントモードの使用を許可するVimperatorプラグインを作成しようとしています。ヒントモードが機能していて、マウスオーバーイベントがアタッチされている要素を正しく選択できます。問題は、マウスオーバーをシミュレートする機能が機能していないことです。これは私が現在持っているものです:

function SimulateMouseOver(elem)
{
    var evt = elem.ownerDocument.createEvent('MouseEvents');
    evt.initMouseEvent('mouseover',true,true,
        elem.ownerDocument.defaultView,0,0,0,0,0,
        false,false,false,false,0,null);
    var canceled = !elem.dispatchEvent(evt);
    if(canceled)
        alert('Event Cancelled');
}

上記のコードは一部のページでは機能しますが、他のページでは機能しません。たとえば、AccuWeatherでは機能しません。ほとんどのページで機能するマウスオーバーをシミュレートする方法はありますか?

24
Stephan

イベントを作成するための最初のコードを次に示します。よりシンプルで、より多くのブラウザーで機能します(正確なマウス座標を指定する必要がない場合)

        if( document.createEvent ) {
            var evObj = document.createEvent('MouseEvents');
            evObj.initEvent( 'mouseover', true, false );
            elem.dispatchEvent(evObj);
        } else if( document.createEventObject ) {
            elem.fireEvent('onmouseover');
        }

それが役立つことを願っています

23
Keith Bentrup

HTMLとマウスのイベントを発生させるフレームワークにとらわれない方法を探している人がこれにぶつかった場合(そして必要に応じていくつかのオプションを設定する)、見てくださいここ: JavaScriptを使用してマウスクリックをシミュレートする方法は?

7
TweeZz

マウスオーバーイベントがバインドされているフィールド/要素でのみ、マウスオーバーイベントをトリガーできます。マウスを乗っ取るだけではいけません。

0
Dmitri Farkov