2017-06-14 74 views
0

我知道使用隐藏的iframe(零高度,display:none等)不是一个好主意,用于跟踪用户,因为如果他们没有被渲染,他们的内容通常不会被调用。隐藏iframes和Google TagManager

那么为什么Google TagManager使用隐藏所有可能方式的iframe(显示:none,visibility:hidden,width:0,height:0)?

+0

由于我们对Google的决策制定过程没有深入的了解(加上隐藏的iframe内容未加载的概念应该使用源代码或测试用例进行备份),因此我正在投票结束此问题。 –

+0

如果这个问题离题,我会很抱歉,但实际上我不这么认为。 无论如何,我想知道为什么许多开发人员使用1x1 iframe而不是0x0 iframe,如果没关系 – basellone

+0

当我(或任何人)投票结束时,它是(我的)意见的陈述 - 这并不意味着你的这肯定是一个坏问题,它不是对你的角色的攻击,它并不意味着密切的投票总是正确的。因此,如果没有至少五个人支持,他们无需为紧密的选票辩护,但无论如何都不相关。这只是为了在未来为你节省一些时间:-)。 –

回答

0

如果你正在谈论的跟踪代码GTM:

<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= 
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 
})(window,document,'script','dataLayer','GTM-XXXXXX');</script> 

其中有一个iframe:

<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXXX" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 

此iFrame是没有启用JavaScript谁也用户。如果客户端的浏览器已经禁用了JS,浏览器不会在script标签内执行JS,他只是在noscript标签内呈现html。

浏览器只会呈现隐藏的iframe,并会尝试加载此网址。

+0

“浏览器只会呈现隐藏的iframe,并会尝试加载此url”,这就是要点:某些浏览器不会加载隐藏的iframe的内容! – basellone

+0

@basellone我很确定所有的浏览器都会对iframe上'src'属性指定的URL执行GET请求,即使它是隐藏的,这通常都是跟踪所需的。 –

+0

感谢您的反馈Mikael! 如果是这样,你知道为什么通常开发人员使用1x1 iframe而不是0x0 iframe吗? – basellone