我有一个输入按钮,其中包含谷歌分析代码(点击检测):
<input type="button" onclick="ga('send',...);"/>
此按钮不提交,我 在网络面板中查看google服务器的请求。
问题是当按钮是提交按钮时:
<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使用查询字符串等待此请求。 (谷歌仪表板不显示任何收到的点击)
(这个问题出现在我被要求对某些按钮(有些确实提交)进行点击检测之后,并在检查后,google doesn't say anything about those kind of buttons)
答案 0 :(得分:0)
不是解释(我想要的),但是在提交/重定向时解决了谷歌分析问题:
在底部包含此代码:
$("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
,这是一个回调,所以我可以在识别出我第一次被阻止后触发点击。