【问题标题】:Open a custom dialog on browser window/tab close在浏览器窗口/选项卡关闭时打开自定义对话框
【发布时间】:2014-04-17 11:59:52
【问题描述】:

我正在尝试在浏览器窗口/标签关闭时添加一个带有确定/取消的调查确认框。 我需要在单击确定按钮时将用户重定向到调查链接。

尝试用下面的代码来实现。

var leave_message = 'Wait! Would you like to respond to a quick Survey?'

function bye(e) {
    if (!e) e = window.event;   
    e.cancelBubble = true;

    if (e.stopPropagation) {
        e.stopPropagation();
        e.preventDefault();
    }
    e.returnValue = leave_message;

    if (confirm(leave_message)) {
        window.open("www.surveylink.com");
    }
}

window.onbeforeunload = bye;

请建议上面的代码不起作用。

【问题讨论】:

  • 使用 var ans=confirm(leave_message); if (ans==true){//重定向}
  • 在关闭窗口/选项卡时无法执行任何代码,这是违反安全规定的。广告软件曾经这样做是为了阻止您摆脱他们的广告。
  • 你永远不会得到答案,因为它不可能stackoverflow.com/questions/276660/…
  • @PratikJoshi 和你原来的评论有点矛盾,不是吗?
  • @RGraham,我给了他解决方案

标签: jquery javascript


【解决方案1】:

使用它来强迫您的用户访问您的网站,这是您可以做的大多数其他事情是不可能的。

$(window).bind('beforeunload', function() {
                      window.open("http://www.surveylink.com");
      return 'Do you really want to leave?' ;
});

【讨论】:

    【解决方案2】:

    onbeforeunload 不是常规事件。如果您在 onbeforeunload 事件处理程序中返回一个字符串,则会强制要求您留在页面上的对话框。如果用户单击该对话框中的“停留在页面上”按钮,页面的卸载将被中止。 (更多详情,例如,https://developer.mozilla.org/en-US/docs/Web/API/Window.onbeforeunload

    我解决这个问题的方法是设置一个变量来指示页面开始卸载,然后定期检查该变量以确定卸载是否中止:

    (function () {
        var triedToUnload = false;
        window.onbeforeunload = function (e) {
            triedToUnload = true;
            return "Wait! Would you like to respond to a quick Survey?";
        };
        window.setInterval(function () {
            if (triedToUnload) {
                window.open("www.surveylink.com");
            }
        }, 500);
    }());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      相关资源
      最近更新 更多