PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP window.onbeforeunload


orda
2010-03-04, 20:16:08
Hallo Freunde der Sonne,

folgender Sachverhalt:

Ich habe eine HTML Seite mit ein wenig PHP-Code drauf. Insgesammt drei Seiten, welche untereinander verlinkt sind. Nun soll folgendes realisiert werden:

Wenn der User von einer der drei Seiten wegnavigiert, soll er durch einen simplen JavaScript gefragt werden, ob er dies wirklich will und ggf. auf eine neue Seite weitergeleitet werden soll. Dies funktioniert auch 1A, jedoch kommt dieses Popup dann auch, wenn der User INNERHALB der drei Seiten navigiert - logisch.

Jedoch soll das verhindert werden, sodass die Abfrage NUR KOMMT, wenn er die Seite schließt bzw. auf eine externe Seite navigiert.

Hier der jetzige Code:

<script type="text/javascript">

<!--

function doClick() {

}


history.forward();


function bunload() {

window.onbeforeunload = null;



alert("TEST BLA BLA");

window.location = "proof.php";

return "\nClick *Cancel* below to see the other page\n";

}


window.onbeforeunload = bunload;



//-->
var backButtonPressed = 1;

function sortList() {
backButtonPressed=0;
document.form2.hiddenFieldName.name='sortButton';
document.form2.submit();
}


function printSelectedEntry() {
backButtonPressed=0;
document.form2.hiddenFieldName.name='printButton';
document.form2.submit();
}


function cancel() {
backButtonPressed=0;
document.form2.hiddenFieldName.name='cancelButton';
document.form2.submit();
}


function help() {
backButtonPressed=0;
document.form2.hiddenFieldName.name='helpButton';
document.form2.submit();
}


function goBack() {
if (backButtonPressed == 1) {
backButtonWasPressed();
}
}


function backButtonWasPressed() {
cancel();
}

</script>


Könnt Ihr mir sagen, wie ich diesen Code verändern muss, damit er wie oben genannt funktioniert? Bzw. mir andere Herangehensweise offenbaren?

Gruß
Daniel

Gast
2010-03-04, 23:01:35
1. Hat das nichts mit php zu tun und
2. ist solcher blödsinn nicht unterstützenswert.

wer von deiner seite wegnavigiert wird schon wissen was er tut (und falls nicht gibts im browser eine "zurück"-funktion). da brauchts keine dämliche zusatzabfrage...

DanMan
2010-03-04, 23:17:35
Auch wenn man es netter formulieren kann, so muss ich dem Gast eigentlich zustimmen. Ich hoffe einfach mal, dass das eine Intranet-Seite ist.

Du wirst wohl die URL parsen müssen, und schauen, ob deine Domain enthalten ist, oder nicht.

orda
2010-03-05, 15:30:39
1. Hat das nichts mit php zu tun und
2. ist solcher blödsinn nicht unterstützenswert.



Könnte man bitte meine Frage beantworten? Ethisch bewerten kann ich meine Tätigkeiten schon selbstständig.

DanMan
2010-03-05, 18:58:34
Könnte man bitte meine Frage beantworten?
Du wirst wohl die URL parsen müssen, und schauen, ob deine Domain enthalten ist, oder nicht.
http://de.selfhtml.org/javascript/objekte/location.htm

PatkIllA
2010-03-06, 13:24:04
dafür müsste man doch aber die nächste URL wissen und nicht die wo man gerade ist.
Du könntest deine drei Seiten in ein Frameset packen und mit deinen 3 Seiten innerhalb des Framesets bleiben während neue URLs aus der Adressleiste oder Bookmarks das ganze Frameset austauschen.

DanMan
2010-03-06, 15:03:21
dafür müsste man doch aber die nächste URL wissen und nicht die wo man gerade ist.
Kommt natürlich darauf an, wie man auf besagte, andere Seite gelagt. Bin davon ausgegangen, dass das per <a> läuft, und dann kann man ja einfach prüfen, ob die eingene Domain im href-Attribut enthalten ist. Wenn nicht, dann ist es ein externer Link. Wenns nicht mit http anfängt, dann sollte es ein interner, relativer Link sein.

PatkIllA
2010-03-06, 15:06:33
Die location ist aber erst anders nachdem man die Seite gewechselt hat und dann läuft kein Script von der alten Seiten mehr.
Wenn es seiten sind die er selbst auf seinen Seiten verlinkt, dann braucht er auch nicht mit einem globalen event rumhantieren sondern kann die Links direkt per PHP mit entsprechendem Javascipt versehen.

Marbleearth
2010-03-06, 19:15:21
Das geht imo nur mit einem 100% Frame und dem Event-Handler onunload (http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onunload).

DanMan
2010-03-06, 19:17:42
Die location ist aber erst anders nachdem man die Seite gewechselt hat und dann läuft kein Script von der alten Seiten mehr.
Wenn es seiten sind die er selbst auf seinen Seiten verlinkt, dann braucht er auch nicht mit einem globalen event rumhantieren sondern kann die Links direkt per PHP mit entsprechendem Javascipt versehen.
Stimmt, was window.location angeht. Wie auch immer - letztendlich ist mir nicht klar, was orda überhaupt vor hat. Folglich kann ich auch nicht mehr dazu sagen. Was ich über das href-Attribut geschrieben hab steht aber noch. Also sowas in ein <script> vor dem </body>.

var a=document.getElementsByTagName('a');
for(var i=a.length-1; i>=0; i--) {
a[i].onclick=function(){
this.preventDefault();
if(this.href.search(/^http/)>=0){
return confirm('Seite wirklich öffnen?');
} else {
return true;
}
}
}
Oder so ähnlich... Habs nicht getestet.

Gast
2010-03-11, 10:19:48
Könnte man bitte meine Frage beantworten? Ethisch bewerten kann ich meine Tätigkeiten schon selbstständig.
Auf Fragen zu ethisch bedenklichen Tätigkeiten werde ich dir keine Antwort geben.