Checken ob aktives Fenster verlassen wurde?

Sprite

Mitglied
Hallo zusammen,

gibt es eine Möglichkeit, per JavaScript zu checken, ob ein aktives Browser-Fenster verlassen wurde (etwa weil per STRG + N ein neues geöffnet wurde)?

Was ich machen möchte:

Auf einer Rätsel-Seite stehen Rätsel, die es zu beantworten gilt (per PHP). Viele User cheaten jedoch, indem sie Google o.ä. benutzen. Ich möchte also, dass das Script checkt, ob der User die Seite verlassen hat. Wenn ja, soll er im Rätsel-Fenster weiterleiten, dass wegen Betrugs-Versuch das Rätsel abgebrochen wurde.


Ist so etwas möglich? Wenn ja, habt ihr Stichwörter für mich, wo ich mich bei Google selbst informieren kann? Oder wenn es vielleicht mit wenigen Zeilen realisierbar ist - hat jemand vielleicht ein Beispiel-Script?
Ich habe einfach keinen Anhalts-Punkt, um bei Google (& Co.) effektiv suchen zu können.

MfG
Sprite
 
Danke, bin dadurch sofort fündig geworden. Sobald man die Textzeile oder den Browser verlässt, wird man weitergeleitet.

Nun habe ich allerdings ein weiteres Problem:
Es leitet nämlich nun auch weiter, wenn man auf den Submit-Button klickt... wie kann ich es also machen, dass der Submit-Button von dieser Abfrage ausgeschlossen (oder mit einbezogen) wird?

Code:
<form name='Cheat' action='riddle.php' method='POST'>
<input type='text' name='guess' onBlur='CheckInhalt(this.value)'>
<input type='submit' value='Raten'>
</form>
<script type='text/javascript' language='JavaScript'>

document.Cheat.guess.focus();
function CheckInhalt(Feld)
{
 if(Feld == '' || Feld !== '' ) {
  top.location.href='betrug.php';
  alert('Dies wird als Betrugsversuch gewertet.');
  document.Cheat.guess.focus();
  return false;
 }
}
</script>
 
Zuletzt bearbeitet:
Ich muss sagen, dass dein Vorhaben so kaum sinnvoll umsetzbar ist.
Zum Einen genügt es, Javascript im Browser zu deaktivieren, und schon ist alles für die Katz:(

Theoretisch würde es gehen können, wenn du eine Variable hast, welche du beim onfocus()/onblur() eines Elements (window,Eingabefeld,Submit)änderst...die Sache mit dem onblur müsste dann etwas zeitverzögert ausgeführt werden, da das onblur() des einen Elements vor dem onfocus() des anderen Elements feuern dürfte.

Beim Onblur kannst du dann anhand dieser Variable ermitteln, ob mindestens eine Sache den Focus hat.
Aber wie gesagt... das Ganze ist meines Erachtens so wenig sinnvoll(es gibt ja auch noch Leute mit 2 Rechnern, und ältere Semester wie ich:-( kennen noch so komische Dinger namens "Buch").

Ich würd das eher zeitgesteuert machen... mach in den <head> eine <meta>-Weiterleitung zur Looser-Seite nach bspw. 10 Sekunden. In dieser Zeit dürfte es recht knapp werden, etwas herauszugooglen, und wem die Antwort bis dahin nicht eingefallen ist, der hat halt Pech gehabt:-)

Das kann man dann auch nicht umgehen, indem man JS deaktiviert.
 
Original geschrieben von fatalus
Ich muss sagen, dass dein Vorhaben so kaum sinnvoll umsetzbar ist.
Zum Einen genügt es, Javascript im Browser zu deaktivieren, und schon ist alles für die Katz:(

Das geht zum Glück nicht, denn die Rätsel sind Teil eines Spieles, das an einigen Stellen JavaScript braucht und werden per Random-Befehl aufgerufen. Schaltet der User also JS ab, kann er das Spiel nicht spielen und wenn er es erst beim Rätsel abschalten will, gilt das schon als Betrug :).

Ich habe das onblur jetzt in den body gesteckt... erfüllt den selben Zweck und ist nicht ganz so streng.

Die User mit den Büchern dürften sich in Grenzen halten (Durchschnitts-Alter liegt bei 17), die mit einem zweiten Rechner auch (nur 10%), von daher noch sehr effektiv ;).


Nachtrag:
Argh! Bei Mozilla wird mit dem Betreten der Seite das Script ausgelöst... außerdem hat der OK-Button keine Funktion, da man in einer Unendlich-Schleife landet...

Nachtrag2:
Die Unendlich-Schleife habe ich nun durchbrochen, indem ich das letzte focus() und das return false entfernt habe (wird eh anders per PHP gelöst), bleibt jedoch das Problem, dass es das sofort auslöst, selbst wenn man ordentlich spielt... :confused:

Nachtrag3:
Habe es wieder aus dem body entfernt und erneut in den input gesteckt. Dann habe ich dem Submit-Button denselben Namen wie der input gegeben. Dann funktioniert der Button und der Betrugsversuch, doch leider ist der Betrugsversuch schneller.

Die Frage ist also immer noch: Wie kann ich den Submit-Button von diesem onBlur ausschließen?
 
Zuletzt bearbeitet:
Na gut, dann ganz anders:

Wie müßte ich denn das Script ändern, damit wenn Browser != MSIE, dann ignoriere das Script?

Nachtrag:
So natürlich...

<script type="text/javascript">
<!--
if (navigator.userAgent.indexOf('MSIE') == -1 ){
[nixhier]
} else {
[Scripthier]
}
//-->
</script>
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück