window.stop() funktioniert nicht

-nin

Grünschnabel
Hallo,

ich habe mir eine kleine Funktion geschrieben, die eine Sicherheitswarnung anzeigt, wenn mann in ein Textfeld etwas geschrieben hat und die Seite verlassen möchte.

Wenn man in den Textbereich geschrieben hat und die Seite verlassen will kommt eine Abfrage ob wirklich oder ob man erst den Text abschicken will.

Wenn man auf Abbrechen drückt soll der Ladevorgang der neuen Seite mit window.stop() gestoppt werden und genau das klappt nicht. Ebenso funktioniert es nicht, wenn ich history.back() verwende. Die neue Seite wird immer geladen. Weiß einer Abhilfe? Hier ist der Code:

Code:
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
function Test(){

var textbox1 = document.getElementsByName("Probe")[0].value
	if (textbox1 == "") {
	Check = confirm("Wenn Sie jetzt die Seite wechseln, geht der Text verloren.");
		if (Check == false) window.stop();
	}
		}
</script>
</head>

<body onUnload="javascript:Test()">
<form name="form1" method="post" action="">
  <textarea name="Probe" id="textarea"></textarea>
</form>
</body>
</html>

Danke, -nin
 
Nur mal theoretisch...
warum prüfst du zuerst, ob die Textbox leer ist, und wenn sie leer ist, machst du darauf aufmerksam, dass anscheinend doch was drinnen ist! :rolleyes:
Du solltest besser auf ungleich (!=) überprüfen!

lg D;-]c
 
Man kann den onunload-Event zum Glück nicht cancel'n....
wenn ich mir das vorstelle...auf jeder 2.ten Seite würde mich ein tolles Skript erwarten, welches verhindert, dass ich selbige verlasse:-)

Es gibt aber eine Möglichkeit im IE.

Dort feuert vor dem "onunload" ein "beforeunload"....diesen kann man cancel'n:
Code:
<html>
<head>
<title>Title</title>
<script type="text/JavaScript">
<!--

var blnGo   =   false;

function frage()
{
if(!blnGo && document.form1.Probe.value.match(/\S/))
    {
    window.event.returnValue='Wenn Sie die Seite jetzt verlassen, geht ihre Formulareingabe verloren';
    }
}

window.onbeforeunload=frage;
//-->
</script>
</head>
<body>
<form name="form1" method="post" action="node.htm"onsubmit="blnGo=true;">
  <textarea name="Probe" id="textarea"></textarea>
</form>
</body>
</html>

Da ist erstmal eine Variable "blnGo" definiert, welche false ist. Beim onSubmit des Formulars wird sie auf true gesetzt...denn die Abfrage soll ja wahrscheinlich nicht kommen, wenn das Formular gesendet wird.

Die Funktion frage() ermittelt dann den Wert dieser Variable und ob was im Textfeld steht, und bricht jenachdem das Verlassen der Seite ab.
 
@Fatalus

Also lautet die Devise bei JS anscheinend "Warum einfach, wenn's auch kompliziert geht".

Aber Deine Methode funktioniert. Ich danke Dir.

Gruß, -nin
 

Neue Beiträge

Zurück