Javascript 来自tagmanager的Java脚本
我想确定是否通过从页面或通过标记管理器显式调用Java脚本来加载 以下代码可用于列出页面正在运行的Java脚本Javascript 来自tagmanager的Java脚本,javascript,Javascript,我想确定是否通过从页面或通过标记管理器显式调用Java脚本来加载 以下代码可用于列出页面正在运行的Java脚本 $("script[src]").each(function( i, src ) { console.info($(this).attr('src')); }); 以下脚本是标记管理器的示例: www.googletagmanager.com/gtm.js?id=GTM-TM2FVV7 d3c3cq33003psk.cloudfront.net/opentag
$("script[src]").each(function( i, src )
{
console.info($(this).attr('src'));
});
以下脚本是标记管理器的示例:
www.googletagmanager.com/gtm.js?id=GTM-TM2FVV7
d3c3cq33003psk.cloudfront.net/opentag-136914-2122355.js
我如何确定哪些脚本是由标记管理器服务带来的,哪些脚本是在页面中显式调用的
我考虑手动浏览HTML源代码,并注意显式调用了哪些脚本。但是,问题是如何知道哪个标记管理器调用了哪些脚本。您可以使用这些脚本“侦听”DOM树中发生的更改。在本例中,您对添加到页面中的
节点感兴趣
以下是概念证明:
,因此不应将其视为外部脚本dropScript
函数模拟您的标签管理器:它将在您的页面上放置一个外部
,我们将跟踪它
元素感兴趣constdropscript=(src)=>{
设置超时(()=>{
document.body.appendChild(
document.createElement('script'))
.src=src;
log(`dropped${src}在`)页上);
}, 500);
};
常量externalScript=[];
常量观察者=新的突变观察者((突变)=>{
for(let突变的突变){
突变.addedNodes.forEach((节点)=>{
if(node.nodeName.toLowerCase()=='script'){
externalScript.push(
node.getAttribute('src');
}
});
}
});
observer.observe(document.body,{childList:true});
dropScript('http://example.com/external_1.js');
dropScript('http://example.com/external_2.js');
dropScript('http://example.com/external_3.js');
设置超时(()=>{
console.log(externalScript);
}, 1000);代码>
我还尝试在标记管理器脚本上查看Chrome开发工具中网络选项卡上的预览代码。虽然代码中引用了一些.js文件,但很难看到发生了什么。一个脚本被带到它的指示,但不是结论。您可以使用src
本身来识别它吗?我的意思是,如果标签包括googletagmanager
。还有检查脚本时发现的垃圾,那就是脚本的最小化形式。大多数浏览器都有一个漂亮的打印按钮,这有点帮助。它的图标通常是两个花括号{}
@David González不知道你所说的“你能用src本身来辨别”是什么意思。你能重新措辞吗?我想使用属性src
。如果脚本来自googletagmanager.com
,那么查看src
是否包含该字符串($(this).attr('src').indexOf('googletagmanager')!=-1
)就很简单了。为此,您需要所有作为标记管理器的脚本都来自该域,而不是本地。