尽管“扩展无法编写网络存储”,但如何获取传递给扩展的网络存储URL

时间:2019-04-13 13:33:43

标签: google-chrome google-chrome-extension

广泛搜索之后,我发现了Rob的答案:https://stackoverflow.com/a/11614440/7907844“网络商店无法用扩展程序编写脚本”。

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

1 个答案:

答案 0 :(得分:0)

我最终实现了后台脚本,该脚本将当前活动的选项卡URL保存在我从popup.js中访问的变量中,因为网络商店不允许我们在其中运行内容脚本。仅当我使用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);
        })
});