Использование 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, сообщите об этом и проголосуйте за эту ошибку!!!

https://bugzilla.mozilla.org/show_bug.cgi?id=464701

Благодаря Брайану выше, это пуленепробиваемая версия.

Его код просит вас вставить 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
Другие вопросы по тегам