mit onbeforeunload-Ereignis, url ändern auf Auswahl bleiben Sie auf dieser Seite
Umschreiben der Frage -
Ich versuche, eine Seite, auf denen, wenn der Benutzer die Seite verlassen (entweder zu anderen link/website oder schließen Fenster/tab) möchte ich zeigen, die onbeforeunload
handeler sagen we have a great offer for you?
und wenn der Benutzer wählen, um leave the page
es sollten die normale Predigten, aber wenn er wählen stay on the page
ich brauche ihn, um es umleiten zu bieten Seite redirection is important, no compromise
. Für die Prüfung können umleiten, um google.com
Machte ich ein Programm wie folgt -
var stayonthis = true;
var a;
function load() {
window.onbeforeunload = function(e) {
if(stayonthis){
a = setTimeout('window.location.href="http://google.com";',100);
stayonthis = false;
return "Do you really want to leave now?";
}
else {
clearTimeout(a);
}
};
window.onunload = function(e) {
clearTimeout(a);
};
}
window.onload = load;
aber das problem ist, dass wenn er auf den link klicken yahoo.com
und wählen leave the page
er ist nicht yahoo, sondern google, statt 🙁
Mir Helfen !! Vielen Dank im Voraus
hier, wie Sie testen können, weil onbeforeunload funktioniert nicht auf iframe-gut
ich weiß, aber für seine Zwecke zu lernen nicht für real-Projekt als ux
Die "bestätigen " navigation" - Dialog ist willkommen in einigen Anwendungen. In Google Docs, zum Beispiel, wenn der Benutzer versucht, zu navigieren, bevor Sie eine auto-save abgeschlossen werden kann. Ich für eine, lieber nicht gestört werden durch ein "bestätigen " navigation" - Dialog als zu verlieren meine Arbeit.
Ich bin echt verwirrt von dieser Frage sind aber. Wenn der Benutzer wählt, um zu bleiben ... warum schicken Sie nicht irgendwo sonst? (Du bist nicht die Arbeit für Google ist, oder??)
es kann keine Verbindung jemand aus meiner Website oder jegliche promotion-Seite, das msg kann werden Sie wollen, um zu sehen, ein Angebot, auf der Seite bleiben kann, nehmen Sie ihn in die Seite und verlassen sollte normal funktionieren
InformationsquelleAutor Rohit Agrawal | 2013-05-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Lösung funktioniert in allen Fällen, mit browser zurück-Taste, Einstellung neuen url in der Adresszeile oder benutzen Sie die links.
Was ich gefunden habe, ist, dass die Auslösung onbeforeunload-handler nicht zeigen Sie das Dialogfeld befestigt onbeforeunload-handler.
In diesem Fall (bei der Auslösung erforderlich ist), verwenden Sie eine Bestätigung Kontrollkästchen, wenn der Benutzer die Nachricht. Diese Problemumgehung getestet in chrome/firefox und IE (7 bis 10)
http://jsfiddle.net/W3vUB/4/showhttp://jsfiddle.net/W3vUB/4/EDIT: set DEMO auf codepen, anscheinend jsFiddle nicht, wie Sie dieses snippet(?!)
BTW, mit
bing.com
durch google nicht erlauben keinen content mehr angezeigt wird, innerhalb iframe.http://codepen.io/anon/pen/dYKKbZ
Klick auf den link zeigt nicht alle alert 🙁
finden Sie in den aktualisierten Antworten und lassen Sie mich wissen,
funktioniert nicht... 🙁
seltsam, weil es funktioniert für mich. Aber was meinst du mit: 'funktioniert nicht.' ???
InformationsquelleAutor A. Wolff
Ist es besser, es zu Überprüfen, lokalen.
Schauen Sie sich die Kommentare und versuchen Sie, diese: LIVE DEMO
Und ändern Sie Ihre html-code zu diesem:
Prüfen Sie die Antwort wieder besser in firefox.
wenn ich versuche, ändern Sie die url mit der Adresse bar oder schließen der Fenster die Warnung nicht kommen
Hast du es testen in firefox? wenn Sie versuchen, um das Fenster zu schließen und lehnen Sie die Bestätigung für das schließen der Fenster (Annahme des Angebots). Sie werden umleiten google.com.
seine nicht öffnen Bestätigungs-block für mich in firefox
InformationsquelleAutor Siamak A.Motlagh
Nach dem spielen eine Weile mit diesem problem habe ich Folgendes. Es scheint zu funktionieren, aber es ist nicht sehr zuverlässig. Das größte Problem ist, dass der timed-out-Funktion muss auf der Brücke eine ausreichend große Zeitspanne für den browser, um eine Verbindung zu der url im link-href-Attribut.
jsfiddle zu demonstrieren. Ich verwendet bing.com statt google.com wegen
X-Frame-Options: SAMEORIGIN
Dass der unzuverlässige Teil 🙂 Sie müssen spielen mit dem timeout Millisekunden, um ein richtiges Ergebnis.
1400
arbeitete für mich, aber vielleicht müssen Sie es auf einen höheren Wert.so, dass das gleiche, was ich schon habe, ich brauche, um zu lösen, und für höhere Werte, wenn Sie wählen, um zu bleiben auf der Seite , wird es gehen, später zu bing.com
InformationsquelleAutor Bart
Versuchen die folgende, (fügt eine Globale Funktion, die prüft, der Staat die ganze Zeit obwohl).
Behoben, sorry 🙂
immer noch der gleiche Fehler ich habe auf, versuchen Sie dann die Seite verlassen, sollte es gehen yahoo.com aber anstatt zu gehen google.com
Es war ein timing-Problem. Ich schrieb die ganze Sache.. in jquery. Hoffe, das hilft jetzt funktioniert es für mich jedes mal... ändern kann man die Wartezeit auf 10 Sekunden, und würde wahrscheinlich mehr rubust... jsfiddle.net/pb7th/41
wenn u erhöht die Zeit, die eine Menge dann auf auf probieren Sie es aus und klicken auf auf der Seite bleiben wird, gehen Sie zu google nach 10 Sek., so verwenden Sie denken, dass es keine Aktion durchführen, gleiche problem, ich war anfangs mit Bezug auf den timer
InformationsquelleAutor WhyMe
InformationsquelleAutor Tareq
Ich denke, du bist verwirrt über den Verlauf der Ereignisse auf, bevor Sie entladen die Seite ist immer noch die Interaktion, die return-Methode ist eine Verknüpfung für die Rückkehr "confirm()", die Rückkehr der bestätigen jedoch nicht behandelt werden kann, so kann man nicht wirklich untersuchen, die Reaktion des Nutzers und entscheiden Sie, welchen Weg zu gehen, die Antwort werden sofort durchgeführt, als "ja" verlassen der Seite, oder auf "Nein" lassen Sie keine Seite...
Beachten Sie, dass Sie bereits geändert haben, die Quelle der url an Google, bevor Sie der Benutzer aufgefordert, diese Aktion kann nicht rückgängig gemacht werden... es sei denn vielleicht, Sie können setimeout zu so etwas wie 5 Sekunden (dann aber, wenn der Benutzer nicht schnell genug, es nicht abholen seine Antwort)
Edit: habe ich gerade gemacht, es 5000, Zeitraffer und es geht immer an Yahoo! Nie nimmt die google ändern.
Ich habe nicht gesagt, es kann nicht getan werden... aber wie auch immer Ihre Lösung, wenn ich auf die Interne, passiert nichts... der andere link ist ein einfaches click-Ereignis, was nicht, was die Frage war.
interner link auf div-element (unten auf derselben Seite), es ist ein interner link mit hash '#'. Es ist nur da, um zu beweisen, dass Sie noch interne links. Wenn Sie auf den link klicken, 'versuchen Sie es' du wirst sehen, das ist genau das, was OP sucht.
mmm, wenn die Frage war, über den Umgang mit einem einfachen Klick dann warum verwenden Sie "onbeforeunload" überhaupt? dein Beispiel wirklich, wirklich, Kumpel, tut sich nichts wenn ich auf die interne.
jsfiddle.net/W3vUB/4/show Hoffe, es wird mehr einfach zu verstehen jetzt...
InformationsquelleAutor Ayyash