询问用户何时尝试关闭浏览器选项卡

时间:2016-05-11 14:32:26

标签: javascript jquery ruby-on-rails web browser

当用户试图关闭浏览器标签时,我需要询问他是否要填写调查问题。如果他愿意,它应该将他重定向到谷歌形式,如果他不想,它应该关闭标签。

我尝试了window.onbeforeunload但是每次点击页面按钮时都会显示确认窗口,但我只是在尝试关闭标签时才会触发它。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

只要用户因任何原因离开您的网页,就会触发beforeunload事件。

jQuery(window).bind(
    "beforeunload", 
    function() { 
        return confirm("Do you really want to close?") 
    }
)

答案 1 :(得分:1)

我假设你想要做的是当用户表示有意离开时显示某种弹出窗口。

这可以通过使用javascript'mouseout'事件来实现。即如果鼠标离开浏览器窗口(例如用户关闭选项卡,窗口或单击另一个选项卡等),则会触发您的调查。

显然并不总是有效 - 用户可能会尝试例如点击浏览器菜单项,在这种情况下您的调查将被触发。此外,我不认为它适用于触摸设备。

但如果你能忍受这些类型的纠结,那么这就是你需要的代码。

// Set up an event listener to capture exit intent
function addEvent(obj, evt, fn) {
    if (obj.addEventListener) {
        obj.addEventListener(evt, fn, false);
    }
    else if (obj.attachEvent) {
        obj.attachEvent("on" + evt, fn);
    }
}

// Trigger exit intent on mouseout event
addEvent(document, 'mouseout', function(evt) {
    if (evt.toElement == null && evt.relatedTarget == null ) {
        console.log('Let's do some magic here');
    };
});