Javascript 谷歌标签管理器延迟window.load?
我有一个页面在加载时触发ajax调用Javascript 谷歌标签管理器延迟window.load?,javascript,jquery,ajax,google-tag-manager,Javascript,Jquery,Ajax,Google Tag Manager,我有一个页面在加载时触发ajax调用 $(window).load(function() { updateDeliverySlots(); }); 我的正文顶部也有Google Tag Manager javascript(我知道目前的建议是将其放在标题部分,但我们还没有更新代码,也不认为这是问题的根源) (函数(w,d,s,l,i){w[l]=w[l]| |[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});
$(window).load(function() {
updateDeliverySlots();
});
我的正文顶部也有Google Tag Manager javascript(我知道目前的建议是将其放在标题部分,但我们还没有更新代码,也不认为这是问题的根源)
(函数(w,d,s,l,i){w[l]=w[l]| |[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});
var f=d.getElementsByTagName[0],j=d.createElement,dl=l!=“数据层”?“&l=”+l:”;
j、 异步=真;
j、 src='//www.googletagmanager.com/gtm.jsid='+i+dl;f.parentNode.insertBefore(j,f);
})
(窗口、文档、“脚本”、“数据层”、“XXXX”);
....
我对GTM标记中包含的脚本进行的一个调用有问题。此脚本向第三方发送请求。如果请求由于任何原因(例如服务器关闭)无法连接,则在请求超时(60秒)之前,不会启动updateDeliverySlots()函数(以及其中的ajax调用)。我还发现页面仍在“加载”(根据浏览器图标)
在我的GTM实现中是否有我做错的地方?我的理解是,在谷歌标签背面激发的所有内容都应该是异步的,不会影响页面的“就绪状态”。同步脚本必须在处理到达它们时获取并运行,可以在处理到达它们后的任何时间运行 根据服务器/页面控制之外的时间,异步脚本可以:
- 在文档完成之前添加同步资源,时间会延迟加载事件
- 在处理页面后添加同步资源,并且不影响加载事件
- 添加不应对页面产生重大影响的异步资源(除非它反过来向页面添加同步资源)
页面视图->窗口加载
(函数(w,d,s,l,i){w[l]=w[l]||【】;w[l]。推送({'gtm.start':
new Date().getTime(),事件:'gtm.js'});var f=d.getElementsByTagName[0],
j=d.createElement,dl=l!=“数据层”?“&l=”+l:“”;j.defer=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(窗口、文档、“脚本”、“数据层”、“GTM-XXXXX”);
由于这会将整个GTM过程移动到完全解析页面之后,因此会破坏“Google Optimizer”标记和早期页面跟踪。我也遇到了同样的问题,GTM确实在延迟其他脚本的执行。使用jquery$(窗口)加载的一个小更改。加载解决了以下问题:
<script>function loadgtm(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
};$(window).load(function(){loadgtm(window,document,'script','dataLayer','GTMID');});</script>
函数loadgtm(w,d,s,l,i){w[l]=w[l]| |[];w[l]。推送({'gtm.start':
new Date().getTime(),事件:'gtm.js'});var f=d.getElementsByTagName[0],
j=d.createElement,dl=l!=“数据层”?“&l=”+l:“”;j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
};$load(函数(){loadgtm(窗口,文档,'script','dataLayer','GTMID');});
无法读取有关上的延迟选项的信息
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXX');</script>
<!-- End Google Tag Manager -->
<script>function loadgtm(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
};$(window).load(function(){loadgtm(window,document,'script','dataLayer','GTMID');});</script>