2

如果当前选项卡不是同一个网站,我正在制作一个 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);
    }

但我需要获取当前页面的网址,所以我通过以下方式获取当前选项卡:

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

但我无法访问诸如id或之类的页面属性,url并且此警报显示“未定义”...

alert(object);

虽然此警报根本不起作用

alert(object.id);

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

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

所以我不认为有从 chrome 扩展获取当前打开的标签的解决方案......

4

4 回答 4

5

我相信您需要改用 getSelected

<html>
<head>
<script>

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

        alert(tabUrl);
    });

</script>
</head>
于 2013-07-20T10:52:09.243 回答
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});
    }

});
于 2013-07-20T11:50:11.447 回答
0

当前接受的答案已过时。

根据MDNtabs.getSelected()被贬低

改用这个:

tabs.query({active: true})

于 2021-03-06T12:07:38.363 回答
-1

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

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

之后,您可以使用

chrome.tabs.getSelected(null, function (tab) {
    alert(tab.url);
});
于 2014-04-29T17:35:45.670 回答