如何通过单击关闭按钮或页面刷新或通常导致onbeforeunload导致的事件来确定是否导致onbeforeunload?
这是一个片段:
window.onbeforeunload = function( e ){
if( !e ) e = window.event;
// insert code to determine which is the source of the event
}
请帮帮我。
答案 0 :(得分:5)
参考各种文章,做一些试验和错误,最终开发出这个想法,这对我来说非常适合我希望它发生的方式。逻辑很简单它实现也很简单。想法是检测通过关闭浏览器触发的卸载事件。在这种情况下,鼠标将离开窗口,指出关闭(' X')按钮。
$(window).on('mouseover', (function () {
window.onbeforeunload = null;
}));
$(window).on('mouseout', (function () {
window.onbeforeunload = ConfirmLeave;
}));
function ConfirmLeave() {
return "";
}
ConfirmLeave函数会弹出默认消息,如果有需要自定义消息,则返回要显示的文本而不是空字符串
看看这是否有帮助,:))
答案 1 :(得分:2)
据我所知,无法确定导致onbeforeunload
的原因。无论是关闭浏览器还是其他方式,窗口即将关闭时都会触发该事件。
答案 2 :(得分:0)
如果按下关闭按钮,e.clientY
的值为负。对于其他可能的来源,我怀疑是否有解决方案。
window.onbeforeunload = function() {
var e = window.event;
alert(e.clientX + " / " + e.clientY);
}
答案 3 :(得分:0)
我搜索了类似的东西,但结果空手而归。 所以我尝试做对立
我们可以识别除浏览器事件之外的所有事件。 请参阅下面的(未经测试的)代码段。
var target = $( e.target );
if(!target.is("a, :button, :submit, :input, .btn, .bulkFormButton")){
//Your code for browser events)
}
$("form").submit(function () {
//Your code for browser events)
});
这对我有用,但仍有一些事件未得到处理。 我正在寻找那些。 如果有人对它们有所了解,请分享。