2016-07-11 7 views
2

Ich habe die gleiche Funktion ist mehrere Standorte einschließlich SO gesehen. Ich versuche das auch zu erreichen. Hier ist der Code so weit.Alert auf Browser Zurück-Taste klicken oder Seite aktualisieren

<script> 
      var myEvent = window.attachEvent || window.addEventListener; 
      var chkevent = window.attachEvent ? 'onbeforeunload' : 'beforeunload'; 

      myEvent(chkevent, function(e) { // For >=IE7, Chrome, Firefox 
       var confirmationMessage = ' '; 
       (e || window.event).returnValue = confirmationMessage; 
       return confirmationMessage; 
      }); 
     </script> 

Das Problem ist obige Code funktioniert gut in Chrom und IE, aber als ich versuchte, auf Firefox zu testen es funktioniert nicht. Ich habe Firebug überprüft, aber es gibt keinen Fehler. Ich habe die Firefox aktualisiert und Version 47.0.1.

Aber Problem nicht behoben.

Jeder Rat wäre hilfreich.

Jungs, wenn Sie einen besseren Code haben, dann wäre es auch hilfreich.

+0

Verwendung onbeforeunload display() – JYoThI

Antwort

1

Nun ich diesen Code getestet und es funktioniert auf Firefox und Chrome auch mit Firebug-Konsole geschlossen:

 <script> 
      window.onbeforeunload = function (e) { 
       var message = "Are you sure ?"; 
       var firefox = /Firefox[\/\s](\d+)/.test(navigator.userAgent); 
       if (firefox) { 
        //Add custom dialog 
        //Firefox does not accept window.showModalDialog(), window.alert(), window.confirm(), and window.prompt() furthermore 
        var dialog = document.createElement("div"); 
        document.body.appendChild(dialog); 
        dialog.id = "dialog"; 
        dialog.style.visibility = "hidden"; 
        dialog.innerHTML = message; 
        var left = document.body.clientWidth/2 - dialog.clientWidth/2; 
        dialog.style.left = left + "px"; 
        dialog.style.visibility = "visible"; 
        var shadow = document.createElement("div"); 
        document.body.appendChild(shadow); 
        shadow.id = "shadow"; 
        //tip with setTimeout 
        setTimeout(function() { 
         document.body.removeChild(document.getElementById("dialog")); 
         document.body.removeChild(document.getElementById("shadow")); 
        }, 0); 
       } 
       return message; 
      }; 
     </script> 

Ich fand dieses Skript crossbrowser-onbeforeunload.js. Es ist Cross-Browser-kompatibel.

+0

Lass mich es versuchen. Wie auch immer, danke für deine Antwort. Abgestimmt. – Ironic

2

Verwenden Sie den folgenden Code, Getestet habe ich es in Firefox und funktioniert gut:

window.addEventListener("beforeunload", function (e) { 
    var confirmationMessage = "\o/"; 

    (e || window.event).returnValue = confirmationMessage; //Gecko + IE 
    return confirmationMessage;       //Webkit, Safari, Chrome 
}); 
+0

Dank. abgestimmt. – Ironic

+0

Ich habe versucht, Firefox, aber es funktioniert nicht. – Ironic

+0

Entfernen Sie alle anderen Code und fügen Sie dies einfach im Skript-Tag und es sollte funktionieren – shivgre

0

window.onbeforeunload ist ein guter Weg zu gehen. Aber es scheint in Firefox nur zu funktionieren, wenn der Benutzer eine Interaktion mit der Website hat (klicken oder scrollen). Andernfalls wird die Funktion nicht ausgelöst. Chrome, auf der anderen Seite funktioniert super.

Hinweis: unerwünschte Pop-ups zu bekämpfen, einige Browser-Anzeige nicht Aufforderungen in beforeunload Ereignishandler erstellt, wenn die Seite mit interagierten ist; einige sich nicht an alle

Documentation

Verwandte Themen