[JS] Popup öffnen nach Buttonklick im Alert-Fenster

Surferer

ZzzZzz
ID: 51559
L
5 Mai 2006
908
101
Grüß euch :D

Ich bin gerade dabei für einen Besuchertausch einen "Schutz" gegen Framebrecher zu basteln. Die Idee ist folgende: Via on(before)unload will ich ein Alert-Fenster einblenden, sobald die Besuchertausch-Seite verlassen wird. Das funktioniert auch soweit. Ich bin auch schon soweit, dass in dem Alert-Fenster ein OK und ein Abbrechen -Button angezeigt werden. Wenn man auf OK klickt, wird die Seite weiter geladen, also es wird dann die Framebrecherseite geladen und der Besuchertausch geschlossen. Wenn man auf Abbrechen klickt, wird die Framebrecherseite auch geladen, allerdings ohne den Frame zu brechen. Der Besuchertausch läuft also weiter.

Das ganze könnt ihr euch auf https://upload.surferer.de/count.html ansehen. Ich hab eine Framebrecherseite eingefügt, sodass direkt das Alert-Fenster kommt.

Was mir allerdings fehlt, ist die Möglichkeit ein paar Aktionen ausführen zu lassen (z.B. ein Popup für eine Abusemeldung zu öffnen). Diese Aktion soll ausgeführt werden, nachdem man auf Abbrechen geklickt hat.
Hier komm ich jetzt nicht weiter. Kennt irgendjemand eine IF-Anweisung o.Ä., die erkennt, dass der Besucher auf Abbrechen geklickt hat?

Hier mal noch ein Auszug aus dem Code:
Code:
<script language="JavaScript">
  window.onbeforeunload = confirmExit;
  function confirmExit() 
  { if(js_aufent>=1) { var js_aufent_stop=1;
  return("Fenster wirklich schließen?");

// if ... 

  } }

</script>

Wär super, wenn da jemand rat weiß :D
Surferer
 
Vielen Danke :) aber das hilft mir nicht weiter.
Mit confirm() hab ich vorher gearbeitet, das zeigt zwar ein Alert-Fenster an, verhindert aber nicht die Weiterleitung zur Framebrecherseite - egal was man im Alert-Fenster anklickt.
Code:
<script type="text/javascript">
<!--
function exit() {
Check = confirm("Wollen Sie diese Seite wirklich verlassen?");
if (Check == false) {
 top.location="goto.html"; }
 }
//-->
</script>
<body onunload="exit()">

Wenn ich diesen Code mit body onload benutze, dann funktioniert es und das top.location wird ausgeführt. Bei einem Framebrecher aber wie gesagt nicht.
Das Gleiche hat auch jemand auf designerscripte.net versucht und der meint, dass es mit confirm() nur im Firefox 1.5 funktioniert ;)

Trotzdem danke.
Vielleicht hat noch jemand ne Idee, ansonsten werd ich es mit 2 Alert-Fenstern umsetzen, das ist zwar nervig, funktioniert aber :D
 
Hast Du schonmal probiert, in der unload-Funktion einen Trigger zu setzen und diesen ausserhalb der Funktion zu pollen? Sprich - Du definierst global im Skript eine Variable unload_called = false, innerhalb der Funktion setzst Du diese auf true. Im Hintergrund lässt Du mittels setInterval() eine Funktion laufen, die auf unload_called == true wartet und dann all das ausführt, was Du gern hättest (clearInterval() nicht vergessen!).

Dürfte eigentlich funktionieren. Wenn die Seite verlassen wird, ist ja relativ wumpe, was mit der Variablen passiert. Aber wenn die Seite nicht verlassen wird, kriegste das auf jeden Fall mit.

Könnte aber natürlich zu Problem mit dem normalen Verlassen der Seite führen, aber vielleicht lässt sich da auch was machen. Beispielsweise die Funktion zum Pollen nach 5 Sekunden oder direkt nach dem Laden (und Du sicher sein kannst, dass es kein Framebrecher ist) abbrechen.
 
Dabei hat man das gleiche Problem wie bei DeathAngel2001s Vorschlag mit dem Confirm(). Die Aktionen werden zwar aufgerufen, aber nicht ausgeführt. Das Laden des Framebrechers wird nicht verhindert. Ich vermute, dass funktioniert wieder nur im alten Firefox (1.5).

Die einzige Möglichkeit, die ich bis jetzt hab um das Schließen zu verhindern, ist eine Alert-Box via ConfirmExit, bei der der Surfer bestätigen muss, ob die Seite geschlossen werden soll oder nicht.
Ein Verhindern des Schließens ohne Usereingabe gibts anscheinend nicht. Is ja auch irgendwo logisch, denn dann könnte man als Webmaster ja einen Code einbauen, der dafür sorgt, dass die Besucher die Webseite nie wieder verlassen können :D

Ich habs jetzt mit 2 Alert-Fenstern umgesetzt. Zuerst kommt ein einfaches confirm. Darauf, was der Surfer dabei auswählt, kann ich zugreifen und wenn er dann wählt, dass die Seite nicht geschlossen werden soll, kommt noch das ConfirmExit, womit dann der Framebrecher gestoppt wird. Mal sehn, ob sich das bewährt ;)

Gruß
Surferer
 
Ich meinte das eigentlich so, dass Du in confirmExit diesen Trigger setzst. Das sollte doch eigentlich funktionieren. Wenn ich nachher noch Zeit finde, teste ich das mal.

Und das mit dem Verhindern des Abbruchs ist wirklich nicht zu vermeiden. Und ich finde es aus dem von Dir genannten Grund auch ganz gut so. ;)
 
Ich verweise hier mal auf:
https://www.designerscripte.net/showthread.php?t=4905

Version 3 erkennt ob es ein Framebrecher war oder ob das Fenster geschlossen wurde.

Bezüglich der Popups im FF2.0 hab ich ja schon die frameset Idee in die Shoutbox geschrieben.

Mal als Erklärung:
Die Version 3 öffnet bei Framebrecherfund ein Popup, welches das gebrochene Fenster "repariert" und sich dann selber schliesst.

Das Problem dabei:
Man muss den Autosurf im Popupblocker für Popups freigeben, was im FF2.0 dazu führt, dass die Autosurfkampangen auch Popups öffnen dürfen.

Mein Lösungsvorschlag:
Autosurf in einem Frameset anzeigen und im Frameset auch die Framebrecher erkennung einbauen. (das ist sowiso die einfachste Möglichkeit die ich wüsste, das Script in JEDEN Autosurf einzubauen)

Das Frameset muss nun unter einer anderen Domain als der Autosurf liegen und die Domain unter der das Frameset liegt muss im Popupblocker für Popups freigegeben werden.
So sollte das Frameset Popups öfnen können, die AUtosurf Kampangen aber nicht.

Getestet habe ich das aber nur Lokal, also ein Frameset auf der Festplatte gestartet, welches den Autosurf anzeigt.
Meinen Lokalen PC habe ich dann für Popups freigegeben und die Surfkampangen haben keine Popups öffnen können.
 
Zuletzt bearbeitet: