Резюме (TL; DR)
Сохранить ссылку на tab
или же window
Или от id
(что исправлено):
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/"
Или же по объекту (который фиксирован):
set T to the current tab in the front window
...
set the URL of T to "https://apple.stackexchange.com/"
НО не index
(что меняется).
У вас есть несколько вариантов хранения ссылок на объекты (например, tabs
) в AppleScript. В частности, вы спрашиваете о id
свойство вкладки. Вы должны быть внимательны здесь: есть два способы ссылки Хром tabs
а также windows
используя номера:
привязка Tabs
/ Windows
от id
/ index
❶ · По index
Например, tab 2 of window 1
Это относится к приказал положение вкладки слева направо, т.е. tab 1
относится к left tab
, tab 2
относится к вкладке справа от tab 1
, так далее..
Эти показатели менять если вкладки перемещаются, открывайте и закрывайте. Например, если вы закроете середину трех вкладок, tab 3
затем становится tab 2
,
С windows
коллекция, index
это приказал положение окна от переднего к последнему, упорядоченное по тому, какое окно получило фокус в последний раз. window 1
является синонимом front window
и в настоящее время имеет фокус. Когда вы переключаетесь на другой Хром окно, это теперь становится window 1
и предыдущий window 1
сейчас window 2
,
Следовательно, ссылка на объект и сохранение ссылок на этот объект его index
свойство является очень ненадежным методом, за исключением ссылок на front window
или же front tab
где имеет значение только то, что объект в настоящее время имеет фокус, независимо от того, какой он есть. Следовательно, tell the front tab of the front window to...
вполне разумное использование index
и, вероятно, единственный.
Обратите внимание, что index
свойство является именованным свойством для window
объекты, которые можно прочитать а также установить (установить его на 1
вывести его на фронт). Хотя tab
объекты действительно упоминаются index
свойство, это не именованное свойство, которое можно прочитать или установить.
❷ · По id
Например, tab id 54 of window id 53
Это уникальный , фиксированный свойство, назначаемое каждому объекту в момент его создания, и оно обычно возрастает в стоимости по мере создания каждого нового объекта в семействе похожих объектов. Так, вообще говоря , window id 2088
был создан после window id 25
,
Важно отметить, что id
предоставляет фиксированное эталонное значение, с помощью которого вы можете надежно и безопасно хранить объекты в переменных для последующего использования, зная, что они по-прежнему будут ссылаться на один и тот же объект независимо от того, где в вашем скрипте оценивается переменная и как изменилось расположение объектов ( пока объект не разрушен).
Установка и получение переменной
Когда вы хотите назначить ссылку на tab
или window
к переменной, вы можете выбрать:
или сохранить его актуальным id
значение свойства, затем ссылка на tab
своим id
позже значение которого будет значением переменной;
или же Вы можете сохранить весь объект целиком в переменной AppleScript. Это часто самый простой.
От id
к хранить в id
, вы можете сделать это так:
set T to the id of the active tab of the front window
В Хром , active tab of the front window
может вернуться tab id 34 of window id 2045
, id
того, что tab
объект 34
, так T
получает назначенное значение 34
,
Затем, чтобы выполнить действия на той же вкладке, которая больше не может быть active tab
, вы можете сделать это так:
tell tab id T of the front window to execute JavaScript...
(при условии front window
все еще window id 2045
; в противном случае вам придется хранить window id
значение в отдельном значении тоже.)
Обратите внимание, что ссылка на tab id T
а также не tab T
, который был бы tab 34
(Т.е. index
34, если у вас было открыто 34 вкладки). id
этикетка должен быть включенным
По объекту
Для хранения tab
Сам объект, который часто предпочтительнее, вы делаете так:
set T to the front tab of the front window
Хотя я неявно использовал index
значения здесь, AppleScript на самом деле ссылается на tab
и window
оба их id
значения (что он делает это почти во всех ситуациях). Так что, если вы оцениваете T
вы найдете в нем содержится tab id 34 of window id 2045
и не tab 1 of window 1
,
Вы также можете назначить tab
Объект для переменной, как это:
set T to the first tab of window id 2045 whose URL is "chrome://newtab/"
а также T
будет содержать tab id 30 of window id 2045
, который вы позже можете использовать для выполнения действий в / после:
set the URL of T to "https://stackexchange.com"
или же
tell T to close