Javascript 拒绝执行内联事件处理程序,因为它违反CSP。(沙箱)
我正在开发一个GoogleChrome打包的应用程序,当时我将沙箱放在Javascript 拒绝执行内联事件处理程序,因为它违反CSP。(沙箱),javascript,jquery,google-chrome,google-chrome-app,sandbox,Javascript,Jquery,Google Chrome,Google Chrome App,Sandbox,我正在开发一个GoogleChrome打包的应用程序,当时我将沙箱放在manifest.json中: { "manifest_version": 2, "name": "WM32216", "version": "2.1", "minimum_chrome_version": "23", "permissions":
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样式表中的图标不加载之外
我从控制台得到一个错误
未找到文件
但是那些只是字体,所以我觉得没问题
最大的问题是,iframe中的视频无法播放,我在使用字体之前还遇到了其他错误,这些错误包括:
VIDEOJS:ERROR:(代码:4媒体\u ERR\u SRC\u不受支持)无法加载媒体,原因可能是服务器或网络出现故障,或者是格式不受支持
不允许加载本地资源:blob:null/b818b32c-b762-4bd9-
当我移除manifest.json文件中的沙盒时,一切都很好,控制台中没有关于字体的错误
但是,当我点击/点击我的锚定标签时,我得到了如下控制台错误,该锚定标签有一个点击事件,可以在js中加载一个新函数:
拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“default src'self'blob:filesystem:chrome extension resource:”。启用内联执行需要'unsafe inline'关键字、哈希('sha256-…')或nonce('nonce-…')。还请注意,没有显式设置“script src”,因此使用“default src”作为回退
很抱歉说了这么长的细节
我只是需要帮助,因为我已经被困在这里三天了。回答你的非沙箱相关问题: 您的代码中有如下内容:
<button onclick="myFunction()">Click me</button>
长话短说:
在chrome应用程序中,内容安全策略不允许内联javascript。因此,您必须将javascript放在.js文件中,并将其包含在HTML中
进一步阅读:是的,我忘记了内联javascript是不允许的,但是我如何获得被点击的锚标记的ID呢?虽然ID是动态的..为什么ID是动态的?您可以使用类或数据作为html属性吗?有了javascript,您可以引用的很多东西都是DOM,比如find all,它是动态的,因为所有内容都是来自POST
<button id="myButton">Click me</button>
<script src="script.js"></script>
document.getElementById("myButton").addEventListener("click", myFunction);
function myFunction(){
console.log('asd');
}