Google chrome extension 从chrome扩展获取当前url

Google chrome extension 从chrome扩展获取当前url,google-chrome-extension,Google Chrome Extension,我正在制作一个chrome扩展,如果当前选项卡不是同一个网站,它将打开一个网站,因此我设法获得如下所有选项卡: chrome.tabs.getAllInWindow(null, allTabs); 我写了一个函数来显示它: function allTabs(tabs) { var tabsURLS = ''; for (var i = 0; i < tabs.length; i++) { tabsURLS = tabs[i].

我正在制作一个chrome扩展,如果当前选项卡不是同一个网站,它将打开一个网站,因此我设法获得如下所有选项卡:

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);
    }
但我无法访问像
id
url
这样的页面属性,此警报显示“未定义”

而此警报根本不起作用

alert(object.id);
最后,我读了这一页,当我读到这一行时,我感到震惊

getCurrent
chrome.tabs.getCurrent(函数回调)
获取进行此脚本调用的选项卡。如果从非选项卡上下文(例如:背景页或弹出视图)调用,则可能未定义


因此,我认为没有办法从chrome extension获取当前打开的选项卡…

我认为您需要使用getSelected

<html>
<head>
<script>

    chrome.tabs.getSelected(null, function(tab) {
        var tabId = tab.id;
        var tabUrl = tab.url;

        alert(tabUrl);
    });

</script>
</head>

chrome.tabs.getSelected(空,函数(选项卡){
var tabId=tab.id;
var tabUrl=tab.url;
警报(tabUrl);
});

最后的代码是这样的,它工作得很好

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});
    }

});

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

"permissions": [
    "tabs",
    "http://*/*"
],
之后,您可以使用

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

当前接受的答案已过时

根据,
tabs.getSelected()
已进行润滑

改用这个:


tabs.query({active:true})

现在有另一个问题,url不会从第一次更新,页面打开两次,当url更改时,我必须在扩展上单击两次以打开一个新选项卡。。。。有解决方案吗?
chrome.tabs.getSelected
不推荐使用。
"permissions": [
    "tabs",
    "http://*/*"
],
chrome.tabs.getSelected(null, function (tab) {
    alert(tab.url);
});