我想创建一个自动登录服务器的扩展程序。所以我创建了一个后台页面来检查当前的URL,如果它符合我的URL正则表达式,我将显示页面操作图标。点击页面操作,我打开一个带有一些字段的弹出窗口。我需要获取当前打开的URL并将其填入弹出窗口中的一个字段中(例如,当我们单击标准书签页面操作时,URL会自动填充打开的弹出窗口)。如何在Chrome扩展程序中执行此类操作?我尝试了从背景页面到弹出窗口的消息传递,但它无法正常工作。是否可以发送这样的消息?此外,我尝试为弹出的html文件设置onload,但我注意到它没有触发。请建议一种合适的方法来处理这种情况。
答案 0 :(得分:44)
将chrome.tabs.query
与以下参数一起使用:
active: true
- 获取有效标签lastFocusedWindow: true
- 选择活动窗口Tab
signature。代码段:
// Do NOT forget that the method is ASYNCHRONOUS
chrome.tabs.query({
active: true, // Select active tabs
lastFocusedWindow: true // In the current window
}, function(array_of_Tabs) {
// Since there can only be one active tab in one active window,
// the array has only one element
var tab = array_of_Tabs[0];
// Example:
var url = tab.url;
// ... do something with url variable
});
activeTab
权限足以让它发挥作用。
答案 1 :(得分:3)
您还可以使用promises更清晰地检索选项卡:
getCurrentTab().then(function(tab){
// Do something w/tab
});
function getCurrentTab(){
return new Promise(function(resolve, reject){
chrome.tabs.query({
active: true, // Select active tabs
lastFocusedWindow: true // In the current window
}, function(tabs) {
resolve(tabs[0]);
});
});
}