使用 OS X JavaScript for Automation (JXA) 收听“开放位置”Apple Event
Posted
技术标签:
【中文标题】使用 OS X JavaScript for Automation (JXA) 收听“开放位置”Apple Event【英文标题】:Using OS X JavaScript for Automation (JXA) to listen to "open location" Apple Event 【发布时间】:2016-04-02 23:26:27 【问题描述】:我正在使用 OS X javascript for Automation (JXA),我希望能够捕获“开放位置”Apple 事件。
根据 http://www.macosxautomation.com/applescript/linktrigger/,我设置了一个客户 URL 处理程序。我该怎么做相当于
on open location this_URL
...
end open location
与 JXA?我尝试了以下所有方法,但都无法执行:
app = Application.currentApplication();
app.includeStandardAdditions = true;
function run()
app.displayDialog(JSON.stringify(arguments));
function openLocation()
app.displayDialog(JSON.stringify(arguments));
function openDocuments()
app.displayDialog(JSON.stringify(arguments));
function onOpenLocation()
app.displayDialog(JSON.stringify(arguments));
Apple 的 JXA 文档 (https://developer.apple.com/library/mac/releasenotes/InterapplicationCommunication/RN-JavaScriptForAutomation/Articles/OSX10-10.html#//apple_ref/doc/uid/TP40014508-CH109-SW15) 没有讨论如何处理打开位置事件。我的脚本会被打开,因为如果我将它添加到函数之外,我会得到一个显示的警报。我只是无法让函数执行并在 URL 中传递。
我正在通过一个 AppleScript 处理程序来解决这个问题,该处理程序随后会调用我的 JXA 代码,但这肯定不太理想。
我也没有在 JXA Cookbook (https://github.com/dtinth/JXA-Cookbook) 中看到任何关于此的内容。
【问题讨论】:
好问题。期待答案。 函数签名中的参数遗漏是复制粘贴错误吗?因为它应该是function openLocation(thisURL) // process thisURL
如果它打算工作......
@kopischke:不,我故意省略了 URL 参数(例如,thisURL)。我正在使用 JS 函数可用的特殊“参数”来确定我的函数是否被调用。我相信我按照您的建议使用显式参数进行了尝试,但这有关系吗?
【参考方案1】:
正如您所建议的,诀窍(目前)似乎是立即将控制权传递给同一包中的第二个(用于自动化的 JavaScript)脚本。
on open location strURL
run script (path to resource "jsHandler.scpt" in directory "Scripts") with parameters |URL|:strURL
end open location
【讨论】:
如何访问jsHandler.scpt中的参数?我尝试从函数 run(args) 迭代 args,但没有任何乐趣。以上是关于使用 OS X JavaScript for Automation (JXA) 收听“开放位置”Apple Event的主要内容,如果未能解决你的问题,请参考以下文章
python 探测请求使用tcpdump和Python3 for OS X进行MAC / SSID对记录,使用机场进行信道跳转。
sh 自动安装VMware Tools for Mac OS X的静默安装
ruby nikto 2.1.5 for Mac OS X via Homebrew
IDEA里的Keymap(DefaultDefault for GNOMEDefault for KDEDefault for XWinEclipseEclipse(Mac OS X)Em