我正在开发使用 GTM(Google 跟踪代码管理器)的网站。
GTM 包含一些来 self 国不允许的网站的脚本(标签)。它会在控制台中导致错误,我想停止加载此标签。我无权访问 GTM 帐户,所以我应该使用 js 来访问。该脚本是自定义 HTML 标记
,因为当我尝试下面的代码时,它会停止加载:
dataLayer = [{
'gtm.blacklist':['html']
}];
但它也会停止加载其他自定义标签。 如何停止以编程方式加载某些自定义标签?
最佳答案
我认为这是可以做到的。查看 GTM 代码,我们可以看到它使用 insertBefore 函数将脚本元素添加到网站(目前,他们可以随时更改此设置)。因此,理论上您可以向 native 函数“添加”一些代码并防止从特定源加载脚本。例如,您可以在加载 GTM 之前运行以下代码:
Node.prototype.insertBefore = (function() {
var cached_function = Node.prototype.insertBefore;
return function(script) {
if(script && script.src.indexOf("www.somesource.com/script.js") !== -1){ //change to src you don't want to load on your page
return false; //don't add the script
}else{
var result = cached_function.apply(this, arguments); // use .apply() to call native function
return result;
}
};
})();
(代码取自:Adding code to a javascript function programmatically)
我没有测试此代码,所以我不建议您在没有适当测试的情况下执行此操作,否则您可能决定根本不执行此操作(在执行此操作之前,您可能需要阅读: Why is extending native objects a bad practice? )。我同意 Eike 的回答,但我想说的是,可以防止以编程方式加载自定义标签。
关于javascript - 谷歌标签管理器。如何防止以编程方式加载自定义标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45918901/