首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌标签管理器。如何防止以编程方式加载自定义标记?

谷歌标签管理器。如何防止以编程方式加载自定义标记?
EN

Stack Overflow用户
提问于 2017-08-28 20:23:19
回答 2查看 1.6K关注 0票数 2

我在使用GTM(谷歌标签管理器)的网站上工作。GTM包括一些脚本(标签)从一个网站,这是不允许在我的国家。它在控制台中导致一个错误,我想停止加载这个标签。我没有访问GTM帐户的权限,所以我应该使用js。这个脚本是Custom HTML Tag,因为当我尝试下面的代码时,它会停止加载:

代码语言:javascript
复制
    dataLayer = [{
        'gtm.blacklist':['html']
    }];

但它也会停止加载其他自定义标记。如何停止以编程方式加载某些自定义标记?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-30 20:50:43

我认为这是可以做到的。查看GTM代码,我们可以看到它使用insertBefore函数将脚本元素添加到网站(目前,他们可以随时更改)。因此,从理论上讲,您可以将一些代码“添加”到本机函数中,并防止从特定来源加载脚本。例如,您可以在加载GTM之前运行以下代码:

代码语言:javascript
复制
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的回答,但我要说的是,可以通过编程方式阻止自定义标记的加载。

票数 1
EN

Stack Overflow用户

发布于 2017-08-28 23:02:05

您不能以编程方式阻止特定的自定义HTML。一个原因是它是没有意义的-“自定义HTML”意味着“在您的站点的上下文中执行的任意代码”,因此代码可以简单地放入另一个HTML标记中并从那里运行。

您无法控制在您的站点上运行的GTM实例(这实际上意味着您无法控制您的站点),这不是Google能够以任何有意义的方式迎合的用例(如果您控制了GTM,则只需删除标记)。

如果您的意思是不允许某个特定来源的脚本,那么您可以查看Content Security Policies (无论脚本是从GTM还是从任何其他来源运行,它都可以工作)。然而,众所周知,CSP很难实现(虽然可以使用implement them from within GTM,但它只适用于有限的测试,而不适用于生产)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45918901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档