Использование 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