使用JQuery或onbeforeunload来处理IE和FF浏览器的页面离开事件。

13

我正在使用javascript在Flex4应用程序的“index.template.html”文档中工作。我在Firefox中无法使用onbeforeunload。该应用程序在IE中完美运行,但完全相同的应用程序与FF不兼容。(请参见下文)

<script type="text/javascript">
window.onbeforeunload=before;
window.onunload=after;

function before(evt)
{
   var flex=document.$(application)||window.$(application);
   flex.unloadMethod(); //custom method to log out the user
}

function after(evt)
{

}
</script>

根据我的发现,FF似乎不会注册 onbeforeunload 事件,所以我发现流行的替代方法是使用 JQuery 进行绑定。因此,我删除了上面的代码并用下面的代码替换了它,但在 IE 和 FF 中用户尝试离开页面时它没有显示弹出窗口。看起来任何使用 JQuery 的人似乎都在做完全相同的事情,所以我不知道发生了什么。

<script type="text/javascript">
$(window).bind("beforeunload",function(event){
   return "This should create a pop-up";
});
</script>

最终,调用类似于第一段代码中的 "flex.unloadMethod" 会很好,但目前我只是试图让弹出窗口正常工作,以便知道我是否走在正确的轨道上。非常感谢任何见解。


你有 $(window).bind("beforeunload",funcation(event){ - 注意你拼错了 function - Ian
谢谢你告诉我。从另一台电脑复制代码,所以这不是问题。 - Brian
2个回答

30

尝试:

<script>
    $(window).on('beforeunload', function(){
        return "This should create a pop-up";
    });
</script>

示例: http://jsfiddle.net/AeztA/3/


谢谢回复,但我已经测试过了,它没有起作用。我也被告知不要使用警报来创建弹出窗口。从我的经验来看,它只是一个警报,所以它只有一个确定按钮(没有取消)。此外,您正在卸载时,如果他们正在退出我的页面,尝试注销某人将太晚了。 - Brian
我刚刚更新了我的代码(之前的代码在所有浏览器上都能运行,但在Chrome上无法正常工作)。现在它已经在我测试过的每个浏览器中都可以正常工作。 - Joe
我正在IE中测试你的新代码,但是当我更改URL或退出窗口时,弹出窗口不会出现。我需要导入什么东西吗? - Brian
你是否已经包含了查询?如果没有,请将此代码放置在其他代码的<script>标签之前:<script src="http//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> - Joe
4
好的,现在我明白了很多。我在一个封闭的环境中工作,无法从网上加载库。非常感谢您的帮助!我想为您点赞,但我需要15个积分。等我拿到积分后,我一定会回来点赞的。 - Brian

1

我想补充一点,就是在Firefox浏览器中不能使用空字符串。必须至少有一个空格,例如返回值。

var text = 'Exit Message';

$(window).on('beforeunload', function(){
    return " " + text;
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接