事件处理器 (Handler) 是 AppleScript 的专有名词,类似于其他编程语言中的函数、方法或子程序。

定义事件处理器

在 AppleScript 中,通过 on handler_nameend hanler_name 来定义事件处理器,并通过 handler_name() 来执行。如果事件处理器没有被调用,那么其中的代码将永远不可能被执行。下面是一个十分简单的事件处理器。

on hello()
    display dialog "Hello World"
end hello

hello()

事件处理器参数

AppleScript 为事件处理器提供了两种参数格式: 位置参数和标签参数。位置参数即与其他编程语言中的函数参数完全相同,而标签参数则是指通过介词来区分各个参数 (每个介词只能使用一次),不建议使用标签参数。

-- 位置参数
on hello(str1, str2)
    display dialog str1 & ", " & str2
end hello

hello("Hello", "Positional Parameters")

-- 标签参数
on hello to str1 for str2
    display dialog str1 & ", " & str2
end hello

hello to "Hello" for "Labeled Parameters"

事件处理器的返回值

与其他编程语言类似,在事件处理器中,通过 return 可以返回一个对象。

on add(x, y)
    return x + y
end add

add(3, 4)

特殊的事件处理器

run

run 是一个默认的事件处理器,它是脚本运行的路口,任何不在其他事件处理器里的代码都隶属于 run 事件处理器。如果显示声明了 run,那么不能有任何代码位于事件处理器外。

open

要使用 open 事件处理器,必须保证当前的脚本导出为应用程序,然后把文件拖放到该图标上,即可在 AppleScript 中接收到文件进行处理。

idle

要使用 idle 事件处理器,必须保证当前的脚本导出为应用程序,并勾选「保持打开」。这个事件处理器用于处理应用程序空闲时的后台任务,它具有循环的功能,只要不退出或者有其他任务,它就会每隔一段事件自动执行其中的代码一次。默认的时间间隔是 30 秒,我们可以通过 return n 命令来控制时间间隔。

quit

要使用 quit 事件处理器,必须保证当前的脚本导出为应用程序,并勾选「保持打开」。这个事件处理器用于处理用户手动退出并保持运行的程序时要执行的任务。其中,必须包含 continue quit 命令,应用程序将在执行 continue quit 命令时退出。