为什么通过AppleScript激活打开的应用程序有时需要这么长时间(约10秒)



简单的AppleScript

activate application "Safari"

当Safari已经打开(但未激活)时,有时需要长达10秒才能完成。我使用这样的AppleScripts在使用Spark的程序之间切换,但使用AppleScript编辑器或在使用的命令行上也会发生类似的延迟

osascript -e 'activate application "Safari"

所以延迟不在Spark本身。不仅仅是切换到Safari有这个问题,也不是每个程序都有这个问题。例如,Chrome会持续快速激活。其他速度特别慢的应用程序是Evernote和Terminal。

Safari有一段时间没有激活,比如说,超过一分钟后,速度就会变慢。如果我使用类似的脚本在程序之间快速切换,那么只有第一次切换很慢;随后的切换很快。因此,它似乎与操作系统进程有关,而不仅仅是AppleScript。

另一方面,如果我使用Cmd Tab切换程序,它会在我选择应用程序后快速加载,所以慢度似乎与AppleScript激活有关。

AppleScript的细微变化没有什么区别;例如

tell application "Safari" to activate

此外,使用应用程序的完整路径也没有什么不同。

这是10.14.1在2014年年中的Macbook Pro上,具有16GB的RAM。当我从塞拉升级到莫哈韦时,情况似乎变得更糟了,但现在我想起来,塞拉也有一些缓慢。多年来,我一直通过Spark使用相同的AppleScripts,当我开始使用时,它总是很快。

activate从未真正工作过,它只是一个有故障的命令。这可以立即工作,至少在我的设备上是这样:

tell application "System Events"
tell process "Safari"
set frontmost to true
end tell
end tell

我希望这能帮助你!

最新更新