Ist es möglich, die " untätig " Zeit in JavaScript?
Mein Hauptanwendungsfall wäre wahrscheinlich das Vorabholen oder Vorladen von Inhalten.
Ich definiere Leerlaufzeit als eine Periode der Inaktivität des Benutzers oder ohne jegliche CPU-Nutzung
Ist es möglich, die " untätig " Zeit in JavaScript?
Mein Hauptanwendungsfall wäre wahrscheinlich das Vorabholen oder Vorladen von Inhalten.
Ich definiere Leerlaufzeit als eine Periode der Inaktivität des Benutzers oder ohne jegliche CPU-Nutzung
Wenn Sie sich an eine unterstützter Browser (Chrome oder Firefox, Stand: Dezember 2018) können Sie mit dem requestIdleCallback und beinhalten die requestIdleCallback shim bei nicht unterstützten Browsern.
Sie könnten wahrscheinlich etwas zusammen hacken, indem Sie Mausbewegungen auf dem Körper des Formulars erkennen und eine globale Variable mit der letzten Bewegungszeit aktualisieren. Sie müssten dann einen Intervall-Timer laufen lassen, der regelmäßig die Zeit der letzten Bewegung prüft und etwas tut, wenn es lange genug her ist, dass die letzte Mausbewegung erkannt wurde.
Ich habe eine kleine ES6 Klasse, um Aktivität zu erkennen und andernfalls Ereignisse bei Leerlaufzeitüberschreitung auszulösen. Sie umfasst Tastatur, Maus und Touch sein kann. aktiviert und deaktiviert und hat eine sehr schlanke API:
const timer = new IdleTimer(() => alert('idle for 1 minute'), 1000 * 60 * 1);
timer.activate();
Das tut sie no hängen von jQuery ab, obwohl Sie sie möglicherweise durch Babel laufen lassen müssen, um ältere Browser zu unterstützen.
(Teilweise inspiriert durch die gute Kernlogik von Equiman's Antwort .)
sessionExpiration.js ist leicht, aber dennoch effektiv und anpassbar. Einmal implementiert, in nur einer Zeile verwenden:
sessionExpiration(idleMinutes, warningMinutes, logoutUrl);
Dies ist ein Beispiel dafür, wie es in Aktion aussieht, wenn Sie das CSS nicht ändern.
Versuchen Sie diesen Code. Er funktioniert perfekt.
var IDLE_TIMEOUT = 10; //seconds
var _idleSecondsCounter = 0;
document.onclick = function () {
_idleSecondsCounter = 0;
};
document.onmousemove = function () {
_idleSecondsCounter = 0;
};
document.onkeypress = function () {
_idleSecondsCounter = 0;
};
window.setInterval(CheckIdleTime, 1000);
function CheckIdleTime() {
_idleSecondsCounter++;
var oPanel = document.getElementById("SecondsUntilExpire");
if (oPanel)
oPanel.innerHTML = (IDLE_TIMEOUT - _idleSecondsCounter) + "";
if (_idleSecondsCounter >= IDLE_TIMEOUT) {
alert("Time expired!");
document.location.href = "SessionExpired.aspx";
}
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.