本文根据 Opera 官方文档编写,介绍扩展中对标签和窗口的简单操作。

无论操作是标签还是窗口都需要在 manifest.json 文件中声明 tabs 权限

{
  ...
  "permissions": ["tabs"],
  ...
}

创建标签

chrome.browserAction.onClicked.addListener(function() {
  chrome.tabs.create({'url': 'http://sxlf.org'});
});

访问当前标签

chrome.tabs.query({currentWindow: true, active: true}, function(tab){})

更新标签

更新标签首先用 qurey() 方法获取标签,然后用 update() 方法更新相关内容。

一个简单的例子,点击按钮让当前窗口中所有访问伤心凉粉网页的标签都跳转到首页:

var pattern = "http://sxlf.org/*"; 
chrome.browserAction.onClicked.addListener(function() {
  chrome.tabs.query({'currentWindow': true, 'url': pattern}, function(tab) { //匹配选择符合条件的标签
    for (var i=0; i<tab.length; i++){ //循环更新标签
      chrome.tabs.update(tab[i].id, {'url': 'http://sxlf.org'}); 
    }
  });
});

关闭、刷新、克隆标签

值得一提的是,这三个方法并不需要在 manifest.json 文件中声明 tabs 权限。

chrome.tabs.query({currentWindow: true, active: true}, function(tab){
  chrome.tabs.remove(tab[0].id); // 关闭标签
});
chrome.tabs.query({currentWindow: true, active: true}, function(tab){
  chrome.tabs.reload(tab[0].id); // 刷新标签
});
chrome.tabs.query({currentWindow: true, active: true}, function(tab){
  chrome.tabs.duplicate(tab[0].id); // 克隆标签
});

窗口的操作和标签操作大同小异,可以在访问官方的 API 查看。

标签: