Resumen (TL; DR)
Almacene una referencia a un tab o window
O por id (que es fijo):
set T to the id of the current tab in the front window
...
set the URL of tab id T of the front window to "https://apple.stackexchange.com/"
O por objeto (que es fijo):
set T to the current tab in the front window
...
set the URL of T to "https://apple.stackexchange.com/"
PERO no por index (que cambia).
Tiene un par de opciones al almacenar referencias a objetos (como tabs ) en AppleScript. Específicamente, estás preguntando sobre la propiedad id de la pestaña. Debes tener en cuenta que hay dos maneras de hacer referencia a Chrome tabs y windows usando números:
Referencia a Tabs / Windows por id / index
❶ ・ Por index : por ejemplo, tab 2 of window 1
Esto se refiere a la posición ordenada de la pestaña de izquierda a derecha, es decir, tab 1 se refiere a left tab , tab 2 se refiere a la pestaña a la derecha de tab 1 , etc. ..
Estos índices cambian si las pestañas se mueven, abren y cierran. Por ejemplo, si cierras la mitad de las tres pestañas, tab 3 se convierte en tab 2 .
Con la colección windows , index es la posición ordenada de la ventana desde la parte frontal hasta la posterior, ordenada según la ventana que recibió el foco más recientemente. window 1 es sinónimo de front window , y actualmente tiene el foco. Cuando cambias a una ventana Chrome diferente, ahora se convierte en window 1 , y el window 1 anterior ahora es window 2 .
Por lo tanto, hacer referencia a un objeto y almacenar referencias a ese objeto por su propiedad index es un método muy poco confiable, con la excepción de las referencias a front window o front tab donde solo importa que el objeto tenga foco actualmente , independientemente de cuál sea. Por lo tanto, tell the front tab of the front window to... es un uso perfectamente razonable del index , y probablemente el único.
Tenga en cuenta que la propiedad index es una propiedad con nombre para los objetos window , que se pueden leer y establecidos (configúrelo en 1 para ponerlo al frente). Aunque los objetos tab son referidos por una propiedad index , no es una propiedad con nombre que uno pueda leer o establecer.
❷ ・ Por id : por ejemplo, tab id 54 of window id 53
Esta es una propiedad única , fija asignada a cada objeto en el momento de su creación, y generalmente aumenta de valor a medida que cada nuevo objeto en una familia de similares Se crea objetos. Entonces, en términos generales , window id 2088 se creó después de window id 25 .
Es importante destacar que el id proporciona un valor de referencia fijo con el que puede almacenar objetos de forma confiable y segura para su uso posterior, sabiendo que seguirán haciendo referencia al mismo objeto exacto, independientemente de en qué lugar del script se evalúe la variable y cómo ha cambiado la disposición de los objetos (hasta que se destruye el objeto).
Configuración y obtención de la variable
Cuando desee asignar una referencia a un tab o un window a una variable, puede elegir:
cualquiera almacena su valor real de propiedad id , luego haga referencia al tab por su id más adelante, cuyo valor será el valor de la variable;
o puede almacenar todo el objeto en una variable de AppleScript. Esto es a menudo lo más fácil.
Por id
Para almacenar por id , puedes hacerlo así:
set T to the id of the active tab of the front window
En Chrome , el active tab of the front window podría devolver tab id 34 of window id 2045 . El id de ese objeto tab es 34 , por lo que a T se le asigna el valor 34 .
Luego, más adelante, para realizar acciones en esa misma pestaña, que puede que ya no sea el active tab , puedes hacerlo de esta manera:
tell tab id T of the front window to execute JavaScript...
(suponiendo que el front window sigue siendo window id 2045 ; de lo contrario, también deberá almacenar el valor window id en un valor separado).
Tenga en cuenta que la referencia es a tab id T y not tab T , que sería tab 34 (es decir, index 34, si tuvieras 34 pestañas abiertas). Se incluirá la etiqueta id must .
Por objeto
Para almacenar el objeto tab , que a menudo es preferible, lo haces así:
set T to the front tab of the front window
Aunque implícitamente he usado los valores de index aquí, AppleScript realmente hace referencia a tab y a window , tanto por sus valores de id (que lo hace en casi todas las situaciones). Así que si evalúa T , encontrará que contiene tab id 34 of window id 2045 y no tab 1 of window 1 .
También puede asignar el objeto tab a una variable como esta:
set T to the first tab of window id 2045 whose URL is "chrome://newtab/"
y T contendrán tab id 30 of window id 2045 , a los que más tarde podrás llamar para realizar acciones dentro de / upon:
set the URL of T to "https://stackexchange.com"
o
tell T to close