Я хочу щелкнуть правой кнопкой мыши обычную ссылку в (основной) Chrome, Safari (дополнительный) или Firefox / Tor Browser (третичный), а затем отправить ее в другое место с помощью Applescript. Как мне это сделать?
Я мог представить, что сначала использую Javascript для получения фактической ссылки, а затем возвращаю ее как текст в Applescript для дальнейшей обработки. Имеет ли это смысл? Если так, я был бы признателен за несколько советов о том, как начать работу.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете сделать это с помощью Автоматуслуга, который добавит пункт контекстного меню (щелчок правой кнопкой мыши), когда вы щелкнете ссылку в Сафари (или Хром).
Прочтите Руководство по созданию сценариев автоматизации Mac: создание общесистемной службы, в котором есть пошаговое руководство по созданию службы Автомат.
Во время строительства это будет выглядеть примерно так:
Как видите, эта служба активна только в Сафари, когда выделен блок текста. К сожалению, вы не можете ограничить его гиперссылками просто, но он их включает.
Если услуга доступна (т. Е. Вы находитесь в Сафари и выбрали какой-то текст), пункт меню, соответствующий услуге, появляется в подменю, вызываемом правой кнопкой мыши, под названием «Услуги», и ему будет присвоено имя в соответствии с тем, что вы сохранили рабочий процесс. как в Автомат. В моем случае служба называется «URL-адрес процесса».
При нажатии он выполняет AppleScript, который вы можете видеть в рабочем процессе (он делает это в фоновом режиме, невидимо).
Вот где ваше предложение об использовании JavaScript было хорошим для использования: AppleScript выполняет немного JavaScript в Сафари (при условии, что у вас есть для этого необходимые разрешения, отмеченные в меню "Развивать"Сафари).
Этот JavaScript возвращает один из двух результатов:
▸ Если выбранный текст представляет собой обычный текст без гиперссылки под ним, возвращается пустая строка;
▸ Если выбранный текст является текстом гиперссылки, возвращается URL-адрес с гиперссылкой.
Он сохраняет это в переменной href, с которой вы можете делать все, что захотите.
Преимущество гиперссылок заключается в том, что вам не нужно щелкать и перетаскивать, чтобы выделить текст (хотя вы можете, если хотите, и нужно выбрать только часть текста). Вместо этого вы можете просто щелкнуть ссылку правой кнопкой мыши, и она автоматически выберет ее за вас, что делает идеальным для активации услуги именно такой способ.
(2) Кроме того, это не работает… Если я запускаю сценарий из редактора сценариев со ссылкой, выбранной в Safari, он работает, как ожидалось. Я также могу успешно запустить Javascript из консоли в Safari, но при запуске рабочего процесса из сервисного меню в меню Apple я получаю сообщение об ошибке «Возникла проблема с вводом в Сервис». Ты знаешь почему?
Вам не нужны ни явный обработчик on run...end run, ни return input. Но и вреда они не приносят. Рабочий процесс выглядел нормально. Если перезагрузка компьютера не решает проблему, начните с нуля и создайте службу, например, для Хром, чтобы посмотреть, отображается ли она в меню. Кроме того, если вы перейдете на Системные настройки> Клавиатура> Ярлыки> Службы, вы увидите, где ваша услуга отображается в списках категорий. Моя, как и ожидалось, отображается под надписью «Текст». Смотрите и здесь
Скоро попробую на своем втором компьютере.
Спасибо. Я почти у цели. Однако есть две проблемы (1). Эта служба не отображается в контекстном меню Safari при нажатии на ссылку. Там перечислено множество других сервисов, в том числе некоторые, которые я создал сам. Однако он указан в меню Apple -> Службы -> Общие (не Safari, и не имеет значения, устанавливаю ли я его для любого приложения или только для Safari, он всегда находится в разделе Общие). Почему?