1

我正在构建我的第一个 chrome 扩展,我遇到了一个非常基本的问题。

我的扩展程序有一个一直在运行的后台脚本,如果满足某些条件,它将网页的 url 重定向到本地网页。

chrome.tabs.update(e.tabId, 
                  {url: "popup.html"});

Popup.html 被加载到选项卡中。这很好用,但我想在 popup.html 中包含一些 javascript。

我可以包含一个 popup.js 文件,但尝试 document.addEventListener 不起作用,因为 document 为空。

另外,当我尝试包含 jquery.js 时,我得到

Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' chrome-extension-resource:".

我尝试将清单文件属性更新为此,但似乎没有帮助:

"content_scripts": [
  {
    "matches": ["http://*/*", "https://*/*"],
    "js": ["background.js", "jquery.min.js", "popup.js"]
  }
],

"permissions": [
    "tabs", "http://*/*", "https://*/*",
  "webNavigation"
],


"background": {
"scripts": ["background.js", "popup.js", "jquery.min.js"]
}

我查看了这个文档http://developer.chrome.com/stable/extensions/contentSecurityPolicy.html但它没有任何解决方案。有任何想法吗?

4

1 回答 1

0

我,该错误表示您正在直接在 HTML 文档的标记中运行内联脚本,或者在事件处理程序(如onclick="myCode();". 内容安全政策阻止您这样做。

我不知道是你写了那个脚本,还是某个外部框架。不过,您应该确保在 popup.html 中没有内联代码,或者您应该放宽您的内容安全策略,允许使用'unsafe-inline'.

请记住,当放松安全策略时,您正在放松 SECURITY,并且您的代码更容易受到攻击。出于调试目的执行此操作,但请尝试将其从您的发布版本中删除。

于 2013-01-29T12:27:56.213 回答