manifest.json文件中的CSP问题

时间:2013-05-14 18:02:27

标签: google-chrome-extension manifest content-security-policy

加载为.crx时,我的第一个GC扩展程序的脚本不起作用。我检查了调试部分,这是我的错误:

拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“script-src'self'https://www.lolking.net/”。  popup.html:8

拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“script-src'self'https://www.lolking.net/”。  popup.html:9

所以我猜错误来自manifest.json文件:

{
"name": "LolKing Searcher",
"version": "1.1",
"manifest_version": 2,
"description": "Search your LoL profile",
 "content_security_policy": "script-src 'self' https://www.lolking.net/; object-src 'self'",
"permissions": [
    "tabs",
    "http://*/*/"
],

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

 "browser_action": {
    "default_title": "LolKing Searcher",
    "default_icon": "icon.png",
    "default_popup": "popup.html"
}
}

每个建议都被广泛接受!

1 个答案:

答案 0 :(得分:0)

正如错误本身所述,错误位于popup.html文件中。您不能在html文件中包含任何内联代码,其中包括内联事件处理程序,如onclick="dosomething()"。将所有内联代码移动到外部文件。

示例:

<强> popup.html

<head>
  <script src="popup.js"></script>
</head>
<body>
  <input type="text" id="userText" placeholder="Enter Summoner's name"  />
  <input type="button" id="button" value="Search"/>
</body>

<强> popup.js

window.onload = function(){
  document.getElementById("button").addEventListener("click",check,false);
};
function check(){
  var val = document.getElementById("userText").value;
  if(val != ""){
    var url="http://www.lolking.net/search?name=" + val;
    chrome.tabs.create({url:url});
  }
  else
    alert("Please enter a name");
}

此外,您需要删除content scripts部分,因为您尝试将弹出代码注入到每个页面中,这些内容没有任何意义。