2012-12-28 219 views
1

其实,这是我最后的question的延续。我仍然面临问题,因为当我刷新浏览器,无论是卸载或beforeunload也解雇了我只希望他们在浏览器关闭时。只是在我脑海中想要使用window.outerHeight或window.innerHeight,但仍然无法弄清楚如何做到这一点。任何建议/片段?提前致谢。检测刷新浏览器卸载/ beforeunload当浏览器关闭

+3

至于服务器或浏览器而言,亲密和导航离开该页面是同义的。 –

+0

@BradChristie:如果它的代名词,然后就会有没有机会只对收盘浏览器隔离卸载/ beforeunload事件? –

+0

正确的假设。你可以重新访问,因为服务器会执行一个新的动作,但如果什么都没有发生,你就无法捕捉到这个(关闭窗口)的缺席。这就是为什么网站使用“上次访问后的时间”来确定谁仍然“在线”。 –

回答

1

据我知道这是不可能检测到从浏览器中刷新单独关闭浏览器,因为浏览器不提供网页(窗口)与信息。就你的页面和它的Javascript代码而言,这两个是一样的。

因为它是你需要的,得到它是使用一些能够访问这些信息,即只有这样的浏览器信息。一个浏览器插件。但是,您需要为每个浏览器创建一个插件,并让每个用户安装它。由于我非常怀疑你会发现这是值得的,你的问题的真正答案(尽管可能会令人沮丧)是:停止尝试检测刷新与关闭并继续前进。

+0

其实,我只是意识到我说的并不完全正确:你*可以*使用本地存储来跟踪最后一页加载的时间('var localStorage.lastLoad = new Date()'),然后检查那个时间在页面加载;如果'new Date()'足够接近'localStorage.lastLoad',则可以推断发生了重载。但是,除非他们重新加载,否则这仍然不会让你对这些信息做任何事情,所以这可能不是很有帮助。 – machineghost

+0

你能否给出更确切的片段?我仍然不明白你的观点。在此先感谢 –

+0

我的评论是更多的一边试图尽可能事实准确;这不是一个真正的解决方案。当有人离开你的页面(即onBeforeUnload)时,它*不会*告诉你他们是否正在重新加载,转到不同的页面或完全关闭浏览器。它会告诉你的是,当页面首次加载时,用户只是刷新或第一次来到页面(即使这样,它只是一个猜测)。 – machineghost