2017-02-16 19 views
1

這可能看起來像一個簡單的問題,但似乎沒有答案,我可以找到任何地方。在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請求會被解僱到谷歌服務器?

有沒有谷歌開發人員在這裏遺忘的東西?

編輯:更新的標題與問題更相關。

+0

雖然我認爲這是一個很好的討論問題(並提供了答案),所以SO通常不是討論論壇,所以要問供應商的解決方案是否是一個好的解決方案可能會因爲脫離主題而被封閉。您可能想要將其改爲「如何確保我的數據已發送」。 –

回答

3

datalayer.push不會向Google發送任何內容。它將具有鍵/值對的對象推送到數據層數組。這可能包含一個事件,然後觸發一個標籤。標籤是否發送取決於標籤的設置,而不是dataLayer.push。

因此,當您編寫自己的點擊處理程序時,您自己負責確保您的標記實際上已被解僱。

如果使用內置的單擊處理程序,您可以configure a delay to make sure your tag has time to fire before the link redirects

由於鏈接的點擊通常會導致瀏覽器加載新的一頁, 干擾任何待處理的HTTP請求,你必須添加一個選項小 延遲,以允許標記管理器觸發的標記在 重定向到下一頁之前正確執行。選中「等待標籤」選項 會延遲鏈接的打開,直到所有標籤已被觸發或指定的 超時已過,以先到者爲準。

您應該能夠混合使用這兩種方法(在點擊時推送數據,但仍然使用事件的「本機」鏈接點擊處理程序)。

You can also try to specify "beacon" as the transport method在您的Google Analytics代碼中,在支持此功能的瀏覽器上(我認爲此時只有Chrome)GA會使用navigator.sendBeacon界面,即使在頁面卸載時也會發送數據。

您可能認爲Google的解決方案並不是非常優雅(但簡單的延遲優勢在於它適用於所有標籤,而不僅僅是GA),但他們沒有「忘記」這個問題。

如果回調失敗(如Simo Ahava所提出的那樣),那麼將GA命中回調與超時重定向的解決方案也應該可以在GTM中實現,即使它們在GA中可能更麻煩。

+0

非常感謝。我希望除定時器之外還有更優雅的同步解決方案來解決這個問題。 – Leon

+0

但由於瀏覽器的差異,我不認爲存在這種情況。但是這肯定會回答這個問題。我一直在谷歌搜索了很長一段時間才找到一些建議這個事件的行爲的谷歌文檔。我也試圖通過忽略推送方法/事件來簡化問題。 – Leon

+0

僅供參考,您可以在此查看哪些瀏覽器支持navigator.sendBeacon:http://caniuse.com/#search=navigator.sendbeacon – nyuen

相關問題