我想创建一个扩展来自动登录到我的服务器。所以我创建了一个背景页面来检查当前的 URL,如果它符合我的 URL 正则表达式,我将显示页面操作图标。单击页面操作时,我将打开一个包含一些字段的弹出窗口。我需要获取当前打开的 URL 并将其填充到弹出窗口中的一个字段中(例如,当我们单击标准书签页面操作时,URL 会自动填充到打开的弹出窗口中)。我怎样才能在 chrome 扩展中做这样的事情?我尝试将消息从后台页面传递到弹出 html,但它不起作用。可以发送这样的消息吗?我还尝试为弹出的 html 文件设置 onload,但我注意到它没有触发。请建议一种合适的方法来处理这种情况。
问问题
21616 次
2 回答
47
chrome.tabs.query
与以下参数一起使用:
- 查询信息对象:
active: true
- 获取活动标签lastFocusedWindow: true
- 选择活动窗口
- 回调函数:
此函数接收一个参数:一组匹配的选项卡。由于只能激活一个窗口,并且该窗口中只有一个选项卡,因此该数组只有一个元素。这个元素是一个带有Tab
签名的对象。
代码片段:
// 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
权限足以使其正常工作。
于 2012-05-02T15:54:15.807 回答
4
您还可以使用 Promise 以更简洁的方式检索选项卡:
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]);
});
});
}
于 2015-06-14T01:39:42.490 回答