【问题标题】:Ask user when he is trying to close browser tab询问用户何时尝试关闭浏览器选项卡
【发布时间】:2016-05-11 14:32:26
【问题描述】:

当用户尝试关闭浏览器选项卡时,我需要问他是否要填写调查表。如果他愿意,它应该将他重定向到谷歌表单,如果他不想,它应该关闭标签。

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

有什么建议吗?

【问题讨论】:

  • @8protons 我试过window.onbeforeunload,但每次点击页面按钮都会弹出确认窗口
  • 没有特定于关闭选项卡/窗口的事件。你能得到的最好的是thatthis

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


【解决方案1】:

每当用户出于任何原因离开您的页面时,都会触发 beforeunload 事件。

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

【讨论】:

  • beforeunload 在用户点击页面按钮时触发,但我需要仅在尝试关闭选项卡时触发它。
【解决方案2】:

我假设您想要做的是在用户表示打算离开时显示某种弹出窗口。

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

显然并不总是有效 - 例如,用户可能会尝试单击浏览器菜单项,在这种情况下您的调查会被触发。我也不相信它会在触摸设备上工作。

但是,如果您可以忍受这些类型的问题,那么这就是您需要的代码。

// 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');
    };
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 2012-08-19
    相关资源
    最近更新 更多