Использование AppleScript для получения URL-адреса из самого переднего окна в веб-браузерах: полный список
Я построил [widget][1], который захватывает URL из самого верхнего окна в Safari, а затем позволяет сократить его с помощью API tr.im. Работает сладко как.
Я хочу сделать это более гибким, поэтому я изучаю, как получить URL-адрес из других браузеров. Вот AppleScript, который работает в Safari:
tell application "Safari"
return URL of front document as string
end tell
После некоторого поиска я решил, что следующее может работать для Firefox (хотя один человек сказал мне, что это не работает для него, возможно, конфликт с каким-то расширением?):
tell application "Firefox"
set myFirefox to properties of front window as list
return item 3 of myFirefox
end tell
Примечание. Вышеприведенный пример является примером неоптимальной практики, основанной на положении элементов списка. Смотрите ниже для лучшего решения для Firefox.
То, что я хотел бы сделать, это создать список окончательных эквивалентов для каждого современного браузера на Mac: Opera, Camino, Flock и т. Д.
Обновление: в моем исследовании по этой теме я наткнулся на полезную ветку на MacOSXHints.com. Большинство моих ответов ниже основаны на этом обсуждении.
Обновление 2: Я включил AppleScript на этой странице в [widget][1]. Кажется, работает зыбь.
11 ответов
Активируйте сценарии пользовательского интерфейса и запустите приведенный ниже код. Затем у вас будет URL в буфере обмена, и вы можете вставить его.
tell application "Firefox" to activate
tell application "System Events"
keystroke "l" using command down
keystroke "c" using command down
end tell
Google Chrome для Mac добавил метод AppleScripting для получения URL.
Вот Chrome AppleScript SDK
https://sites.google.com/a/chromium.org/dev/developers/design-documents/applescript
Пример со страницы, ссылки на которую приведены ниже:
tell application "Google Chrome"
get URL of active tab of window 1
end tell
Больше примеров здесь:
http://laclefyoshi.blogspot.com/2010/10/google-chrome-ver.html
В настоящее время в Firefox 3.03 есть ошибка, которая скрывает от AppleScript все свойства окна, включая "class curl", если вы ранее использовали оператор, подобный следующему:
tell application "Firefox" to activate
или же
tell application "Firefox"
if (front window) exists then do_something()
end tell
Обходной путь - использовать следующий код:
tell application "System Events"
tell process "Firefox"
set frontmost to true
set xsist to (front window) exists
(* keep xsist value to test later on *)
end tell
end tell
Примечание: свойства окна будут недоступны до следующего перезапуска Firefox
Firefox (протестирован на версиях 2.0.0.14 и 3.0.1):
tell application "Firefox"
set myURL to «class curl» of window 1
return myURL
end tell
Это снова Пьеро с новым идентификатором (я потерял свои куки при попытке переустановить Firefox!!!).
Я только что попробовал Firefox 3.04, ничего не изменилось в отношении поддержки и надежности appleScript. Все та же ошибка...
Мой тест и поиски по сети привели меня к выводу, что вы не можете получить доступ к имени окна и другим свойствам окна, таким как "class curl", в одном и том же скрипте.
Если вы работаете с именем окна, и, что, неожиданно, вы больше не можете получить к нему доступ (получая случайный двоичный файл, такой как строки), вам придется снова вызвать этот код:
tell application "Firefox" to activate
Использование любого утверждения, которое приведет к ошибке в Firefox, также будет работать нормально, чтобы сделать имя окна снова доступным, но перезапуск вашего Mac ничего не изменит!
Как только вы сделали это, как я уже упоминал ранее, вы больше не сможете получить доступ к "class curl" до следующей перезагрузки Firefox...
Написание скриптов для Firefox на Mac - действительно невыполнимая задача!
Если вы хотите, чтобы AppleScript поддерживался в Firefox, сообщите об этом и проголосуйте за эту ошибку!!!
Благодаря Брайану выше, это пуленепробиваемая версия.
Его код просит вас вставить URL, но этот устанавливает URL-адрес на "FrontDocumentURL", который затем можно использовать в качестве переменной в ваших сценариях.
tell application "Firefox" to activate
tell application "System Events"
keystroke "l" using command down
keystroke "c" using command down
end tell
set FrontDocumentURL to the clipboard
Camino 1.6 и выше:
tell application "Camino"
return URL of current tab of front browser window as text
end tell
В отличие от предыдущего ответа, он получит URL целевой вкладки.
OmniWeb (протестировано на версии 5.8):
tell application "OmniWeb"
set myInfo to GetWindowInfo
return item 1 of myInfo
end tell
Camino (протестировано на версии 1.6.4):
tell application "Camino"
set p to properties of front tab of front window
return |currentURI| of p as string
end tell
Flock (протестировано на версии 2.0):
tell application "Flock"
set p to properties of front window as list
return item 3 of p
end tell
Это зависит от позиции элемента списка, но, насколько я могу судить, это единственный способ получить это значение. Свойство называется address
что, хотя в документации Apple этого не говорится, похоже, зарезервированное слово в AppleScript.
Opera (протестирована на версиях 9.21 и 9.62):
tell application "Opera"
return URL of front document as string
end tell