gpt4 book ai didi

javascript - 谷歌浏览器扩展制作中的内容安全策略错误

转载 作者:行者123 更新时间:2023-11-29 16:04:18 25 4
gpt4 key购买 nike

我正在制作一个 chrome 扩展程序,它将在新标签页中打开页面上的所有链接。

这是我的代码文件:

list .json

{
"name": "A browser action which changes its icon when clicked.",
"version": "1.1",
"permissions": [
"tabs", "<all_urls>"
],
"browser_action": {
"default_title": "links", // optional; shown in tooltip
"default_popup": "popup.html" // optional
},
"content_scripts": [
{
"matches": [ "<all_urls>" ],
"js": ["background.js"]
}
],
"manifest_version": 2
}

弹出窗口

<!doctype html>
<html>
<head>
<title>My Awesome Popup!</title>
<script>
function getPageandSelectedTextIndex()
{
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function (response)
{
console.log(response.farewell);
});
});
}
chrome.browserAction.onClicked.addListener(function(tab) {
getPageandSelectedTextIndex();
});
</script>
</head>
<body>
<button onclick="getPageandSelectedTextIndex()">
</button>
</body>
</html>

背景.js

chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (request.greeting == "hello")
updateIcon();

});
function updateIcon() {
var allLinks = document.links;
for (var i=0; i<allLinks.length; i++) {
alllinks[i].style.backgroundColor='#ffff00';

}
}

最初我想突出显示页面上的所有链接或以某种方式标记它们;但我收到错误“由于内容安全策略而拒绝执行内联脚本”。

当我按下弹出窗口内的按钮时,出现此错误:Refused to execute inline event handler because of Content-Security-Policy

请帮助我修复这些错误,这样我就可以使用我的 chrome 扩展程序在新标签页中打开所有链接。

最佳答案

"manifest_version": 2的后果之一是那个Content Security Policy默认情况下启用。并且 Chrome 开发人员选择对此严格,并且始终禁止内联 JavaScript 代码 - 只允许执行放置在外部 JavaScript 文件中的代码(以防止扩展中的 Cross-Site Scripting vulnerabilities)。所以不是定义 getPageandSelectedTextIndex()popup.html 中发挥作用你应该把它放到 popup.js 中文件并将其包含在 popup.html 中:

<script type="text/javascript" src="popup.js"></script>

<button onclick="getPageandSelectedTextIndex()">也必须更改,onclick属性也是一个内联脚本。您应该分配一个 ID 属性:<button id="button"> .然后在popup.js您可以将事件处理程序附加到该按钮:

window.addEventListener("load", function()
{
document.getElementById("button")
.addEventListener("click", getPageandSelectedTextIndex, false);
}, false);

关于javascript - 谷歌浏览器扩展制作中的内容安全策略错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35509289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com