如何在 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>'
}
<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>'
}