当用户关闭窗口时,Onbeforeunload不会在IE中触发
Onbeforeunload not firing in IE when user closes window
我通过绑定所有输入字段的'change'事件来监视表单中的每个字段的更改,并在任何更改时设置标志。
然后我绑定到窗口。Onbeforeunload并检查该标志,如果设置了该标志则返回警告。根据Jquery API文档,我直接绑定到window。Onbeforeunload和$(window)孰轻孰重
我有以下代码:
$(':input').change(function(){
if($('#editObject_blah').attr('value') == 0){
$('#editObject_blah').attr('value',1)};
}
);
window.onbeforeunload=verifyexit;
function verifyexit() {
if($('#editObject_blah').attr('value') == 1){
return'You have not saved your changes!';
}
};
编辑:元素editObject_blah实际上是这样的:
<form id="editObject_blah" onSubmit="return false;" value=0>
在Firefox和Chrome中可以正常工作,但在IE 7中无法捕获用户关闭浏览器窗口。
我应该注意到,上面的代码是通过eval()作为ajax请求的结果调用的,而不是通过内联脚本标记加载的。我不认为这应该有什么不同,但这就是我在这里问的原因。谢谢。
你不应该使用".attr()"来获取"value"属性:
if ($('#editObject_blah').val() == 1) {
return "whatever";
}
如果处理程序没有返回字符串,则浏览器认为用户关闭窗口没有问题。
如果这不是一个<input>
,那么你可能应该用".data()"来存储标志。要做到这一点,您只需为标志选择一个名称:
$(':input').change(function(){
$('#editObject_blah').data("changed", 1);
});
function verifyexit() {
if($('#editObject_blah').data('changed') == 1){
return "You have not saved changes yet!";
}
}
相关文章:
- 为什么这在IE中的工作方式与在Firefox中不同
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- jQuery blueimp文件上传:将N-1个文件上传到IE中的服务器
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 设置倒计时计时器,IE出现问题
- 仅在IE中,javascript中的时区名称不正确
- 在IE中加载Firebug Lite时出现问题
- 在 Vaadin 7 中创建的 onbeforeunload 函数返回空字符串在 IE 10 中仍然显示提示
- 锚定“javascript:void(0)”导致window.onbeforeunload在IE上触发
- firefox32.0.3和IE中的onbeforeunload处理程序/函数出现意外行为
- 带有ajax的onBeforeUnload不适用于IE
- IE和FF使用JQuery或onbeforeunload
- 在IE中,onbeforeunload事件是为那些没有卸载页面的链接触发的
- 无法在IE中解除onbeforeunload的绑定
- onbeforeunload消息出现两次(ie浏览器)
- 当用户关闭窗口时,Onbeforeunload不会在IE中触发
- window.onbeforeunload在IE中激发部分回发事件
- window.onbeforeunload在IE中不起作用
- 在IE中onbeforeunload的默认行为是什么?