Ist es möglich, DOM in beforeunload-Handler zu ändern? Chrome scheint DOM-Änderungen anzuwenden nach der Benutzer gedrückt "Bleib" in Browser-Warnung über das Verlassen der Seite, und ich möchte einen Teil der Seite ausgeblendet werden während dieser Alarm sichtbar ist.DOM in beforeunload in Chrome ändern
Siehe Demo:
<script>
window.onbeforeunload = function(e){ document.getElementById('a').style.display = "none"; e.returnValue = "adios";}
</script>
<div id=a >This text should disappear when the user tries to leave the page</div>
https://jsfiddle.net/qmatic/6sLp7rmq/
Die einzige Lösung, die ich bisher habe, ist das div zu Opazität animieren: 0 und einen Code in setInterval zu haben, die diese Animation ständig zurücksetzt. Während der Code läuft, ist das div immer sichtbar. Chrome stoppt den gesamten Code, wenn eine Warnung angezeigt wird. Die Animation wird schließlich bis zum Ende ausgeführt und das div ausgeblendet. Aber es ist eine schreckliche Lösung - ich aktualisiere ständig das DOM, um die Animation zurückzusetzen. Hat jemand bessere Ideen?
Haben Sie versucht, css ** vor ** zu ändern, indem Sie den Event-Handler anhängen, anstatt es innerhalb des Handlers zu tun? – Gunnar
Wann sollte ich es tun? Ich reagiere auf den Benutzer, der versucht, die Seite zu verlassen. Woher weiß ich, dass der Benutzer versucht, die Seite zu verlassen (z. B. indem er etwas in die Adressleiste schreibt), bevor er entlädt? – Anton