我有一个problema在扩展Chrome清单v3中右键单击打开我的扩展(没有在标签,没有在弹出窗口)

qcbq4gxm  于 2023-10-14  发布在  Go
关注(0)|答案(1)|浏览(107)

我在开发Chrome扩展程序时遇到问题,有谁知道是否可以从Chrome的contextMenus打开我的扩展程序?用鼠标右键打开不行吗?
示例:在background.js中

chrome.runtime.onInstalled.addListener(function () {
        chrome.contextMenus.create({
            title: "Test Ex",
            contexts: ["all"],
            id: "test"
        });
    });

    chrome.contextMenus.onClicked.addListener(function (info, tab) {
        if (info.menuItemId === "test") {
            chrome.scripting.executeScript({
                target: { tabId: tab.id },
                function: () => {
                    chrome.runtime.sendMessage({ action: "executeAuth" 
                }
             });
         }
    });

在content.js中

chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) {
        if (message.action === "executeAuth") {
            executeAuth();
        }
    });

    function executeAuth() {
        window.location.replace(`../Views/home.html`);
    }

但它不工作,有什么办法我可以做到这一点?我尝试了几种解决方案,但没有一个能达到我的目的。
我需要这个问题的帮助,我已经尝试了几件事,但最好的事情是使用弹出窗口,但它的可怕(丑陋)。如果你已经这样做了,你可以发送一个例子,在清单v-3中。

zaqlnxep

zaqlnxep1#

你可以像wOxxOm说的那样解决你的问题。下面是我的解决方案,以同样的方式:
background.js中:

chrome.runtime.onInstalled.addListener(function () {
        chrome.contextMenus.create({
            title: "Test Ex",
            contexts: ["all"],
            id: "test"
        });
    });

    chrome.contextMenus.onClicked.addListener(function (info, tab) {
        if (info.menuItemId === "test") {
            chrome.tabs.sendMessage(tab.id, { action: "executeAuth" });
        }
    });

content.js没有变化。
阅读更多在这里:Chrome extension message passing

相关问题