首页 文章

从chrome扩展获取当前网址

提问于
浏览
2

如果当前标签不是同一个网站,我正在制作一个镀铬扩展程序,打开一个网站,所以我设法得到所有这些标签:

chrome.tabs.getAllInWindow(null, allTabs);

我写了一个函数来显示它:

function allTabs(tabs) {
        var tabsURLS = '';
        for (var i = 0; i < tabs.length; i++) {
            tabsURLS = tabs[i].url + '\n';
        }
        alert(tabsURLS);
    }

但我需要获取当前页面网址,以便我通过此获取当前标签:

var object=chrome.tabs.getCurrent(function(){;});

但我无法访问 idurl 等页面属性,此警报显示"undefined" ...

alert(object);

虽然这个警报根本不起作用

alert(object.id);

最后,我读了这页chrome.tabs,当我读到这一行时,我很震惊

getCurrent chrome.tabs.getCurrent(function callback)获取此脚本调用的选项卡 . 如果从非选项卡上下文调用(例如:后台页面或弹出视图),则可能未定义 .

所以我不认为有一个解决方案从Chrome扩展获得当前打开的选项卡...

3 回答

  • 5

    我相信你需要使用getSelected

    <html>
    <head>
    <script>
    
        chrome.tabs.getSelected(null, function(tab) {
            var tabId = tab.id;
            var tabUrl = tab.url;
    
            alert(tabUrl);
        });
    
    </script>
    </head>
    
  • -1

    最终的代码是这样的,它工作得很好..:

    var tabUrl;
    chrome.browserAction.onClicked.addListener(function(activeTab) {
        var x=activeTab.url;
        var newURL = "https://www.google.com";
        if (x!= newURL) {
            //to open a page in a new tab
            chrome.tabs.create({url: newURL,"selected":true});
            //to open the page with the current tab
            chrome.tabs.update(activeTab.id, {url:newURL});
        }
    
    });
    
  • 1

    确保在manifest.json中设置正确的权限以访问选项卡信息:

    "permissions": [
        "tabs",
        "http://*/*"
    ],
    

    之后,您可以使用确定URL

    chrome.tabs.getSelected(null, function (tab) {
        alert(tab.url);
    });
    

相关问题