后台页面支持chrome.tabs.query,当然只要您拥有tabs 权限。这是 Chrome 19 支持的路由。
chrome.tabs.query({
active: true,
currentWindow: true
}, function(tabs) {
var tab = tabs[0];
var url = tab.url;
});
请注意,currentWindow 是必需的,否则它会为每个 窗口返回活动选项卡。这应该保证只返回一个标签。
当然,请记住,这是一个异步 API,除了回调函数之外,您无法访问它提供的任何数据。您可以将值(例如此处的url)存储在更高的范围内,以便另一个函数可以访问它,但这仍然只能在执行回调后提供正确的结果。
(以下是我为后代保留的原始答案 - 此方法不再需要,需要始终运行的背景页面,并且不推荐使用 getSelected()。)
首先把它放在 background.html 中,并使 myURL 变量成为全局变量:
var myURL = "about:blank"; // A default url just in case below code doesn't work
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { // onUpdated should fire when the selected tab is changed or a link is clicked
chrome.tabs.getSelected(null, function(tab) {
myURL = tab.url;
});
});
然后在你想获取页面url的时候在popup.html中运行这个:
chrome.extension.getBackgroundPage().myURL;
因此,如果我要让它出现在弹出窗口中,然后我去 Google 并单击您的页面或浏览器操作,我会在弹出窗口中看到 http://google.com/webhp。