[英]Ajax request on a submit button? (for analytics - Event Tracking)
我有一個輸入按鈕,其中包含谷歌分析代碼(點擊檢測):
<input type="button" onclick="ga('send',...);"/>
此按鈕未提交,我確實在網絡面板中看到了谷歌服務器的請求。
問題是當按鈕是提交按鈕時:
<input type="submit" onclick="ga('send',...);"/>
我知道,它不起作用。
我可以通過: jQ解決方案 來解決它:( 例如)
e.preventDefault();
ga('send',...);
$(this).click();
但我不是在解決問題之后。 我追問它發生的原因 。
顯而易見的原因是因為頁面重定向/發布。
但我可以這樣做:
<input type="submit" onclick="for (var i=0;i<5;i++) console.log(i);"/>
代碼工作原理 :(就像我寫的那樣return false
)
它顯示數字並提交
我知道ajax是一個異步操作(應該是),但內部會發生什么阻止請求執行? ( 與其他js代碼相對 )
注意:我不關心回應。 該請求具有包含數據的查詢字符串。 google servers使用查詢字符串等待此請求。 (谷歌儀表板不顯示任何收到的點擊)
(這個問題出現在我被要求對某些按鈕(有些確實提交)進行點擊檢測之后,並且在檢查之后, 谷歌沒有說明這些按鈕的任何內容 )
不是解釋(我想要),而是提交/重定向時解決谷歌分析問題的方法:
在底部包含此代碼:
$("body").on('click', '[data-ga]', function (e)
{
var _ = $(this);
if (_.data('prevented') == 1)
{
_.removeData("prevented");
return true;
}
e.preventDefault();
_.data('prevented', 1);
window.__gacb = function () { _[0].click(); };
new Function(_.data('ga'))();
return false;
});
對於提交/重定向的任何元素:
<input type='submit' data-ga="ga('send', 'Forms', { 'hitCallback':function (){window.__gacb()}});" />
谷歌有這個屬性hitCallback
這是一個回調,所以我可以在識別出我第一次被阻止后觸發點擊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.