1
如何通过osascript在Javascript中启动应用程序?如何通过osascript在Javascript中启动应用程序?
我一直在与一些例子,它可以在互联网上找到,我可以让他们的工作打转转,但如果针对自动化应用程序尚未启动,我得到以下错误:
2015-04-02 10:43:34.749 js.sh[3434:57612] warning: failed to get scripting definition from /Applications/Safari.app; it may not be scriptable.
如果Safari已经打开,下面的例子就像一个魅力。
#!/usr/bin/osascript -l JavaScript
var Safari = new Application("/Applications/Safari.app");
Safari.activate;
window = Safari.windows[0];
tab = Safari.Tab({url:"http://www.dr.dk"});
window.tabs.push(tab);
window.currentTab = tab;
我认为activate
方法之一,但似乎我忽略了一些东西。
如果目标应用程序尚未运行,JXA应自动启动。 OTOH,JXA,就像它之前的Scripting Bridge一样,充满了设计缺陷和执行漏洞,因此,如果/当它搞砸时不要太惊讶。唯一支持的选项是AppleScript。 – foo 2015-04-02 13:14:22
顺便说一句,'Safari.activate'应该读作'Safari.activate()',因为JavaScript的函数对象只有在你调用它们的时候才会执行任何操作。但是,所有这些都会将Safari带入前台。发送Apple事件不会启动应用程序:Apple事件管理器的工作是与_existing_进程交谈,而不是启动新进程(这是LaunchServices的责任)。如果应用程序尚未运行,则由客户端(例如AppleScript)通过“ - [NSWorkspace launchApplicationAtURL:options:configuration:error:]'_before_发送AE给它启动它。 AS做得对;如果JXA没有,那是因为它是垃圾。 – foo 2015-04-02 13:42:55