在OS X JavaScript for Automation(JXA)中附加事件侦听器

时间:2014-11-21 04:14:26

标签: javascript macos automation applescript javascript-automation

如何在OS X JavaScript中监听事件以实现自动化。

在“消息”应用程序的脚本库中,有一个事件处理程序列表,例如messageSentmessageReceived。但是,我无法弄清楚如何使用它们。尝试传递函数会产生错误,并尝试将这些变量设置为新函数会导致REPL挂起。

设置这些事件处理程序的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您将创建一个脚本,然后从Preferences > General中的AppleScript处理程序菜单中进行选择。使用内置的Speak Events.applescript文件作为指南,并注意必须覆盖每个处理程序才能正确执行。

注意:即使包含标准附加内容,您仍然无法调用脚本添加命令,例如say(),这可能是因为他们如何在脚本引擎上实现此层,甚至使用currentApplication()进行适当的调用,看起来好像是跨应用程序发送的。

这是一个模板:

Messages = Application.currentApplication()
Messages.includeStandardAdditions = true

function messageSent(m, e) {
}

function messageReceived(m, e) {
}

function chatRoomMessageReceived(e) {
}

function activeChatMessageReceived(m, e) {
}

function addressedMessageReceived(m, b, c, e) {
}

function receivedTextInvitation(e) {
}

function receivedAudioInvitation(m, b, c, e) {
}

function receivedVideoInvitation(m, b, c, e) {
}

function receivedLocalScreenSharingInvitation(b, c, e) {
}

function buddyAuthorizationRequested(e) {
}

function addressedChatRoomMessageReceived(e) {
}

function receivedRemoteScreenSharingInvitation(e) {
}

function loginFinished(e) {
}

function logoutFinished(e) {
}

function buddyBecameAvailable(e) {
}

function buddyBecameUnavailable(e) {
}

function receivedFileTransferInvitation(e) {
}

function avChatStarted(e) {
}

function avChatEnded(e) {
}

function completedFileTransfer(e) {
}