我有一个错误:
拒绝执行内联脚本,因为它违反了以下内容安全策略指令:
"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>
发布于 2014-08-20 10:06:50
我有这个消息是因为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,但您可以尝试以下几种方法:
发布于 2016-06-04 21:41:47
我也遇到过类似的问题。我没有使用任何内联脚本或内联事件处理程序,但仍然收到该错误。结果,jQuery内部试图评估这类请求的响应,而这在Chrome扩展中是不允许的。在我的例子中,我使用的是$.ajax()
和dataType: 'json'
。我通过将dataType
更改为text
,然后使用JSON.parse()
手动解析JSON解决了这个问题。
此外,值得一提的是,大多数Chrome在解析时尝试执行包含在给定jQuery字符串中的脚本,这会导致在中使用时出现类似的错误。在这种情况下,需要显式转义响应中的脚本。下面是jQuery parseHTML()
文档中的一句话:
大多数接受jQuery字符串的HTML将运行包含在HTML中的脚本。除非keepScripts显式为真,否则jQuery.parseHTML不会在解析的超文本标记语言中运行脚本。但是,在大多数环境中,仍然可以间接执行脚本,例如通过属性。调用者应该意识到这一点,并通过清除或转义来自URL或cookies等来源的任何不受信任的输入来防范这种情况。为了将来的兼容性,当keepScripts未指定或为false时,调用者不应依赖于运行任何脚本内容的能力。
请注意,由于Chrome对内联脚本计算的限制,这些点在Chrome扩展中使用时会出现问题。它们可能不会在一般情况下成立。
发布于 2018-12-31 17:56:28
我也曾面对过这个问题。
我把下面的代码放在head-tag
的index.html
中
<script>
var global = global || window;
var Buffer = Buffer || [];
var process = process || {
env: { DEBUG: undefined },
version: []
}
</script>
然后,我将其移动到文件script.js
中,并在index.html
中引用,如下所示
<script src="./script.js"></script>
仍然收到该错误,并最终删除了./
并解决了问题
<script src="script.js"></script>
https://stackoverflow.com/questions/24798669
复制相似问题