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);
我正在研究一些跟蹤用戶交互以在頁面上查找熱點的代碼。它大部分已經完成,可以在大多數瀏覽器上運行,但是我目前正在使用Safari 5.0.5/Mac 10.6(順便說一下,它也可以在Windows XP上使用Safari 5.0.1進行復制)。給我帶來困難的部分是頁面傳輸期間的鏈接點擊。例如,下面的代碼需要我someotherpage.html:Safari在頁面卸載前不讓函數完成?
<form onclick="log('LINK_CLICKED', 'some other page'); this.submit();" action="someotherpage.html">Some other page</form>
該網站帶我在所有的瀏覽器someotherpage.html,但只有Safari瀏覽器5.0.5/Mac的10.6不會在日誌中顯示LINK_CLICKED 。在Safari檢查器中進行了一些控制檯檢查之後,我發現Safari出現「加載資源失敗」錯誤。我懷疑這是因爲雖然可以調用URL,但瀏覽器已決定繼續前進(?)。
無論如何,我已經嘗試beforeunload事件並使用setTimeout來延遲頁面卸載。我是 考慮完全改變HTML格式,但這將是一個相當大的努力。儘管如此,除非有人忽視我的注意力,否則我會接受。有關如何在Safari 5.0.5(Mac 10.6)上運行的建議?
謝謝!我使用了你的解決方案和http://stackoverflow.com/questions/4945764/link-click-tracking-does-not-work-on-safari-browser。通過日誌功能發送回調,並讓CORS進行呼叫。有權衡,但它們或多或少都可以忍受。 – Jerico