Использование AppleScript для получения URL-адреса из самого переднего окна в веб-браузерах: полный список - PullRequest
15 голосов
/ 05 ноября 2008

Я создал [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 ]

3 голосов
/ 07 марта 2011

В 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

3 голосов
/ 21 октября 2009

Активируйте сценарии пользовательского интерфейса и запустите приведенный ниже код. После этого у вас будет URL в буфере обмена, и вы сможете вставить его.

tell application "Firefox" to activate
tell application "System Events"
    keystroke "l" using command down
    keystroke "c" using command down
end tell
2 голосов
/ 07 ноября 2008

В настоящее время в 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

2 голосов
/ 13 ноября 2008

Это снова Пьеро, вернувшийся с новым идентификатором (я потерял свои куки при попытке переустановить 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

2 голосов
/ 06 ноября 2008

Firefox (протестировано в версиях 2.0.0.14 и 3.0.1):

tell application "Firefox"
    set myURL to «class curl» of window 1
    return myURL
end tell
1 голос
/ 04 января 2013

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

Его код просит вас вставить 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
1 голос
/ 29 апреля 2009

Camino 1.6 и выше:

tell application "Camino"
    return URL of current tab of front browser window as text
end tell

В отличие от предыдущего ответа, он получит URL-адрес выделенной вкладки.

0 голосов
/ 06 ноября 2008

OmniWeb (протестировано на версии 5.8):

tell application "OmniWeb"
    set myInfo to GetWindowInfo
    return item 1 of myInfo
end tell
0 голосов
/ 06 ноября 2008

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.

0 голосов
/ 06 ноября 2008

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
...