首页 > 解决方案 > Safari.app 启动时如何自动运行 AppleScript?

问题描述

基本上我想确保每次打开 Safari 时执行自定义编写的 .applescript。

我尝试将脚本添加到“~/Library/Scripts/Applications/Safari”文件夹,但这似乎不会自动执行。

作为一种解决方法,我可能只编写一个 AppleScript 来启动 Safari 并运行我的自定义内容。我只是想检查是否有更清洁的方法来做到这一点。

标签: safariapplescriptstartup

解决方案


将东西放在~/LibraryScripts/Applications文件夹中只会使它们在特定应用程序处于活动状态时可用。

除了运行脚本和 Safari 的别名之外,您还可以在注册NSWorkspaceDidLaunchApplicationNotification通知的后台应用程序(可能通过登录项运行)中使用一些 AppleScriptObj-C,以便在应用程序启动时获取它们的名称。这还具有查看 Safari 何时启动的优势,而不是从您的别名启动,例如通过各种文档链接(邮件、PDF 等):

use framework "Foundation"

my addObserver:me selector:"appLaunchNotification:" |name|:(current application's NSWorkspaceDidLaunchApplicationNotification) object:(missing value)

on appLaunchNotification:notification -- an application was launched
  # notification's userInfo contains the application that was launched
  set applicationInfo to NSWorkspaceApplicationKey of notification's userInfo -- NSRunningApplication
  set appName to (localizedName of applicationInfo) as text
  -- do your thing depending on appName
end appLaunchNotification:

推荐阅读