Как мне дать команду Applescript открыть новое окно Firefox со ссылкой? - PullRequest
9 голосов
/ 05 сентября 2010

мой код выглядит следующим образом

tell application "Firefox"
 open location "http://rubyquicktips.tumblr.com/"
end tell

, но если у меня открыт Firefox, ссылка откроется в новой вкладке.Но я хочу, чтобы ссылка открывалась в новом окне Firefox.Как мне это сделать?

Ответы [ 4 ]

8 голосов
/ 11 февраля 2011

это работает, но открывает ваш приветственный сайт в первой вкладке ...

tell application "Firefox" to activate
tell application "System Events" to keystroke "n" using command down
delay 3
tell application "Firefox"
    open location "http://rubyquicktips.tumblr.com/"
end tell
4 голосов
/ 06 сентября 2010

попробуйте это ...

tell application "Firefox"
    OpenURL "http://rubyquicktips.tumblr.com/"
end tell

или попробуйте это ...

tell application "Firefox" to activate
tell application "System Events" to keystroke "n" using command down
tell application "Firefox"
    OpenURL "http://rubyquicktips.tumblr.com/"
end tell
2 голосов
/ 29 октября 2013

Я не совсем знаком с AppleScript, но я искал, чтобы открыть новое окно по умолчанию.Вот метод, который работает:

tell application "System Events"
    tell process "Firefox"
        click menu item "New Window" of menu "File" of menu bar 1
    end tell
end tell

При желании, чтобы сосредоточиться на новом окне, добавьте эти строки позже:

tell application "Firefox"
    activate
end tell

Это откроет новое окно по умолчанию.Там может быть лучший способ.

1 голос
/ 22 ноября 2016

Примечание:

Начиная хотя бы с Firefox v50, вы можете сделать Firefox по умолчанию для открытия URL-адресов в новом окне, сняв отметку Open new windows in a new tab instead на вкладке General в настройках Firefox.

Обратите внимание, однако, что этот постоянный параметр влияет на все URL-адреса, открытые извне Firefox.

Приведенное ниже решение может по-прежнему представлять интерес, если вы не хотите полагаться на состояние этого параметра.
(К сожалению, из-за ограниченной поддержки AppleScript в Firefox не существует столь же надежного решения для постоянного открытия на вкладке , независимо от состояния параметра).


Вот более надежное решение, которое:

  • не зависит от фиксированной задержки и

  • не зависит от языка (как и при отправке нажатия клавиш); то есть он также работает с локализованными именами для меню и команд (например, «Datei» для «File», ...)

Однако, поскольку сценарии графического интерфейса пользователя используются для программного нажатия на элемент меню, вам необходимо авторизовать вызывающее приложение для вспомогательного доступа сначала (одноразовое действие, которое требует административные привилегии) ​​- например, если ваш скрипт запускается из терминала, вы должны авторизовать Terminal.app, но даже Script Editor.app должен быть авторизован, если вы хотите запустить ваш скрипт во время его разработки.

tell application "Firefox"

    # Make Firefox frontmost.
    activate

    # Wait until it is truly frontmost.
    repeat while not frontmost
        delay 0.1
    end repeat

    # Open a new window using GUI scripting (requires authorization for assistive access),
    tell application "System Events" to tell application process "Firefox"
        set windowCountBefore to (count of windows)
        # Click on File > New to open a new window, but locate it
        # by keyboard shortcut rather than by name, so as to also work
        # with localized menu names.
        tell menu 1 of menu bar item 3 of menu bar 1
            click (first menu item whose value of attribute "AXMenuItemCmdChar" is "N" and value of attribute "AXMenuItemCmdModifiers" is 0)
        end tell
        # Wait for the new window to appear.
        repeat while (count of windows) = windowCountBefore
            delay 0.2
        end repeat
    end tell

    # Finally, open the URL.    
    open location "http://example.org/"

end tell

Примечание:

  • В нормальных условиях, если Firefox отзывчив, это должно работать надежно. Однако код можно улучшить, реализовав таймауты для циклов ожидания.

  • Firefox не самый быстрый при открытии нового окна, поэтому Firefox сначала активируется, а новое окно появится только через секунду или около того.

  • В новом окне всегда будет пустая первая вкладка, а URL откроется на вкладке 2nd .

Примечание о необычно выглядящей конструкции tell application "System Events" to tell application process "Firefox":

  • Основной блок предназначен для приложения Firefox (tell application "Firefox").
  • Тем не менее, сценарии GUI должны выполняться в контексте приложения System Events (tell application "System Events"), и, в этом контексте, именно Firefox процесс должен быть нацелен (tell application process "FireFox" ). Хотя вы можете написать два вложенных tell блока, они для удобства и краткости объединены в один блок.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...