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