在浏览器窗口/选项卡上关闭打开自定义对话框

时间:2014-04-17 11:59:52

标签: jquery javascript

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

尝试使用以下代码实现相同的功能。

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;

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

2 个答案:

答案 0 :(得分:1)

使用此功能强制您的用户访问您的网站,这是您可以做的事情除此之外的任何事情都是不可能的。

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

答案 1 :(得分:1)

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);
}());