【发布时间】:2012-07-18 20:33:55
【问题描述】:
我正在使用JFileUpload 小程序构建一个站点,并希望以某种方式处理页面的关闭。取消小程序时调用 JSTransferCancelled。以下代码是我用来处理这些事件的代码,它适用于除 IE 之外的所有浏览器。
function JSTransferCancelled(){
bCancel=false;
$.post("cancel.php");
self.close();
}
$(window).load(function(){
$(window).bind('beforeunload',function(){
document.uploader.setEnabled(false);
if(bCancel){ document.uploader.cancel();}
});
});
我在主站点的新选项卡中打开带有上传器的页面,并希望在他们取消上传时关闭它。但是,当我在 IE 中打开选项卡时,我立即收到警告说 The webpage you are viewing is trying to close this tab. Do you want to close this tab? [OK] [Cancel] 并且我的上传器由于 setEnabled(false) 调用而无法访问,并且由于 cancel() 调用而被取消。
我正在寻找的是相同的功能,只是在 IE 中。我知道 IE 中有很多 很多 问题,例如 onbeforeunload 等事件会触发以响应不同的事情,但我已经检查了我网站中的所有这些问题,但没有发现任何问题。我没有在网上遇到任何可以解决我遇到的问题的东西。
我尝试将 onbeforeunload 函数包装在不同的东西中,例如上面的 load 函数以及 $(document).ready(),但它们要么给我同样的问题,要么产生新的问题。
【问题讨论】:
-
Microsoft's Documentation page 显示将调用
beforeunload事件的触发器,因此您可能需要查看它们,看看您的代码是否正在执行其中任何一个。顺便说一句,该页面中我最喜欢的一行是“这里没有适用的标准”。这应该是 IE 开发团队的座右铭。 -
@MrOBrian 我可能浏览该页面的次数比其他任何页面都多。当我与与我一起工作的其他人交谈时,他们嘲笑 onbeforeunload 触发的荒谬事情。文档.write()?是的,这会卸载页面。点击锚点?但当然,我们要离开这个页面!
-
我想知道您使用的上传程序是否执行 document.write 或该页面上列出的任何其他无数触发器。将其更改为更像他们页面上的示例怎么样?也许尝试
window.onbeforeunload = ...而不是$(window).bind? -
@MrOBrian,先生,你一针见血。上传者确实调用了 document.write,我什至没想到那里看。把自己投入到答案中,我很乐意给你信用。
标签: javascript jquery internet-explorer-9 onbeforeunload