Résumé (TL;DR)
Stocker une référence à un tab
o window
Soit par id
(qui est fixé) :
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/"
Ou par objet (qui est fixe) :
set T to the current tab in the front window
...
set the URL of T to "https://apple.stackexchange.com/"
MAIS pas par index
(qui change).
Vous disposez de deux options pour stocker les références à des objets (tels que les tabs
) dans AppleScript. Plus précisément, vous posez une question sur le id
de l'onglet. Il faut faire attention ici : il existe des deux les modes de référencement Chrome tabs
y windows
en utilisant des chiffres :
Référencement Tabs
/ Windows
par id
/ index
Par index
: par exemple tab 2 of window 1
Il s'agit de la commandé position de l'onglet de l'extrême gauche à l'extrême droite, soit tab 1
fait référence à la left tab
, tab 2
fait référence à l'onglet à droite de tab 1
etc.
Ces indices changement si les onglets se déplacent, s'ouvrent et se ferment. Par exemple, si vous fermez le milieu de trois onglets, tab 3
devient alors tab 2
.
Avec le windows
la collection index
est le commandé position de la fenêtre, de l'avant à l'arrière, ordonnée selon la fenêtre qui a reçu le focus le plus récemment. window 1
est synonyme de front window
et se concentre actuellement. Lorsque vous passez à une autre Chrome cela devient maintenant window 1
et le précédent window 1
est maintenant window 2
.
Par conséquent, le référencement d'un objet et le stockage des références à cet objet par son index
est une méthode très peu fiable, à l'exception des références à la propriété front window
o front tab
où seul compte l'objet qui a actuellement le focus, quel qu'il soit. Par conséquent, tell the front tab of the front window to...
est une utilisation parfaitement raisonnable de la index
et probablement le seul.
Notez, que le index
est une propriété nommée pour window
des objets, qui peuvent être lus et set (le régler sur 1
pour le mettre en avant). Bien que tab
les objets sont désignés par un index
il ne s'agit pas d'une propriété nommée que l'on peut lire ou définir.
Par id
: par exemple tab id 54 of window id 53
Il s'agit d'un unique , Correction de propriété attribuée à chaque objet au moment de sa création, et sa valeur augmente généralement au fur et à mesure que l'on crée de nouveaux objets dans une famille d'objets similaires. Donc, en général , window id 2088
a été créé après window id 25
.
Il est important de noter que le id
fournit une valeur de référence fixe avec laquelle vous pouvez stocker de manière fiable et sûre des objets dans des variables pour une utilisation ultérieure, en sachant qu'ils feront toujours référence à l'exact même objet, quel que soit l'endroit de votre script où la variable est évaluée et comment la disposition des objets a changé (jusqu'à ce que l'objet soit détruit).
Définition et obtention de la variable
Lorsque vous souhaitez attribuer une référence à un tab
ou un window
à une variable, vous pouvez choisir de :
soit de stocker son id
puis faire référence à la valeur de la propriété tab
par son id
plus tard, dont la valeur sera celle de la variable ;
ou vous pouvez stocker l'objet entier lui-même dans une variable AppleScript. C'est souvent le plus simple.
Par id
A magasin par id
vous pouvez le faire comme ceci :
set T to the id of the active tab of the front window
Sur Chrome le active tab of the front window
pourrait revenir tab id 34 of window id 2045
. Le site id
de ce tab
L'objet est 34
donc T
se voit attribuer la valeur 34
.
Puis, plus tard, pour effectuer des actions sur ce même onglet, qui n'est peut-être plus le active tab
vous pouvez le faire comme ceci :
tell tab id T of the front window to execute JavaScript...
(en supposant que le front window
est toujours window id 2045
; sinon, vous devrez stocker l'élément window id
dans une valeur séparée également).
Notez que la référence est à un tab id T
y pas tab T
qui serait tab 34
(c'est-à-dire index
34, si vous aviez 34 onglets ouverts). Le site id
étiquette doit être inclus.
Par objet
Pour enregistrer le tab
l'objet lui-même, ce qui est souvent préférable, vous le faites comme ceci :
set T to the front tab of the front window
Bien que j'aie implicitement utilisé index
ici, AppleScript fait en fait référence à la tab
et le window
à la fois par leur id
(ce qu'il fait dans presque toutes les situations). Ainsi, si vous évaluez T
vous y trouverez tab id 34 of window id 2045
et non tab 1 of window 1
.
Vous pouvez également attribuer le tab
à une variable comme ceci :
set T to the first tab of window id 2045 whose URL is "chrome://newtab/"
et T
contiendra tab id 30 of window id 2045
que l'on peut ensuite appeler pour effectuer des actions à l'intérieur/à l'extérieur :
set the URL of T to "https://stackexchange.com"
ou
tell T to close