在GTM中,假设我有一个“自定义HTML”标记,其中包含一个外部脚本文件,如
<script type="text/javascript" src="http://externalsite.com/file.js"></script>
这个文件是怎么加载的?它会影响页面的加载时间吗?
我知道GTM脚本与标签一起异步加载,但我无法想象在这种情况下会发生什么。
答案 0 :(得分:7)
在GTM自定义HTML标记中,您甚至可以使用async或defer属性:
<script async type="text/javascript" src="/path/to/file.js"></script>
进一步阅读:http://davidwalsh.name/html5-async
如果您使用的是HTML5,请键入默认值text/javascript
,这样您就可以将其关闭。
或者,您可以使用匿名自调用函数异步加载:
<script>
(function(d,s){
var e = d.createElement(s),
m = d.getElementsByTagName(s)[0];
e.async = 1;
e.src = '//externalsite.com/file.js';
m.parentNode.insertBefore(e,m);
})(document,'script');
</script>
答案 1 :(得分:0)
放置在GTM自定义HTML标记中的任何外部脚本都将以与加载其他标记类似的方式加载。由于GTM标签是异步加载的,因此不会影响页面的加载时间。
答案 2 :(得分:0)
如何加载此文件?
异步,保持脚本顺序
尽管您将其编写为html <script>
标记,但GTM会加载它来创建DOM脚本元素
这大致是使用的代码(不是直接从GTM中缩小):
var script = document.createElement('script');
script.src = '/path/to/file.js';
script.async = false;
是否会影响页面的加载时间?
它会影响load
事件,但您可能不应该担心,因为GTM使用least impact possible to page performance.加载脚本