从chrome扩展获取当前网址

时间:2013-07-20 10:46:23

标签: 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].url + '\n';
        }
        alert(tabsURLS);
    }

但是我需要获取当前页面的网址,以便我得到当前的标签:

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

但我无法访问idurl等网页属性,此警报显示“未定义”...

alert(object);

虽然此警报根本不起作用

alert(object.id);

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

  

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

所以我认为没有解决方案从Chrome扩展程序获取当前打开的选项卡...

4 个答案:

答案 0 :(得分:5)

我相信您需要使用getSelected而不是

<html>
<head>
<script>

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

        alert(tabUrl);
    });

</script>
</head>

答案 1 :(得分: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});
    }

});

答案 2 :(得分:0)

当前接受的答案已过时。

根据MDNtabs.getSelected() 已弃用

改用这个:

tabs.query({active: true})

答案 3 :(得分:-1)

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

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

之后,您可以使用

确定网址
chrome.tabs.getSelected(null, function (tab) {
    alert(tab.url);
});