Resumen (TL;DR)
Almacena una referencia a un tab
o window
O bien 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 cuando almacena referencias a objetos (como tabs
) en AppleScript. En concreto, se pregunta por el id
de la pestaña. Aquí hay que tener cuidado: hay dos formas de referenciación Cromo tabs
y windows
usando números:
Referencia Tabs
/ Windows
por id
/ index
❶・By index
: p. ej. tab 2 of window 1
Esto se refiere a la ordenado posición de la pestaña de más a la izquierda a más a la derecha, es decir tab 1
se refiere al left tab
, tab 2
se refiere a la pestaña a la derecha de tab 1
etc
Estos índices cambiar si las pestañas se mueven, se abren y se cierran. Por ejemplo, si se cierra la mitad de tres pestañas, tab 3
entonces se convierte en tab 2
.
Con la windows
colección, el index
es el ordenado posición de la ventana, de la más delantera a la más trasera, ordenada según la ventana que recibió el foco más recientemente. window 1
es sinónimo de la front window
y actualmente tiene enfoque. Cuando se cambia a un Cromo esto se convierte ahora en window 1
y el anterior window 1
es ahora window 2
.
Por lo tanto, referenciar un objeto y almacenar referencias a ese objeto por su index
es un método muy poco fiable, con la excepción de las referencias al front window
o front tab
donde sólo importa que el objeto tenga actualmente el foco, 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 el index
es una propiedad con nombre para window
objetos, que pueden ser leídos y set (ponerlo en 1
para llevarlo al frente). Aunque tab
los objetos son referidos por un index
no es una propiedad con nombre que se pueda leer o establecer.
❷・By id
: p. ej. tab id 54 of window id 53
Este es un único , fijo asignada a cada objeto en el momento de su creación, y normalmente asciende en valor a medida que se crea cada nuevo objeto de una familia de objetos similares. Por lo tanto, en general , 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 puedes almacenar de forma fiable y segura objetos en variables para su uso posterior, sabiendo que seguirán refiriéndose exactamente al mismo objeto independientemente de en qué parte de tu script se evalúe la variable y de cómo haya cambiado la disposición de los objetos (hasta que el objeto sea destruido).
Cómo establecer y obtener la variable
Cuando se desea asignar una referencia a un tab
o un window
a una variable, puede elegir:
o bien almacenar su actual id
y, a continuación, hacer referencia al valor de la propiedad tab
por su id
más adelante, cuyo valor será el de la variable;
o puede almacenar el objeto completo en una variable AppleScript. Esto suele ser lo más fácil.
Por id
A tienda por id
, puedes hacerlo así:
set T to the id of the active tab of the front window
En Cromo El active tab of the front window
podría volver tab id 34 of window id 2045
. El id
de eso tab
el objeto es 34
Así que T
se le asigna el valor 34
.
Luego, más tarde, para realizar acciones en esa misma pestaña, que ya no puede ser la active tab
, puedes hacerlo así:
tell tab id T of the front window to execute JavaScript...
(suponiendo que el front window
sigue siendo window id 2045
; de lo contrario, tendrá que almacenar el window id
en un valor separado también).
Tenga en cuenta que la referencia es a un tab id T
y no tab T
, que sería tab 34
(es decir index
34, si tiene 34 pestañas abiertas). El id
etiqueta debe se incluya.
Por objeto
Para almacenar el tab
objeto mismo, lo que a menudo es preferible, se hace así:
set T to the front tab of the front window
Aunque he utilizado implícitamente index
aquí, AppleScript realmente hace referencia al tab
y el window
tanto por su id
(que lo hace en casi todas las situaciones). Por lo tanto, si se 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 tab
a una variable como esta:
set T to the first tab of window id 2045 whose URL is "chrome://newtab/"
y T
contendrá tab id 30 of window id 2045
que luego se puede llamar para realizar acciones dentro/sobre:
set the URL of T to "https://stackexchange.com"
o
tell T to close