如何确定点击Chrome中的链接是否导致onbeforeunload

时间:2010-01-31 20:25:58

标签: javascript google-chrome

问题如下。

onbeforeunload就像在Firefox中的魅力一样,并且e.explicitOriginalTarget.activeElement显示了被点击的元素导致它。

window.onbeforeunload = function(e){
if (e.explicitOriginalTarget.activeElement){
    return;
}

在Chrome中,当您关闭窗口或单击链接时,“e”对象看起来相同。 有没有办法确定chrome中的目标?

3 个答案:

答案 0 :(得分:5)

迟到的反应,我知道,但你总是可以尝试这个(确认在IE中工作):

target = document.activeElement;
alert(target.href);

只是向您展示您可以获取活动元素,然后解析href以找出正在发生的事情。

答案 1 :(得分:2)

另一种选择:

$("a").on("click", function(){
  window.last_clicked = $(this);
});

然后只需在last_clicked处理程序中引用onbeforeunload即可。这是我发现的最佳跨浏览器兼容解决方案,因为document.activeElement不可靠。

答案 2 :(得分:0)

没有。事件的目标是窗口或文档,而不是链接。与Firefox不同,Chrome在事件对象上没有提供有用的奖励属性。你最好的选择可能是在主体上有一个点击事件处理程序来检查事件目标,看它是否是一个链接,但这不是万无一失的:链接可能有自己的点击事件处理程序,可以阻止默认操作,或者用户可能使用键盘关注链接,在这种情况下不会触发任何点击事件。