【问题标题】:Chrome onbeforeunload event when tab (or browser) closes选项卡(或浏览器)关闭时的 Chrome onbeforeunload 事件
【发布时间】:2012-06-09 20:29:27
【问题描述】:

我正在尝试在用户离开(关闭)浏览器或页面时运行一个函数,并且我已经让它在除 Chrome 之外的所有浏览器中运行。

如果我离开页面,Chrome 会成功运行该功能,但如果我关闭选项卡或完全关闭浏览器,则不会运行该功能。

我最后运行的函数会创建一个图像并将一些数据发送到我的服务器(类似于任何分析报告)示例:img.src="url?data=yyy"。此图是用js动态创建的。

有人可以阐明问题可能是什么吗? 我将其范围缩小到几个原因:

1) 选项卡关闭时我没有使用正确的事件(即不是 beforeunload)

2) Chrome 实际运行该功能,但由于浏览器/页面关闭,图像未发送。

感谢任何帮助。谢谢。

示例代码如下:

if(window.addEventListener){
   window.addEventListener("beforeunload", page_unload, false);         
}
function page_unload(){
    var img     = new Image();
    var img_src = "http://www.myurl.com?data=yyy"
    img.src = img_src;
}

【问题讨论】:

  • 每个 chrome 选项卡都在自己的进程中运行,对吗?因此,如果您在 tab close 上运行了某些东西,即使它运行了,包含正在运行的代码的进程也会停止。否则你可能会看到一堆挂着的镀铬标签打开,这是我以前从未见过的。
  • 对,每个选项卡都是它自己的进程..与该进程关联的任何代码也会结束是有意义的。 Firefox 优雅地处理了这种情况并做了我需要它做的事情,所以我希望我错过了一些关于 chrome 的东西
  • 您尝试做的事情是不可能的。 onbeforeunload 事件实际上只能用来抛出一个对话框来鼓励用户留在你的页面上(通过返回文本来提示用户)——当事件触发时,你没有任何时间留下一个 HTTP 请求。
  • hmmm 很公平....你知道为什么 firefox 在这种情况下可以工作而其他人不能吗?它只是困扰我,一个会工作,另一个不会......
  • 我推测,因为进程不会死,Firefox 更优雅地处理选项卡关闭。在这种情况下,优雅是复杂的代名词。

标签: javascript google-chrome onbeforeunload


【解决方案1】:

我有一个与 Chrome 相关的问题,并使用 jQuery 解决了它:

$(window).unload( function() {
   //Call your function
   page_unload();
});

由于某些原因,在 JavaScript beforeunload 无法正常工作的某些情况下,jQuery 卸载事件在 Chrome 中效果更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多