%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20AppleScript.png)
Я пытаюсь найти способ автоматизировать вывод веб-браузера на передний план (т. е. дать ему фокус, сделать его видимым на экране) на основе события, которое происходит на веб-странице. У меня есть полный контроль над веб-страницей, поэтому я могу заставить ее делать все, что мне нужно, чтобы вызвать это.
Мне нужно, чтобы несколько приложений были открыты с веб-страницей на заднем плане, которая отслеживает некоторые видеокамеры. Когда видеокамера обнаруживает движение, мне нужно, чтобы окно веб-браузера выходило на передний план, чтобы оно было видно вместо используемого приложения.
Я думал о чем-то похожем на то, что пытался сделать этот парень:Как выводить приложение на передний план каждые 15 минут в Mac OS X Lion?
Я думал об использовании AppleScript для работы в непрерывном цикле и раз в секунду проверять открытую страницу в Safari, сканировать на предмет каких-либо изменений, а затем отправлять команду «activate» в Safari, чтобы вывести ее на передний план. Так ли это, или есть лучший способ?
решение1
Я бы, наверное, просто использовал launchd или cron вместо запуска скрипта в фоновом режиме.
Сохраните такой скрипт где-нибудь в редакторе AppleScript:
try tell application "Safari" tell document 1 where name starts with "Webcam" to do JavaScript "--" if result is "--" then activate end tell end
Сохраните список объектов недвижимости, как этот
~/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>
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