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