据我所知,这不能与当前Crosssrider API来完成!
您必须切换回非跨浏览器插件实施,
,以便您针对每个您定位的浏览器实施单独的扩展。
例如在铬扩展,使用chrome.windows.getAll
功能
chrome.windows.getAll(object getInfo, function callback)
获得Windows的所有情况下,您会数数,识别每一个。 例如:
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"],
...
}
和火狐插件,使用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
而对于Safari浏览器扩展,可以使用safari.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 !
}
我不是很清楚你为什么要识别窗口,什么是用例?现代浏览器通常将标签视为窗口(以前称为“许多打开的窗口”现在是“许多打开的标签”),并将它们作为单独的过程来实现。所以,真的,你只需要从你的评论中可以看出你已经设法获得的标签身份。 [免责声明]我是Crossrider的员工 – Shlomo
感谢您的帮助。我想通过用户按钮点击将用户的浏览会话[当前打开的窗口和标签]保存到云/服务器,以便用户可以离开/关闭他/她的浏览器/计算机,再次返回并开始浏览他/她离开。例如,当Chrome崩溃时,它会记住用户的上一次会话,并在崩溃前重新打开所有窗口和标签,以便用户不必重新打开它们。在这种情况下,我不想在1窗口中保存/打开9个选项卡,但在窗口#1中选择3个选项卡,在窗口2中选择2个选项卡,并在窗口3中选择4个选项卡。 – Ali007
有很多扩展/插件的场景,其中窗口跟踪非常重要,我认为Crossrider应该更新其API以支持浏览器窗口识别 –