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