【问题标题】:I keep getting the error "Refused to execute inline event handler because it violates the following Content Security Policy directive我不断收到错误“拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令
【发布时间】:2021-01-18 09:19:04
【问题描述】:

我正在制作一个需要 JavaScript 的 Chrome 扩展程序。如何在我的 Chrome 扩展程序中包含 JavaScript?

这是它要求我做的 popup.Json。

function AddNewPopup() {
  var popup = document.getElementById("myPopup");
  popup.classList.toggle("show");
}

And here is the script tool that it keeps blocking.
<div class="popup" onclick="AddNewPopup()"><button class="addnew"><span class="popuptext" id="myPopup">Test for 0.9</span><img src="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcSH-bdYc7hZzKrjl7v1tMC2qEwo7F_3HgFWyQ&usqp=CAU" width="50"></button></div>

请告诉我如何摆脱这个安全问题并插入我的 JavaScript。

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    扩展中不允许在您的 html 中使用 onclick 处理程序(内联 javascript 的示例)。

    要使其正常工作,您需要在 html 中包含 popup.js 并在 popup.js 中注册 onclick 处理程序,如下所示:

    <script src="popup.js"></script>
    

    popup.js:

    document.getElementById('myPopup').addEventListener("click", AddNewPopup);
    

    您可以在本文中阅读有关该错误的更多信息:https://developer.chrome.com/extensions/contentSecurityPolicy#JSExecution

    【讨论】:

    • 嗯,没用。我是否将脚本放在我拥有的按钮周围?它不工作。
    • 在您拥有的&lt;div&gt;...&lt;/div&gt; 行上方添加&lt;script src="popup.js"&gt;&lt;/script&gt;。然后在 popup.js 中注册点击监听器。您需要删除您拥有的onclick="AddNewPopup()"stackoverflow.com/questions/36324333/…
    • 嗯,还是不行。
    • 拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“script-src 'self' blob: filesystem:”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-...”)或随机数(“nonce-...”)。 &lt;script src="popup.js"&gt;&lt;/script&gt;
    • 它在看到“脚本”的那一刻就停止了。我真的需要添加这个,否则我的扩展将无法运行。
    猜你喜欢
    • 2023-02-25
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 2013-03-17
    • 2019-10-18
    • 1970-01-01
    相关资源
    最近更新 更多