我的目标是使点击一台osx机器上的链接加载到启用了Apple事件的远程计算机上的safari中。为此,我正在尝试创建一个AppleScript应用程序,然后我在系统上创建默认浏览器。
我的AppleScript看起来像这样:
on run argv
set theurl to item 1 of argv
set dest to "eppc://user:password@ipaddress"
tell application "Safari" of machine dest
activate
open location theurl
end tell
end run
如果argv不是用于捕获url的合适方法,我将脚本简化为:
tell application "Safari"
activate
open location "http://www.google.com"
end tell
然后我将其保存为应用程序,告诉Safari该应用程序应该是默认浏览器,但是当我点击应用程序中的链接时,它完全忽略了我的AppleScript并在Safari中加载了url(不是我的网址)已指定,我点击的网址。)
这是为什么?我是否需要为我的Applescript做一些特殊的操作才能充当浏览器?如果我通过双击它来运行我的AppleScript应用程序,它会完全按照它应该执行的操作,但如果我通过“默认浏览器”功能启动它,它根本不会运行,而是Safari接管。
如果有一些简单的事情我做错了或不做,或者如果我完全错误的方式,请告诉我。
答案 0 :(得分:5)
您必须修改AppleScript应用程序的Info.plist文件,才能将自身注册为能够处理URL的应用程序。您必须添加密钥CFBundleURLTypes
和CFBundleURLSchemes
http 。
然后你必须在AppleScript中添加一个open location
处理程序:
on open location theURL
...
end open location
Mac OS X不会自动检测应用程序的Info.plist是否已更改。因此,您需要使用 lsregister 命令强制更新终端中的LaunchService数据库:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /path/to/AppleScript.app
有关详细信息,另请参阅following page。