如何在 Cookiebot(外部 JavaScript)的 cookie 横幅中注入(通过 JavaScript 添加)锚文本和普通文本?

How to inject (add via JavaScript) an anchor text and normal text in a cookie banner from Cookiebot (external JavaScript)?

<script>
document.getElementById("CybotCookiebotDialogBodyContentText").innerHTML += ' | <a href="https://www.google.com/">Google</a>'
</script>

我用 Google Chrome 的控制台试过这段代码。我成功了。但是,如果我将它复制并粘贴到 "JavaScript (Footer)" 或 "JavaScript (Header)" 区域(这是外部 JavaScript 文件。)然后它会显示“(索引):208 Uncaught TypeError:无法读取 属性 'innerHTML' of null"(可能的问题:做出像 !important [以及 JavaScript 代码中的什么地方?] 的声明?加载 cookie 横幅的时间 [时差])。谢谢。

当您的 Javascript 正在执行时,该元素可能不存在,这就是您收到错误的原因。

错误告诉你它 'Cannot read the innerHTML of null',这意味着 document.getElementById("CybotCookiebotDialogBodyContentText") 正在返回 null

您需要等待 #CybotCookiebotDialogBodyContentText 存在,然后抓取并更新。

如果 #CybotCookiebotDialogBodyContentText 在您的页面加载后立即可用,只需将您的 JS 移动到 <body> 元素的末尾。否则你需要设置一个轮询函数来等待它,比如:

function waitFor(element, f) {
    if (document.querySelector(element)) {
        f();
    } else {
        waitFor(element, f);
    }
}

waitFor('#CybotCookiebotDialogBodyContentText', function() {
    document.getElementById("CybotCookiebotDialogBodyContentText").innerHTML += ' | <a href="https://www.google.com/">Google</a>'
})

有一个 CookiebotCallback_OnDialogInit() 回调,当 Cookiebot 插入 DOM 时执行,但在横幅显示之前执行。你可以使用它:

function CookiebotCallback_OnDialogInit()
{
    document.getElementById("CybotCookiebotDialogBodyContentText").innerHTML += ' | <a href="https://www.google.com/">Google</a>'   
}