据我所知,目前的 Crosssrider API 无法做到这一点!
您必须切换回非跨浏览器插件实现,
以便为您所针对的每个浏览器实现单独的扩展。
例如在Chrome扩展中,使用chrome.windows.getAll
函数
chrome.windows.getAll(object getInfo, function callback)
获取所有窗口实例,您可以在其中计算和识别每个实例。例如:
chrome.windows.getAll({populate : true}, function (window_list) {
var count = window_list.length; // You now have their count
for(var i=0; i<count; i++) {
var myWindow = window_list[i];
// Do whatever you want here !
}
});
并且不要忘记清单中的选项卡权限!
{
...
"permissions": ["tabs"],
...
}
而对于Firefox插件,使用nsIWindowMediator
类,调用它的getEnumerator
方法
var windowMediator = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator);
var enumerator = windowMediator.getEnumerator(null); // returns an iterator of all windows
var count = 0;
while (enumerator.hasMoreElements()) {
var myWindow = enumerator.getNext();
count++;
// Do whatever you want here !
}
// You now have their count
对于Safarisafari.application.browserWindows
扩展,您可以使用例如获取所有打开的窗口的数组
var count = safari.application.browserWindows.length; // You now have their count
for(var i=0; i<count; i++) {
var myWindow = safari.application.browserWindows[i];
// Do whatever you want here !
}