我想跳过默认的弹出窗口,该弹出窗口将出现在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";
});

09-28 05:57