Cal*_*vin 8 javascript url google-chrome-extension
根据我的知识,不可能直接通过获取tab.url(仅在popup.html中可能)并且进行消息传递也需要打开popup.html.反正有没有绕过这个并从background.html获取当前页面的网址?
我最好的镜头是消息传递,我在background.html中使用了这段代码
var bg = chrome.extension.getPopupPage();
var myURL = bg.myURL;
Run Code Online (Sandbox Code Playgroud)
然后在popup.html我有:
chrome.tabs.getSelected(null, function(tab) {
var myURL = tab.url;
})
Run Code Online (Sandbox Code Playgroud)
无论如何,上述根本不起作用.有人知道这样做的方法而不必实际打开弹出窗口吗?
kir*_*irb 20
chrome.tabs.query只要您拥有tabs权限,就可以从后台页面获得支持.这是Chrome 19中支持的路线.
chrome.tabs.query({
active: true,
currentWindow: true
}, function(tabs) {
var tab = tabs[0];
var url = tab.url;
});
Run Code Online (Sandbox Code Playgroud)
请注意,这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;
});
});
Run Code Online (Sandbox Code Playgroud)
当你想获取页面网址时,在popup.html中运行它:
chrome.extension.getBackgroundPage().myURL;
Run Code Online (Sandbox Code Playgroud)
因此,如果我要将其显示在弹出窗口中,然后我转到Google并单击您的页面或浏览器操作,我会http://google.com/webhp在弹出窗口中看到.
| 归档时间: |
|
| 查看次数: |
19547 次 |
| 最近记录: |