这可能看起来像一个简单的问题,但似乎没有任何我能找到的答案.
我正在编写一个onClick事件处理程序,只需dataLayer.push()在单击锚点时调用.
是dataLayer.push()同步操作吗?
是否肯定会发送谷歌的GET请求,即使浏览器已经卸载了请求的页面,因为链接被跟踪?
一些浏览器显示连接被取消,一些显示它成功.
我的问题是,如果计算机速度慢,是否可以在发送请求之前卸载页面?
这就是为什么我假设谷歌开始使用该eventCallback属性在链接被跟踪后重定向用户.例如
https://developers.google.com/tag-manager/enhanced-ecommerce#product-clicks
此源代码不包含单击处理程序,但暗示该onClick事件应停止传播并eventCallback设置该函数document.location.
但是,一旦取消该活动,其所有信息都已消失.
这(在我看来)只是错误的做法.例如(CTRL或COMMAND)+ Click在浏览器上打开一个新选项卡.除非onClick事件处理程序允许prorogation继续,否则这将不起作用.
依赖eventCallback也意味着如果google scrips没有加载其中的一个原因(但仍然不太可能),你的链接不起作用.而且你的网站坏了.
因此,这为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;
Run Code Online (Sandbox Code Playgroud)
});
是否有人可以保证GET请求将被解雇到谷歌服务器?
谷歌开发者忘记了什么吗?
编辑:更新标题与问题更相关.