解决方法
我会使用onbeforeunload而不是卸载,以便给你最大的时间.但是,如果您计划此时向服务器发出请求(或异步执行任何操作),您可能会发现自己处于竞争状态,有时请求会通过,有时则不会.
发生这种情况是因为页面在卸载时停止处理您的请求(或其他异步操作).这几乎可以立即在现代浏览器中使用,并且在旧版IE中相当快.因此,在任何unload或beforeunload事件中执行某些操作很少有意义.
如果您尝试将计时器信息传递到下一个URL,则可能只需在单击时修改URL.
$('a').click(function(){ this.href=this.href + "#timer=" + timerVar; });
Google Analytics通过向所有链接添加延迟来解决此问题:
$('a').click(function(){ var that = this; setTimeout(function(){ window.location=that.href; },100); return false; });
这只会让您的页面有额外的时间来关注链接.虽然这并不是万无一失,但这对谷歌来说并不重要,因为分析有些短暂(并且他们也将url params用于其他更重要的事项(例如广告系列)).