首页 > 解决方案 > 尽管“webstore不能由扩展编写脚本”,如何将webstore URL传递给扩展

问题描述

经过大量搜索后,我发现了 Rob 的答案:https ://stackoverflow.com/a/11614440/7907844 “webstore 不能由扩展编写脚本”。

我只想提取 URL 并将其传递给扩展。有没有办法做到这一点?我可以从后台脚本查询所有打开的选项卡,并将活动选项卡 URL 保存在扩展可访问的变量中吗?

标签: google-chromegoogle-chrome-extension

解决方案


我最终实现了后台脚本,该脚本将当前活动的选项卡 URL 保存在我从 popup.js 中访问的变量中,因为 webstore 不允许我们在那里运行内容脚本。chrome.extension.getBackgroundPage()popup.js 里面只有在我使用var currentUrl.

var currentUrl;
var activeTabId;

chrome.tabs.onUpdated.addListener(
    function (tabId, changeInfo, tab) {
        if (changeInfo.status === "complete") {
            chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
                let activeTab = tabs[0];
                currentUrl = activeTab.url;
                activeTabId = activeTab.id;
                if(currentUrl.includes("chrome.google.com/webstore/detail")) {
                    chrome.pageAction.show(activeTab.id);
                } else {
                    chrome.pageAction.hide(activeTab.id);
                }
                console.log("page loaded: ", currentUrl);
            });
        }
    });

chrome.tabs.onActivated.addListener(function (object) {
        activeTabId = object.tabId;
        chrome.tabs.get(activeTabId, function(tab){
            currentUrl = tab.url;
            if(tab.url.includes("chrome.google.com/webstore/detail")) {
                chrome.pageAction.show(object.tabId);
            } else {
                chrome.pageAction.hide(object.tabId);
            }
            console.log("loaded tab selected: ", tab.url);
        })
});

推荐阅读