這可能看起來像一個簡單的問題,但似乎沒有答案,我可以找到任何地方。在anchor上觸發時,dataLayer.push()是否肯定會向Google發送數據?
我正在編寫一個onClick
事件處理函數,它在單擊錨點時簡單地調用dataLayer.push()
。
是dataLayer.push()
同步操作?
即使瀏覽器已經卸載了由於鏈接被跟蹤而被請求的頁面,GET請求是否會被髮送?
有些瀏覽器顯示連接取消,有些顯示成功。
我的問題是,如果電腦速度慢,是否有可能在發送請求之前卸載頁面?
這就是爲什麼我認爲谷歌開始使用eventCallback
屬性來重定向鏈接後的用戶。 例如 https://developers.google.com/tag-manager/enhanced-ecommerce#product-clicks
此源代碼不包括單擊處理程序,而是意味着onClick
事件應停止傳播史,讓eventCallback
功能設置document.location
。
但是,只要您取消活動,其所有信息都已消失。
這(在我看來)只是錯誤的做法。 例如 (CTRL或COMMAND)+點擊在瀏覽器上打開一個新選項卡。這將不起作用,除非onClick
事件處理程序允許繼續。
依靠eventCallback
也意味着如果谷歌票據沒有加載的原因之一(但仍不太可能),你的鏈接不起作用。你的網站壞了。
因此,這爲onClick
事件處理程序留下了正確的方法,以允許事件傳播並返回true。
這也意味着dataLayer.push()
需要返回後GET請求被髮送任何這些才能正常工作。
代碼示例: 注意:您將在混合環境中獲得混合結果。
<a href="/somewhere-else">Link</a>
$(document).on('click', 'a', function(event) {
// Is dataLayer.push() guaranteed to fire a GET ?
// data set externally
dataLayer.push(data);
return true;
});
有沒有人可以保證GET請求會被解僱到谷歌服務器?
有沒有谷歌開發人員在這裏遺忘的東西?
編輯:更新的標題與問題更相關。
雖然我認爲這是一個很好的討論問題(並提供了答案),所以SO通常不是討論論壇,所以要問供應商的解決方案是否是一個好的解決方案可能會因爲脫離主題而被封閉。您可能想要將其改爲「如何確保我的數據已發送」。 –