Javascript Safari不让函数在页面卸载之前完成? 函数日志(名称、值) { push({'name':name,'value':value}); } 函数flush() { 对于(i=0;i
我正在编写一些跟踪用户交互的代码,以查找页面上的热点。大部分已经完成了,并且可以在大多数浏览器上运行,但我目前在Safari 5.0.5/Mac 10.6上遇到了难题(顺便说一句,它也可以在Windows XP上通过Safari 5.0.1进行复制)。给我带来困难的部分是页面传输过程中的链接点击。例如,下面的代码将我带到someotherpage.html:Javascript Safari不让函数在页面卸载之前完成? 函数日志(名称、值) { push({'name':name,'value':value}); } 函数flush() { 对于(i=0;i,javascript,dom,safari,osx-snow-leopard,Javascript,Dom,Safari,Osx Snow Leopard,我正在编写一些跟踪用户交互的代码,以查找页面上的热点。大部分已经完成了,并且可以在大多数浏览器上运行,但我目前在Safari 5.0.5/Mac 10.6上遇到了难题(顺便说一句,它也可以在Windows XP上通过Safari 5.0.1进行复制)。给我带来困难的部分是页面传输过程中的链接点击。例如,下面的代码将我带到someotherpage.html: function log(name, value) { mylog.push({'name':name, 'value':valu
function log(name, value)
{
mylog.push({'name':name, 'value':value});
}
function flush()
{
for (i = 0 ; i < mylog.length ; i++){
url_str += '&n[]=' + mylog[i].name + '&v[]=' + mylog[i].value;
}
url_str += '&r='+Math.floor(Math.random() * 100000);
var img = new Image();
var url = 'http://somedomain.com/pixel.php?' + url_str;
img.src = url;
}
if (window.attachEvent)
window.attachEvent('onunload', flush);
else if (window.addEventListener)
window.addEventListener('unload', flush, false);
其他页面
该网站在所有浏览器中都会将我带到someotherpage.html,但只有Safari 5.0.5/Mac 10.6没有显示日志中单击的链接。在Safari检查器中执行一些控制台检查后,我发现Safari出现了“加载资源失败”错误。我怀疑这是因为虽然可以调用URL,但浏览器已决定继续(?)
在任何情况下,我都尝试过beforeunload事件,并使用setTimeout延迟页面卸载。我是
考虑完全更改HTML表单,但这将是一项相当大的工作。尽管如此,我还是愿意接受,除非有人的想法跳过了我的注意力。关于它如何在Safari 5.0.5(Mac 10.6)上工作,有什么建议吗?我认为您正处于一种竞争状态,可以通过回拨固定像素负载来缓解
<form onclick="log('LINK_CLICKED', 'some other page'); this.submit();" action="someotherpage.html">Some other page</form>
函数日志(名称、值、回调)
{
push({'name':name,'value':value,'callback':callback});
}
函数flush()
{
对于(i=0;i