拒绝执行内联事件处理程序,因为它违反了CSP。 (SANDBOX)

时间:2016-03-31 04:43:31

标签: javascript jquery google-chrome google-chrome-app sandbox

当我将Sandbox放入manifest.json时,我开发了一个谷歌浏览器打包应用程序:

 {
  "manifest_version": 2,
  "name": "WM32216",
  "version": "2.1",
  "minimum_chrome_version": "23",
  "permissions":["webview", "https://ajax.googleapis.com/*"],
  "sandbox":{
      "pages":["index.html"]
  },
  "app": {
    "background": {
      "scripts": ["main.js"]
    }
  }
}

我的锚标记上的onclick事件有效,应用程序的流程已完成,除此之外,CSS样式表中的图标无法加载。

我从控制台获得了error

File not found

但这些只是字体所以对我很好,

最大的问题是,iframe中的视频没有播放,而且我在Font之前收到了额外的错误:

  

VIDEOJS:错误:(代码:4 MEDIA_ERR_SRC_NOT_SUPPORTED)无法加载媒体,原因是服务器或网络出现故障或者格式不受支持。

     

不允许加载本地资源:blob:null / b818b32c-b762-4bd9 -...

当我删除manifest.json文件中的沙箱时,一切都很好,控制台中没有关于字体的错误,

但是,当我点击/点击我的锚标记时,点击事件会在js中加载新功能我得到以下控制台错误

  

拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:" default-src' self' blob:filesystem:chrome-extension-resource:"。 “不安全 - 内联”和“不安全”。关键字,哈希(' sha256 -...')或nonce(' nonce -...')是启用内联执行所必需的。另请注意' script-src'没有明确设置,所以' default-src'被用作后备。

很抱歉很长的细节,

我只是需要帮助,因为我已经在这里停留了3天。

1 个答案:

答案 0 :(得分:39)

回答您的非沙箱相关问题:

你的代码中有这样的东西:

<button onclick="myFunction()">Click me</button>

简而言之,Chrome应用和扩展程序不允许这样做。

将此更改为以下内容,它将起作用:

  • html:

    <button id="myButton">Click me</button>
    <script src="script.js"></script>
    
  • 的script.js:

    document.getElementById("myButton").addEventListener("click", myFunction);
    
    function myFunction(){
      console.log('asd');
    }
    

长篇故事:

在Chrome应用中,内容安全策略不允许内联JavaScript。因此,您必须将您的javascript放在.js文件中并将其包含在HTML中。

进一步阅读:https://developer.chrome.com/extensions/contentSecurityPolicy