Использование 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]. Кажется, что рабочая набухание.

Ответы

Ответ 1

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

tell application "Firefox" to activate
tell application "System Events"
    keystroke "l" using command down
    keystroke "c" using command down
end tell

Ответ 2

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

Здесь Хром 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

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

tell application "Firefox"
    set myURL to «class curl» of window 1
    return myURL
end tell

Ответ 4

В 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

Ответ 5

Это Пьеро снова вернулся с новым id (я потерял свои файлы cookie, пытаясь восстановить Firefox!).

Я только что попробовал Firefox 3.04, ничего не изменилось в поддержке и многоплановости AppleScript. По-прежнему такая же ошибка...

Мой тест и поиск по сети привел меня к выводу, что вы не можете получить доступ к названию окна и другим свойствам окна, например "скручивание класса", в том же script.

Если вы работаете с именем окна, и это, как ни странно, вы больше не можете получить к нему доступ (получение случайных двоичных строк, таких как строки), вы должны снова вызвать этот код:

tell application "Firefox" to activate

с помощью любого оператора, который будет генерировать ошибку в Firefox, также будет работать отлично, чтобы снова получить имя окна, но перезапуск вашего Mac ничего не изменит!

Как только вы это сделали, как я уже упоминал ранее, вы больше не сможете получить доступ к "curl class", пока не перезапустится следующий Firefox...

написания сценариев для Firefox на компьютерах Mac действительно невозможно!

Если вы хотите, чтобы AppleScript поддерживался в Firefox, расскажите об этом и проголосуйте за эту ошибку!

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

Ответ 6

Camino 1.6 и выше:

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

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

Ответ 7

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

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

Ответ 8

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

tell application "Opera"
    return URL of front document as string
end tell

Ответ 9

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

Ответ 10

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.

Ответ 11

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

tell application "OmniWeb"
    set myInfo to GetWindowInfo
    return item 1 of myInfo
end tell