据我所知,直接获取tab.url是不可能的(只能在popup.html中实现),而且消息传递也需要popup.html打开。有没有办法绕过这个问题,从background.html中获取当前页面的url?
我最擅长的是消息传递,我在background.html中使用了这段代码
var bg = chrome.extension.getPopupPage();
var myURL = bg.myURL;
然后在popup.html中我有:
chrome.tabs.getSelected(null, function(tab) {
var myURL = tab.url;
})
不管怎样,上面的方法根本不起作用。有人知道一种不用打开弹出窗口就可以做到这一点的方法吗?
5条答案
按热度按时间4uqofj5v1#
后台页面支持
chrome.tabs.query
,当然前提是你有tabs
权限,这是Chrome 19支持的路径。注意
currentWindow
是必需的,因为它会返回 every 窗口的活动标签页,这应该保证只返回一个标签页。当然,请记住这是一个异步API --除了在回调函数中,您不能访问它提供的任何数据。您可以将值(如这里的
url
)存储在更高的作用域中,以便其他函数可以访问它,但这仍然只能在回调执行后提供正确的结果。getSelected()
已被弃用。首先将其放入background.html中,并使myURL变量成为全局变量:
然后在popup.html中运行这个,当你想得到页面的url:
因此,如果我让它出现在弹出窗口中,然后我进入谷歌并单击您的页面或浏览器操作,我会在弹出窗口中看到
http://google.com/webhp
。dfuffjeb2#
看到这篇文章后,我觉得应该有一种方法来标记一个讨论为“过时”。
原因是...
此问题需要迁移到manifest v2并...
答案都不工作。我正在使用一个选择onchange和张贴当前标签的网址,这是不工作。
可能这些都在清单v1中起作用。
我的回答是...
t2a7ltrp3#
这是一个多一点的工作,但工作就像一个魅力...
我会使用内容脚本;这是相对简单的&允许你从当前页面获取你想要的任何信息。让后台页面将脚本“注入”到当前页面中以收集你需要的信息。然后脚本将其传递回后台。
background.js:
注入. js(内容脚本):
希望这对某人有帮助!
zsbz8rwp4#
我不明白,上面的代码可以在后台页面使用,以获得当前标签的网址。
wn9m85ua5#
使用此
window.location.href