gpt4 book ai didi

javascript - Chrome 扩展 : Passing message by button from popup. html 到事件页面

转载 作者:行者123 更新时间:2023-12-02 15:58:36 25 4
gpt4 key购买 nike

我想通过单击 popup.html 中包含的按钮从 popup.html 中打开一个新选项卡。

我的方法是从 popup.html 向 eventPage.js 发送一条消息,然后 eventPage.js 将在收到消息时打开新选项卡。

但是这不起作用。请看下面的代码:

popup.html

<!DOCTYPE html>
<html style=''>
<head>
<script src="popup.js"></script>
</head>

<body style="width:400px;">
<div id="content">
<div id="openTab"><button type="button" id="btnOpenTab" name="btnOpenTab" onclick="sendMessage()">Open New Tab</button></div>
</div>
</body>
</html>

eventPage.js

chrome.extension.onMessage.addListener(
function(request, sender, sendResponse)
{
if (request.action == "openNewTab")
chrome.tabs.create({ url: request.url });
}
);

popup.js

function sendMessage()
{
chrome.extension.sendMessage({
action: "openNewTab",
url: "www.google.com"
});
}

ma​​nifest.json

{
"name": "Open new tab",
"version": "1.0",
"manifest_version": 2,
"description": "Opens new tab",

"background": {
"scripts": ["eventPage.js"],
"persistent": false
},

"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": ["tabs", "<all_urls>"]
}

编辑:在控制台中发现一条错误消息,其中包含以下消息:

拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“script-src 'self' chrome-extension-resource:”。启用内联执行需要“unsafe-inline”关键字、哈希值(“sha256-...”)或随机数(“nonce-...”)。

最佳答案

内容安全策略阻止您在 HTML 中使用 JavaScript(在这种情况下,您会因为 popup.html< 中的 onclick="sendMessage()" 而收到错误消息 文件。

您可以通过从按钮中删除 onclick 属性并在 popup.js 文件中添加事件监听器来获得所需的结果:

document.getElementById('btnOpenTab').onclick = sendMessage;

关于javascript - Chrome 扩展 : Passing message by button from popup. html 到事件页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31389251/

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