'beforeunload'在Opera中没有触发

时间:2014-03-27 12:15:18

标签: javascript jquery opera blur

我需要在生活我的网站之前触发一些方法。我正在使用

$(window).blur(blurFunc); 

成功用于除Opera之外的所有浏览器,这不会触发此事件。

我做了一些研究发现

$(window).bind('beforeunload',blurFunc); 

可能有用,确实这对我来说在一个网站上有用。但是,当在另一个站点中实现此事件时,此事件未被触发(我可以想到的站点之间没有任何差异(除了我检查过的jquery版本而且没有影响)。

如何在Opera中生活页面之前触发功能? - 要么在前载或模糊,要么任何其他功能都没问题......

Opera版本为12.16

1 个答案:

答案 0 :(得分:0)

您不想要blur事件。它可能会或可能不会发射,并且可能会在您不想要的时候发射。

使用beforeunload批次取决于blurFunc中发生的事情,您还没有告诉我们。您可以在beforeunload处理程序中执行的操作非常有限。人们绊倒的一件大事是,如果你试图做一个ajax调用,如果它是一个异步调用(默认),它就不会工作。坦白说,我也不建议依赖同步,但我听说它们运作良好。

beforeunload是一个非常不寻常的事件。如果你想在用户离开页面时提示用户,我只是通过直接分配处理程序来完成jQuery,

window.onbeforeunload = function() {
    var msg = "Really leave?";
    if (window.event) {
        window.event.returnValue = msg;
    }
    return msg;
};

请注意,我们实际上并未显示该消息,我们只是将其作为该函数的返回值(以及该事件的returnValue属性)传递给浏览器,如果我们这样做的话在IE上)。这告诉浏览器用通常的" stay"来显示消息。或者"离开"选项。