Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 询问用户何时尝试关闭浏览器选项卡_Javascript_Jquery_Ruby On Rails_Web_Browser - Fatal编程技术网

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

Javascript 询问用户何时尝试关闭浏览器选项卡,javascript,jquery,ruby-on-rails,web,browser,Javascript,Jquery,Ruby On Rails,Web,Browser,当用户试图关闭浏览器选项卡时,我需要问他是否要填写调查的问题。如果他想,它应该将他重定向到谷歌表单,如果他不想,它应该关闭标签 我尝试了窗口。onbeforeunload但每次单击页面按钮时都会弹出确认窗口,但我只需要在尝试关闭选项卡时触发确认窗口 有什么建议吗?每当用户出于任何原因离开您的页面时,beforeunload事件就会触发 jQuery(window).bind( "beforeunload", function() { return confir

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

我尝试了
窗口。onbeforeunload
但每次单击页面按钮时都会弹出确认窗口,但我只需要在尝试关闭选项卡时触发确认窗口


有什么建议吗?

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

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

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

这可以通过使用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');
    };
});

@8质子我尝试了
窗口。onbeforeuload
但每次点击页面按钮时都会弹出确认窗口可能重复关闭选项卡/窗口时没有特定事件。您可以得到的最好结果是,用户单击页面按钮时,
beforeunload
会触发,但我需要仅在尝试关闭选项卡时才会触发。