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

Я создал [виджет] [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 на этой странице в [виджет] [1]. Вроде бы рабочие набухают.


person Andrew Hedges    schedule 04.11.2008    source источник


Ответы (11)


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

tell application "Firefox" to activate
tell application "System Events"
    keystroke "l" using command down
    keystroke "c" using command down
end tell
person Brian    schedule 21.10.2009

В Google Chrome для Mac добавлен метод AppleScripting для получения URL-адреса.

Вот SDK Chromium AppleScript

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

person Neffster    schedule 07.03.2011

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

tell application "Firefox"
    set myURL to «class curl» of window 1
    return myURL
end tell
person Andrew Hedges    schedule 06.11.2008

В настоящее время в Firefox 3.03 есть ошибка, которая скроет от AppleScript все свойства окна, включая «class curl», если вы ранее использовали такую ​​инструкцию:

tell application "Firefox" to activate

or

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.

person Community    schedule 07.11.2008
comment
Спасибо за комментарий ! Я рад узнать, что это может помочь, и что ошибка также не связана с какой-то конкретной конфигурацией. - person ; 10.11.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

person piero    schedule 13.11.2008

Camino 1.6 и выше:

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

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

person smorgan    schedule 29.04.2009
comment
Милая, спасибо! Вы в курсе, что это работает и с Firefox? - person Andrew Hedges; 30.04.2009
comment
Нет, наша реализация AppleScript полностью отделена от Firefox. - person smorgan; 30.04.2009

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

Его код просит вас вставить 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
person Fred    schedule 04.01.2013

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
person Andrew Hedges    schedule 06.11.2008
comment
Этот скрипт всегда возвращает URL-адрес первой вкладки в Camino, независимо от того, на какой вкладке находится фокус. Есть ли способ лучше? - person Andrew Hedges; 04.02.2009

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

tell application "OmniWeb"
    set myInfo to GetWindowInfo
    return item 1 of myInfo
end tell
person Andrew Hedges    schedule 06.11.2008

Opera (проверено на версиях 9.21 и 9.62):

tell application "Opera"
    return URL of front document as string
end tell
person Andrew Hedges    schedule 06.11.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.

person Andrew Hedges    schedule 06.11.2008