質問
カーソルの位置を見つけることができます。しかし、マウスが安定しているかどうかを調べる必要があります。マウスが1分以上動かされなかった場合、ユーザーに警告する必要があります。
どのように可能ですか、これには特別なイベントがありますか? (JavaScriptのIEのみ)
解決
マウスが1分先に移動したときにタイムアウトを設定し、マウスが移動した場合はタイムアウトをクリアします:
var timeout;
document.onmousemove = function(){
clearTimeout(timeout);
timeout = setTimeout(function(){alert("move your mouse");}, 60000);
}
他のヒント
各マウス移動イベントの後に増分を開始するタイマーを設定する方法はありませんか?
1分に達するとメッセージボックスがポップアップしますが、マウスが動くたびにタイマーがリセットされます。
mousemoveイベントで値をリセットするタイマーを使用します。 タイマーが1分に達した場合->何かをします。
タイマーの詳細はこちら http://www.w3schools .com / js / js_timing.asp
catchinマウスイベントの詳細はこちら http://www.quirksmode .org / js / events_mouse.html
はい、Javascriptでonmousemoveイベントがあります。必要なものを実現するには、次のようなコードを実行するだけです。
startTimer();
element.onmousemove = stopTimer(); //this stops and resets the timer
たとえば、ドキュメントの本文タグで使用できます。
更新:@Mariusはこれよりも優れた例を達成しました。
onmousemoveイベントを使用できます。その中に、clearTimeout()、setTimeout(your_warning、1分)。
このスクリプト/スニペットを使用して、マウスポインターの位置を検出できます。および「記憶する」それ。次に、タイマー「setTimeout(...)」を使用します;位置を確認するには、毎秒言って、その時間を覚えておきましょう。
1分以上経過しても位置が変わらない場合は、ユーザーに警告できます。
要素の動きを確認できる1つだけの機能を次に示します。
function mouse (element, delay, callback) {
// Counter Object
element.ms = {};
// Counter Value
element.ms.x = 0;
// Counter Function
element.ms.y = function () {
// Callback Trigger
if ((++element.ms.x) == delay) element.ms.callback(element, element.ms);
};
// Counter Callback
element.ms.callback = callback;
// Function Toggle
element.ms.toggle = function (state) {
// Stop Loop
if ([0, "off"][state]) clearInterval(element.ms.z);
// Create Loop
if ([1, "on"][state]) element.ms.z = setInterval(element.ms.y, 1);
};
// Function Disable
element.ms.remove = function () {
// Delete Counter Object
element.ms = null; return delete element.ms;
};
// Function Trigger
element.onmousemove = function () {
// Reset Counter Value
element.ms.x = -1;
};
// Return
return element.ms;
};
使用法:
mouse(element、delay、callback)
例: ビデオプレーヤーがアイドル状態でフルスクリーンの場合、5秒後にマウスを非表示にする
let x = mouse(video, 5000, function (a) {
if (document.webkitIsFullScreen) video.style.cursor = "none";
});
x.toggle(1); addEventListener("mousemove", function () {
video.style.cursor = "auto";
});
チャットルームAFK(45秒)(チャットボックスとメッセージ送信機能がある場合):
let x = mouse(chatBox, (45e3), function (a) {
chatBox.send({ text: chatBox.username + " is AFK.", italic: true });
});
x.toggle(1); x.addEventListener("mousemove", function () {
chatBox.send({ text: chatBox.username + " is no longer AFK", italic: true });
});