私がqを正しく理解していれば、各divのmousemoveイベントの実行を同期したいと考えています。これを行うハックな方法はいくつかありますが、HTML マークアップを変更して、重複がないようにするのが最善の方法です。
とにかく、あなたの場合、次のことができます:
var g_focusDivId = "";
function onMouseMove(e)
{
if (g_focusDivId != "" && g_focusDivId != e.target.id)
return; // Deciding to not exec any other mouse moves
g_focusDivId = e.target.id;
// Do your stuff
g_focusDivId = "";
}
もちろん、これは JS イベント処理がシングルスレッドであることを前提としていますが、これは常に正しいとは限りません。JavaScript はシングルスレッドであることが保証されていますか?
別の方法はこれを行うことです(私はこれを試していません)。キューを使用して、単一のメソッドでイベントを順番に実行しています。はるかに制御されますが、一部のイベントの処理が遅くなる可能性があります。
var g_syncEventQueue = new Array();
function onMouseEvent(e)
{
g_syncEventQueue.push(e);
}
function queueListenerProc()
{
if (g_syncEventQueue.size() > 0)
{
var evt = g_syncEventQueue[0];
g_syncEventQueue = g_syncEventQueue.splice(0, 1);
return queueListenerProc(); // Immediately process the next event
}
setTimeout("queueListenerProc()", 1000);
}
queueListenerProc(); // Not ideal because it keeps running without an exit condition.