Chrome 扩展“拒绝将字符串作为 JavaScript 进行评估,因为‘unsafe-eval’

新手上路,请多包涵

我有一个错误:

拒绝执行内联脚本,因为它违反了以下内容安全策略指令: "script-src 'self' chrome-extension-resource:" 。需要 'unsafe-inline' 关键字、散列 ( 'sha256-...' ) 或随机数 ( 'nonce-...' 启用在线执行)

chrome-extension://ldbpohccneabbobcklhiakmbhoblcpof/popup.html:1

拒绝将字符串评估为 JavaScript,因为 'unsafe-eval' 不是以下内容安全策略指令中允许的脚本源: "script-src 'self' chrome-extension-resource:"

代码 popup.js

 $(document).ready(function() {
     $.getJSON('http://.......alerts.json', function(data) {
        alert('HELLO');
      });
});

显现:

 {
  "manifest_version": 2,

  "name": "Alert",
  "description": "This extension for  .",
  "version": "2.0",
  "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
  "permissions": [
    "http://www.......il/"
  ],
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "content_scripts": [ {
    "js": [ "jquery.min.js", "popup.js" ],
    "matches": [ "http://*/*", "https://*/*"]
  }]
}

弹出:

 <!doctype html>
<html>
  <head>
    <title>Getting Started Extension's Popup</title>
    <style>
      body {
        min-width: 357px;
        overflow-x: hidden;
      }

      img {
        margin: 5px;
        border: 2px solid black;
        vertical-align: middle;
        width: 75px;
        height: 75px;
      }
    </style>
     <head>
     <script src='jquery.min.js'></script>
     <script src='popup.js'></script>
</head>
  </head>
  <body>
  </body>
</html>

原文由 Vitaly Menchikovsky 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

我收到此消息是因为 Chrome 不再允许内联脚本和内联事件处理程序(如 onClick):必须将它们移动到外部 JS 文件(例如 popup.js)并且必须使用 addEventListener() 将事件关联到DOM 对象。

例如:

 <body onload="initialize()">
<button onclick="handleClick()" id="button1">

必须替换为:

 window.addEventListener("load", initialize);
document.getElementById("button1").addEventListener("click",handleClick);

在你的情况下,我在 HTML 中看不到任何 JS,但你可以尝试一些事情:

  • 移动 popup.js include 就在 .
  • 更正 html(双头)。
  • 从清单中删除 content_scripts 部分。内容脚本应该针对页面内容执行,它们不是页面或浏览器操作弹出窗口中包含的 JS 文件。浏览器操作部分应该足够了。

请参阅 Chrome 扩展清单 V2 说明

原文由 Yano 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏