0

我正在尝试执行以下代码

window.onunload = function () { 
     var sTag = document.createElement('script'); 
     sTag.src = 'mysrc'; 
     document.getElementsByTagName('head')[0].appendChild(sTag); 
     return false; };
}

它似乎在 FF 中工作正常,但在 chrome 中,一旦触发 unload 事件,我就会将下载状态取消。我在 SO 中看到了一些带有 ajax 解决方案的帖子,但我正在跨域 iframe 中执行此脚本。我只是想记录我的 api 在每个访问者的页面中存在的时间。因此,我正在发送一些有关卸载页面的时间日志信息。上面有什么解决方法吗?

4

1 回答 1

0

出于您所描述的目的,您可以将该脚本加载到您的页面或父窗口中(您是说它是一个 iframe 对吗?)并在 window.unload 上运行一个函数:

window.onunload = function(){
   window.top.logtime(); // if it is in the parent, or 
   window.logtime() //if it is in the same window
};

并且不要返回 false,unload 事件无法取消。(在最好的情况下,用户会收到一个警告对话框,该对话框将覆盖 return false 语句。)

我认为它的不同之处在于它执行新功能的速度有多快,在身体被卸载之前。操作 DOM 肯定比调用慢得多。

于 2012-11-26T07:49:15.810 回答