我有一个页面,在加载时会触发一次ajax调用
$(window).load(function() {
updateDeliverySlots();
});
我还在页面的body部分放置了Google Tag Manager的JavaScript代码(我知道现在的建议是将其放在head部分,但我们还没有更新代码,也不认为这是问题的根源)。
<body>
<!-- Google Tag Manager -->
<noscript>
<iframe src="//www.googletagmanager.com/ns.html?id=XXXX" height="0" width="0" style="display:none;visibility:hidden">
</iframe>
</noscript>
<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.async=true;
j.src='//www.googletagmanager.com/gtm.jsid='+i+dl;f.parentNode.insertBefore(j,f);
})
(window,document,'script','dataLayer','XXXX');
</script>
<!-- End Google Tag Manager -->
....
</body>
我有一个问题,与GTM标签中包含的脚本所做的调用之一有关。此脚本发送请求到第三方。如果由于某种原因(例如服务器宕机)请求无法连接,则我的updateDeliverySlots()函数(以及其中的ajax调用)直到请求超时(60秒)才会被执行。我还发现页面仍在“加载”(根据浏览器图标)。
是否有什么是我在GTM实现中做错了? 我的理解是,在Google标签的背面触发的所有内容都应该是异步的,并且不会对页面的“准备就绪”产生影响。