我想跳过默认的弹出窗口,该弹出窗口将出现在beforeunload
事件上,并且想要显示我自己的模式,该模式要求用户提供有关浏览器/选项卡关闭的反馈。在这种模式下,如果用户单击“确定”,那么我想将用户重定向到我的反馈页面,如果用户单击“否”,则应关闭特定选项卡。有没有办法做到这一点?
最佳答案
如您在此处阅读的内容:https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload,您可以将event.returnValue
事件的beforeunload
更改为自定义字符串。像这样:
window.addEventListener("beforeunload", function( event ) {
event.returnValue = "Don't leave!";
});
用户离开当前页面时,这将打开一个确认对话框。
您可以在此事件中打开模式窗口,但这不会停止用户表单的离开,因此不会看到新内容。
当然,不能取消
unload
事件(https://developer.mozilla.org/en-US/docs/Web/Events/unload)并且UI交互无效(window.open,警报,确认等)所以我认为最接近的它可以得到它:http://jsfiddle.net/s6qWr/
var $modal = document.getElementById("modal");
window.addEventListener("beforeunload", function(event){
$modal.classList.add("visible");
event.returnValue = "Please tell us about your experience";
});