2015-01-13 3 views
0

Это кажется достаточно простым. «if (frontApp =« Safari »), то« сделайте часть Safari. Если нет, выполните команду else, если «else if» (frontApp = «Google Chrome»), то «AppleScript: Почему этот скрипт запускает Safari?

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

Какая часть этого кода сообщает Safari для открытия, и как я могу остановить это? Если только Chrome открыт, и я запускаю его в Chrome, я не хочу и не нуждаюсь в открытии Safari.

Заранее спасибо ...

on run {input, parameters} 

tell application "System Events" to set frontApp to name of first process whose frontmost is true 

if (frontApp = "Safari") then 
    using terms from application "Safari" 
     tell application frontApp to set currentTabUrl to URL of front document 
     tell application frontApp to set currentTabTitle to name of front document 
    end using terms from 
else if (frontApp = "Google Chrome") then 
    using terms from application "Google Chrome" 
     tell application frontApp to set currentTabUrl to URL of active tab of front window 
     tell application frontApp to set currentTabTitle to title of active tab of front window 
    end using terms from 
else 
    return "You need a supported browser as your frontmost app" 
end if 

set myInfo to ("MUSIC - " & currentTabUrl & " - " & currentTabTitle) 
return myInfo 

конец пробег

ответ

1

«Использование терминов из„Safari“приложения» линии запустит приложение по первому компиляции или первого запуска, когда скрипт будет открыт, в во время выполнения. я рекомендую положить сказать блоки объектов запустить скрипт, который не будет запущен, если не называется:

tell application "System Events" to set frontApp to name of first process whose frontmost is true 

if (frontApp = "Safari") then 
    set currentTabUrl to run script "tell application \"Safari\" to get URL of front document" 
    set currentTabTitle to run script "tell application \"Safari\" to get name of front document" 
else if (frontApp = "Google Chrome") then... 
+0

OK, это, похоже, сделал трюк. Я не думаю, что я придумал бы этот сам. Спасибо, jweaks! – MattSh

+0

Мне нужно было это сделать, чтобы узнать, как принять ответ. Не очень очевидно, как ... – MattSh

0

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

set {currentTabTitle, currentTabUrl} to run script "tell application \"Safari\" 
tell current tab of its front window 
return { name, url } 
end tell 
end tell" 
Смежные вопросы