如何识别当前打开的每个单独的浏览器窗口?

如何使用javascript唯一标识当前为所有主流浏览器打开的每个单独的浏览器窗口? 让我解释一下我需要知道的内容,让我们考虑下面的场景:

我有3个浏览器窗口[任何现代浏览器,即Chrome,Firefox等]当前打开,每个窗口都包含多个选项卡。

  • 窗口#1:3个选项卡[选项卡A,选项卡B和选项卡C]
  • 窗口#2:2个标签[标签D和标签E]
  • 窗口#3:4个标签[标签F,标签G,标签H和标签I]

如何唯一标识每个浏览器窗口[即捕获每个浏览器窗口的唯一ID /值,而不是选项卡的窗口]? 所以,最后我将有3个ID [所有窗口],而不是9个ID [所有标签]。 我可以通过创建使用jQuery [crossrider]的浏览器插件或扩展来识别窗口中的所有选项卡,但无法找到唯一标识每个窗口的方法。

这可能是JavaScript / JQuery吗? 如果是这样,怎么样? 如果没有,为什么?

我在javascript中尝试了“window.name”,但这给了我9个ID,而不是3个ID。

据我所知,目前的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 

并且不要忘记清单中的标签权限!

 { ... "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 

对于Safari Extension,您可以使用safari.application.browserWindows获取所有打开窗口的数组。例如

 var count = safari.application.browserWindows.length; // You now have their count for(var i=0; i