Я пытаюсь найти способ автоматизировать вывод веб-браузера на передний план (то есть - дать ему фокус, сделать его видимым на экране) на основе события, которое происходит на веб-странице. У меня есть полный контроль над веб-страницей, поэтому я могу заставить ее делать все, что мне нужно, чтобы вызвать это.

Мне нужно открыть несколько приложений с веб-страницей в фоновом режиме, которая отслеживает некоторые видеокамеры. Когда у видеокамеры есть движение, мне нужно, чтобы окно веб-браузера выходило вперед, чтобы оно было видно вместо того, какое приложение использовалось.

Я думал о чем-то похожем на то, что пытался сделать этот парень: как выводить приложение на фронт каждые 15 минут на Mac OS X Lion?

Я думал об использовании AppleScript для запуска в непрерывном цикле, и раз в секунду проверяю открытую страницу в Safari, сканирую некоторые изменения и затем отправляю команду "активации" в Safari, чтобы вывести ее на передний план. Это то, как я должен идти об этом, или есть лучший способ?

1 ответ1

1

Я бы, вероятно, просто использовал launchd или cron вместо запуска скрипта в качестве фонового процесса.

  1. Сохраните такой скрипт где-нибудь в редакторе AppleScript:

    try
        tell application "Safari"
            tell document 1 where name starts with "Webcam" to do JavaScript "--"
            if result is "--" then activate
        end tell
    end
    
  2. Сохраните список свойств следующим образом ~/Library/LaunchAgents/com.superuser.443513.plist

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.superuser.443513</string>
        <key>ProgramArguments</key>
        <array>
            <string>osascript</string>
            <string>/Users/username/Library/Scripts/script.scpt</string>
        </array>
        <key>StartInterval</key>
        <integer>5</integer> <!-- every 5 seconds -->
    </dict>
    </plist>
    
  3. launchctl load ~/Library/LaunchAgents/com.superuser.443513.plist


Не могли бы вы просто использовать curl для проверки состояния? Вы можете запускать его каждую минуту, отредактировав crontab с помощью EDITOR=nano crontab -e и добавив следующую строку:

*/2 * * * * [[ -n "$(curl -L http://superuser.com/questions/443513 | grep automate)" ]] && open http://example.com

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .