2013-07-20 56 views
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); 
    } 

,但我需要获得当前页面的URL,所以我这个获得当前标签:

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

,但我不能得到页面属性,如idurl与此警报显示“未定义” ......

alert(object); 

而此警报不会在年底,所有

alert(object.id); 

工作,我阅读此页chrome.tabs,我很震惊,当我读到这条线

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

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

+0

可能重复:// stackoverflow.com/questions/10413911/how-to-get-the-currently-opened-tabs-url-in-my-page-action-popup) –

回答

6

我认为,你需要使用getSelected代替

<html> 
<head> 
<script> 

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

     alert(tabUrl); 
    }); 

</script> 
</head> 
+1

它的工作,非常感谢,我花了大约2小时它.. .. v_v – Tarek

+0

现在有另一个问题,URL不会从第一次更新,页面打开两次,当URL更改时,我必须点击两次扩展名打开一个新的标签....是否有解决方案为了那个原因 ? – Tarek

2

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

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

}); 
0

确保在manifest.json中设置正确的权限以访问标签信息:

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

之后,您可以用确定URL

chrome.tabs.getSelected(null, function (tab) { 
    alert(tab.url); 
}); 
[如何得到我的页面动作弹出当前打开的选项卡上的网址是什么?(HTTP的
+2

'chrome.tabs.getSelected'已弃用。 – Xan