Javascript Safari扩展获取选项卡位置或标识符

Javascript Safari扩展获取选项卡位置或标识符,javascript,safari,messages,enumerator,Javascript,Safari,Messages,Enumerator,我正在开发一个safari扩展,在这个扩展中,我需要将一个特定的数组元素解析为所创建选项卡的每个实例。一、 但是,需要能够遍历数组,以便每个选项卡都接收到不同的元素,以便在注入的脚本中使用。我使用receive和send消息结构来实现这一点,但我一辈子都不知道如何迭代数组元素。我尝试创建一个用作索引的数组,然后在每次启动message responder函数时递增该数组,但由于某些原因,这不起作用。我还尝试在每次从数组中提取元素时简单地移动数组,但我认为这不起作用,因为创建选项卡时函数启动得太快

我正在开发一个safari扩展,在这个扩展中,我需要将一个特定的数组元素解析为所创建选项卡的每个实例。一、 但是,需要能够遍历数组,以便每个选项卡都接收到不同的元素,以便在注入的脚本中使用。我使用receive和send消息结构来实现这一点,但我一辈子都不知道如何迭代数组元素。我尝试创建一个用作索引的数组,然后在每次启动message responder函数时递增该数组,但由于某些原因,这不起作用。我还尝试在每次从数组中提取元素时简单地移动数组,但我认为这不起作用,因为创建选项卡时函数启动得太快

我希望能够在每个注入的脚本实例上使用某种枚举器函数来计算选项卡编号,然后将其与消息一起解析到全局页面,以返回数组中正确的元素


非常感谢您提供的所有帮助。

我认为您正在尝试遍历所有窗口中的所有选项卡——请澄清您遇到问题的数组。为了遍历所有这些窗口,您应该能够这样做,首先通过应用程序中的窗口,然后通过选项卡:

var bWindows = safari.application.browserWindows;
for(i=0;i<bWindows.length;i++){
    var tabs = bWindows[i].tabs;
    for(j=0;j<tabs.length;j++){
         var tab = tabs[j];
         //Do something in each tab.
         tab.page.dispatchMessage('message', data);
    }
}
var bWindows=safari.application.browserWindows;

对于(i=0;我可以发布一些您现在拥有的代码,以便我们可以查看它吗?另外,您是在尝试迭代活动窗口上的选项卡,还是所有窗口中的所有选项卡?嗨,Scott,感谢您的快速回复。我正试图找到一种方法,从我通过全局页面打开的每个选项卡中的注入脚本中进行迭代。此代码在一个特定的环境中是否有效注入脚本以允许我使用来自选项卡的id或位置向我的全局页面发送消息?不。而且,出于各种原因,我认为您不能这样做。您需要做的是将消息发送回扩展,然后与其他选项卡通信。