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

标签 javascript html google-chrome popup message-passing

我想通过单击 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/

相关文章:

javascript - chrome 上奇怪的本地存储项目

javascript - 寻找显示 block /无和动画的变化

javascript - 使用来自外部 JS 文件的 Google Analytics 异步代码

javascript - 在网页 HTML/Javascript 中的两个菜单选项卡之间切换

javascript - 检测 altKey 和/或 ctrlKey

google-chrome - Chrome 扩展已下架。你是如何进行的?

javascript - 如果列表中存在特定值,则从 Array 中删除数组

javascript - 使用jQuery模拟鼠标点击坐标

html - 网站的移动 View 菜单

javascript - 响应式 jQuery 数据表无法获取一行的详细信息