Webseite auf Inaktivität Prüfen

nchristoph

Erfahrenes Mitglied
Moin Zusammen,

ich bastle gerade an einer internen Webseite und stehe vor folgendem Problem:

Ich will, wenn X Minuten weder eine Tastatureingabe noch Mausbewegung gemacht wird, das automatisch die Startseite aufgerufen wird.

Es handelt sich hier um einen reinen Terminal-PC und der Browser ist im Kioskmodus konfiguriert.

Probiert habe ich bis jetzt folgendes:
Code:
<script language="JavaScript">
if (document.layers) {
window.captureEvents(Event.MOUSEMOVE);
window.onmousemove = warte;
}
function lauf() {
laeuft=setTimeout("self.location.href='start'",20000) }
function warte(e) { clearTimeout(laeuft); lauf(); } lauf();
</script>

</head><body onMousemove="warte(0)">
Nicht bewegen!
</body></html>

bzw.

Code:
<script>
     var time = new Date().getTime();
     $(document.body).bind("mousemove keypress", function(e) {
         time = new Date().getTime();
     });

     function refresh() {
         if(new Date().getTime() - time >= 60000)
            self.location.href='start';
         else
             setTimeout(refresh, 10000);
     }

     setTimeout(refresh, 10000);
</script>

Beides hat nicht den gewünschten Effekt gebracht.

Der Timer an sich funktioniert, leider werden alle Inputs ignoriert und der Timer nicht zurückgesetzt.

Kann mir eventuell wer von euch weiterhelfen?
 

basti1012

Erfahrenes Mitglied
Das Thema hatten wir schon mal irgendwo , finde es aber nicht wieder,
Ohne es jetzt zu testen, würde ich es z. B. so machen.
Variable ganz oben setzen, z. B.
var inaktiv=0;

Dann ein mouse und Key Event erstellen was die Variable auf 1 stellt, wenn es gefeuert hat.
Dann eine Funktion erstellen, die sich jede Sekunde selbst aufruft, und testet, ob die Variable 0 oder 1 hat.
Wenn es eine 1 hat, setzt du die Variable wieder auf 0, und wenn die Variable auf 0 steht, kommt der setTimeout der z. B. Nach 30 Sekunden die Seite wechselt.

Falls dann die Maus wieder bewegt wird, muss der Timer in dem Event natürlich wieder gestoppt werden.

Ich kann scheiße , erklären.
Falls bis heute Abend keiner geholfen hat , oder du keine Lösung gefunden hast dann zeige ich dir was ich meine ,bzw. wie ich das meine.
 

nchristoph

Erfahrenes Mitglied
Hallo Basti,

sry für die späte Antwort, war das ganze WE wegen den Unwettern ohne Strom.

Ich schau mir das an, vielleicht funktioniert das ja für meine Anforderungen.

//Edit:

Ich habe die beiden Varianten mal eingebaut.

Sowohl die JS als auf die JQuery Version funktionieren nur auf der Starrtseite.

Kann es vielleicht daran liegen, das die Subseiten IFrames sind?
 
Zuletzt bearbeitet:

basti1012

Erfahrenes Mitglied
Das Script funktioniert über all da wo du das auch einbindet. Wenn das nur auf der Startseite ist geht es auch nur da. Wenn du auf einer Seite bist wo es nicht geht mache Rechtsklick und schau dir den Quelltext an. Wenn da das Script nicht zu finden ist must du es da auch einbauen
 

nchristoph

Erfahrenes Mitglied
Hallo Basti,

lt. Quellcode ist der Code eingebunden.

Auf der Startseite funktioniert das Script einwandfrei.

Sobald ich allerdings jetzt von index.php auf die Unterseite 1 gehe, wo der Inhalt per IFrame geladen wird, wird das Script, obwohl im Quellcode vorhanden, nicht mehr ausgeführt.

Darum meine Vermutung: Kann ein IFrame die ordnungsgemäße Ausführung des Scripts beeinflussen?
 

basti1012

Erfahrenes Mitglied
Wenn dir Unterseite ein iFrame ist, dann hast du wahrscheinlich eine sehr alte Seite , richtig?
IFrames oder Frames / frameset nutzt man heute nicht mehr , das ist veraltet.
Kannst du mal den Link posten zur deiner Seite, notfalls auch über PN.
Werde di dann aber hier antworten, was ich dazu halte und was du anders machen solltest.

Falls das wirklich alles über iFrames läuft , kannst du einen JS Code, erstellen, damit IFRAME und Seite miteinander kommunizieren können.
Oder du bindest das Script in jeden Frame ein.

Ohne die Seite jetzt zu kennen, denke ich mal das du alles auf aktuelles HTML5 umbauen solltest und alles ohne iFrames erstellen solltest
 

nchristoph

Erfahrenes Mitglied
Link bringt nichts.

Es handelt sich um ein Internes Tool das Lokal im Netzwerk liegt und lädt die einzelnen Konfiguratoren unserer Lieferanten in einer Maske.

Deswegen, und weil ich jetzt schon ein paar Jahre nichts mit Web gemacht habe, habe ich IFrame genommen.

Mittlerweile habe ich eine brauchbare Lösung aus deinem geposteten Link zusammen gebastelt. Ich musste jedoch den Browser "verdummen" und die Crossorigin Regeln deaktivieren.

Interessehalber: Wie bindet man mit HTML5 externe Webseiten ein?
 

basti1012

Erfahrenes Mitglied
Interessehalber: Wie bindet man mit HTML5 externe Webseiten ein?
Ja, da gibt es Möglichkeiten genug.
Wie du es machst, ist es ja veraltet , aber iFrames gibt es noch.
Heute kann man aber mit postMJessage den iFrame mit der parent Seite kommunizieren lassen und dann kann man eigentlich alles machen , was auch ohne iFrame möglich ist.

Dann kann man es mit PHP machen, ( include , readfile, file_get_Contens,file usw...)
Mit Javascript kann man es mit Ajax oder der fetch API machen.

Viele andere Möglichkeiten sehe ich da jetzt nicht, wie du es machen könntest
 

Sempervivum

Erfahrenes Mitglied
Dann kann man es mit PHP machen, ( include , readfile, file_get_Contens,file usw...)
Mit Javascript kann man es mit Ajax oder der fetch API machen.
Ich bezweifle, dass das für den Fragesteller machbar ist. Jedenfalls wenn es sich um eine ausgewachsene Webseite mit eingebundenen Bildern, CSS und JS handelt, helfen diese Verfahren überhaupt nicht weiter.