Javascript document.getElementById().onclick无法在Google标记管理器中工作

Javascript document.getElementById().onclick无法在Google标记管理器中工作,javascript,google-tag-manager,getelementbyid,Javascript,Google Tag Manager,Getelementbyid,我正在使用cookie许可管理服务,通过谷歌标签管理器(自定义HTML标签)调用它。他们的脚本具有函数CookieControl.open()打开一个侧边栏,允许用户更改其首选项 <script src="https://cc.cdn.civiccomputing.com/9/cookieControl-9.x.min.js"></script> <script> var config = { ... ... ... }; CookieC

我正在使用cookie许可管理服务,通过谷歌标签管理器(自定义HTML标签)调用它。他们的脚本具有函数
CookieControl.open()
打开一个侧边栏,允许用户更改其首选项

<script src="https://cc.cdn.civiccomputing.com/9/cookieControl-9.x.min.js"></script>
<script>
var config = {
...
...
...
};

CookieControl.load(config);

window.onload = function () {
    var cookiesExist = document.querySelector('#cookies');
    if (cookiesExist) {
        document.getElementById("cookies").onclick =
            function () {
                CookieControl.open();
            };
    }
};
</script>

变量配置={
...
...
...
};
CookieControl.load(配置);
window.onload=函数(){
var cookiesExist=document.querySelector(“#cookies”);
如果(存在){
document.getElementById(“cookies”).onclick=
函数(){
CookieControl.open();
};
}
};
在我的页脚中,我添加了一个链接
Cookies
,GTM中的函数应该以该链接为目标。不幸的是,这不起作用,当我点击“Cookies”链接时,边栏没有打开。它有时在iPad上的Safari上随机运行。但这并不一致。
你知道为什么大多数时候这不起作用吗(但其他时候它起作用了)?

这是一个有效的例子

//

我们在按钮上附加了一个click事件监听器,添加了一个href属性,并通过使用
e.preventDefault
函数防止其默认行为。我们还为
CookieControl.open()
方法创建了一个专用函数

在将click事件监听器附加到按钮之前,您可能需要将脚本包装在此事件监听器中,以确保文档已准备就绪

window.addEventListener('DOMContentLoaded', (event) => {
    console.log('DOM fully loaded and parsed');
    // move the content of index.js file here
});
更新:在stackoverflow沙箱中复制脚本,以防上面的链接过期

导入“/styles.css”; //加载cookie控件 函数openCookieControl(e){ 控制台日志(“CookieControl打开”); //CookieControl.open(); } let button=document.getElementById(“cookies”); 按钮。addEventListener(“单击”,(e)=>{ e、 预防默认值(); openCookieControl(); });
正文{
字体系列:无衬线;
颜色:#000000;
}

包裹沙箱
您是否已验证(通过simply console.log或其他方式)您的函数是否执行过?使用
window.onload=…
是危险的,这很容易被其他脚本功能覆盖。您应该重写它以正确使用addEventListener。