使用 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的主要内容,如果未能解决你的问题,请参考以下文章

Mac OS X 上的 AVFoundation + GC

如何解决 ZOC for MAC OS X 的中文乱码问题

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