我目前在JavaScript中具有以下代码:
container.innerHTML = `
<h3 id="box-title"> Build Analysis
</u><span id="close" class="close"
onclick=parentNode.parentNode.style.display='none';>x</span></h3>
.... /* skipping the rest because it is irrelevant */
这只是用于在网页中动态插入HTML内容的代码(在本例中为可以打开和关闭的框)。我的问题是关于内联脚本的。目前,它可以与onclick
(关闭窗口)一起使用,但是它使用内联脚本,这是不好的。
我尝试了以下链接的解决方案:(具有重构内联脚本的部分) https://csp.withgoogle.com/docs/adopting-csp.html
我从那里尝试了以下解决方案,但没有任何反应: 在大多数情况下,更改将很简单。要重构事件处理程序,请重写它们以从JavaScript块添加:
从那里复制:
<script> function doThings() { ... } </script>
<span onclick="doThings();">A thing.</span>
应成为:
<span id="things">A thing.</span>
<script nonce="${nonce}">
document.addEventListener('DOMContentLoaded',function () {
document.getElementById('things')
.addEventListener('click',function doThings() { ... });
});
</script>
但是当将其应用到我的项目中时,它似乎不起作用:
...
</u><span id="close" class="close">x</span></h3>
...
<script>
document.addEventListener('DOMContentLoaded',function () {
document.getElementById('close')
.addEventListener('click',function closeBox() {
parentNode.parentNode.style.display='none';
});
});
</script>
我还尝试在标签中放置onclick=CloseBox()
。它只是没有注册此功能,什么也没有发生。甚至不会发生错误。谁能帮忙吗?谢谢!