4

ハンドラーがバインドされたがある<div>とします。mousemoveマウスポインタがこの中に入って移動するとdiv、イベントがトリガーされます。

<div>ただし、画面上を移動したり、表示したり、消えたりするリッチWebアプリケーションを扱っています。そのため<div>、マウスポインタの下にが表示される場合があります。この場合、mousemoveはトリガーされません。しかし、私はそれが必要です。(に置き換えmousemovemouseoverも、この動作は変更されないことに注意してください。)

具体的には、<div>を強調表示する必要があり、強調表示をトリガーするためにユーザーがマウスを少し動かす必要があるというUIの欠陥と見なします。

mousemoveプログラムでイベントをトリガーすることは可能ですか?そして、私は意味しません

document.getElementById('mydiv').onmousemove();

私が持っていないオブジェクトonmousemoveによってパラメータ化されているからです。event

現在のマウスの位置でトリガーされたかのようにブラウザを動作させることは可能ですかonmousemove(実際にはマウスは移動しませんでしたが)?

4

2 に答える 2

5

を変更mousemoveして、現在のマウス座標で状態変数を保持し、その情報を使用して、マウスの移動とdivの移動の両方で呼び出す衝突検出を実行できます。

それがどのように見えるかの小さな例

于 2012-08-21T13:34:47.390 に答える
4

実際にはmousemove、次のようなものを使用して、渡すイベントオブジェクトを作成できます。

window.onload = function () {
    document.getElementById("test").onmousemove = function(e) { console.log(e); };
    document.getElementById("test").onclick = function(e) { 
        var e = document.createEvent('MouseEvents'); 
        e.initMouseEvent('mousemove',true,true,document.defaultView,<detail>,<screenX>,<screenY>,<mouseX>,<mouseY>,false,false,false,false,<button>,null);
        this.onmousemove(e); 
    };
};

もちろん、ここではクリックで起動しますが、divが表示されたときなど、任意のイベントで実行できます。マウスがその中にあるかどうかを確認してください。パラメータが正しいことを確認する必要があり、マウスの位置を自分で追跡する必要があります。また、IEにはいくつかの違いがあると思います。これが私のソースです:http://chamnapchhorn.blogspot.com/2008/06/artificial-mouse-events-in-javascript.html。彼はそれを説明するために少し余分なコードを追加しました。

これがいじくり回すフィドルです。http://jsfiddle.net/grimertop90/LxT7V/1/

于 2012-08-21T13:58:13.617 に答える