Riepilogo (TL; DR)
Memorizza un riferimento a tab
o window
O di id
(che è corretto):
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 per oggetto (che è corretto):
set T to the current tab in the front window
...
set the URL of T to "https://apple.stackexchange.com/"
MA non da index
(che cambia).
Hai un paio di opzioni quando memorizzi riferimenti ad oggetti (come tabs
) in AppleScript. Nello specifico, stai chiedendo la proprietà id
della scheda. Devi essere attento qui: ci sono due modi di referenziare Chrome tabs
e windows
usando i numeri:
Riferimento a Tabs
/ Windows
da id
/ index
❶・By index
: e.g. tab 2 of window 1
Questo si riferisce alla posizione ordinata della scheda da sinistra a destra, ovvero tab 1
si riferisce a left tab
, tab 2
si riferisce a tab a destra di tab 1
, ecc ..
Questi indici cambiano se le schede si spostano, si aprono e si chiudono. Ad esempio, se chiudi la metà di tre schede, tab 3
diventa tab 2
.
Con la raccolta windows
, la index
è la posizione ordinata della finestra dalla prima all'ultima estremità, ordinata da quale finestra ha ricevuto il focus più recente. window 1
è sinonimo di front window
e attualmente ha lo stato attivo. Quando passi a un'altra finestra Chrome , questa diventa window 1
e la precedente window 1
ora è window 2
.
Pertanto, fare riferimento a un oggetto e archiviare riferimenti a tale oggetto con la sua proprietà index
è un metodo molto inaffidabile, con l'eccezione dei riferimenti a front window
o front tab
in cui è importante che l'oggetto sia attualmente attivo , indipendentemente da quale sia. Pertanto, tell the front tab of the front window to...
è un uso perfettamente ragionevole del index
, e probabilmente l'unico.
Si noti che la proprietà index
è una proprietà denominata per gli oggetti window
, che può essere letta e impostata (impostarla su 1
per portarla in primo piano). Sebbene gli oggetti tab
vengano indicati da una proprietà index
, non è una proprietà denominata che è possibile leggere o impostare.
❷・By id
: e.g. tab id 54 of window id 53
Questa è una proprietà unica , fissa assegnata a ciascun oggetto al momento della sua creazione, e tipicamente sale di valore come ogni nuovo oggetto in una famiglia di simili gli oggetti sono creati. Quindi, in generale , window id 2088
è stato creato dopo window id 25
.
È importante sottolineare che id
fornisce un valore di riferimento fisso con il quale è possibile archiviare in modo affidabile e sicuro gli oggetti nelle variabili per un uso futuro, sapendo che si riferiranno ancora allo stesso oggetto esatto indipendentemente da dove nel tuo script viene valutata la variabile e come è cambiata la disposizione degli oggetti (fino a quando l'oggetto non viene distrutto).
Impostazione e recupero della variabile
Quando desideri assegnare un riferimento a tab
o a window
a una variabile, puoi scegliere di:
o memorizza il suo valore di proprietà id
effettivo, quindi fa riferimento a tab
con id
in seguito, il cui valore sarà il valore della variabile;
o puoi memorizzare l'intero oggetto stesso in una variabile AppleScript. Questo è spesso il più semplice.
di id
Per memorizzare per id
, puoi farlo in questo modo:
set T to the id of the active tab of the front window
In Chrome , active tab of the front window
potrebbe restituire tab id 34 of window id 2045
. Il id
di quell'oggetto tab
è 34
, quindi T
viene assegnato il valore 34
.
Successivamente, per eseguire azioni su quella stessa scheda, che potrebbe non essere più active tab
, puoi farlo in questo modo:
tell tab id T of the front window to execute JavaScript...
(assumendo che front window
sia ancora window id 2045
, altrimenti dovrai memorizzare il valore window id
anche in un valore separato).
Tieni presente che il riferimento è a tab id T
e non tab T
, che sarebbe tab 34
(cioè index
34, se hai aperto 34 schede). L'etichetta id
deve essere inclusa.
Per oggetto
Per memorizzare l'oggetto tab
stesso, che è spesso preferibile, lo fai in questo modo:
set T to the front tab of the front window
Anche se qui ho utilizzato implicitamente valori di index
, AppleScript in realtà fa riferimento a tab
e window
entrambi con i loro valori di id
(che lo fa in quasi tutte le situazioni). Quindi se valuti T
, troverai che contiene tab id 34 of window id 2045
e non tab 1 of window 1
.
Puoi anche assegnare l'oggetto tab
a una variabile come questa:
set T to the first tab of window id 2045 whose URL is "chrome://newtab/"
e T
conterrà tab id 30 of window id 2045
, che puoi chiamare in seguito per eseguire azioni all'interno / su:
set the URL of T to "https://stackexchange.com"
o
tell T to close