Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 使用OSXJavascriptforAutomation(JXA)来监听;开放式地点“;苹果事件_Macos_Automation_Applescript_Javascript Automation - Fatal编程技术网

Macos 使用OSXJavascriptforAutomation(JXA)来监听;开放式地点“;苹果事件

Macos 使用OSXJavascriptforAutomation(JXA)来监听;开放式地点“;苹果事件,macos,automation,applescript,javascript-automation,Macos,Automation,Applescript,Javascript Automation,我正在使用OSXJavascriptforAutomation(JXA),我希望能够捕获“开放位置”苹果事件 根据,我已经设置了一个客户URL处理程序。我该如何做相当于 on open location this_URL ... end open location 用JXA?我尝试了以下所有操作,但都无法执行: app = Application.currentApplication(); app.includeStandardAdditions = true; function run

我正在使用OSXJavascriptforAutomation(JXA),我希望能够捕获“开放位置”苹果事件

根据,我已经设置了一个客户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));
}
苹果的JXA文档()没有讨论如何处理开放位置事件。我的脚本将被打开,因为如果我在函数之外添加它,我可以得到一个要显示的警报。我只是无法得到一个要执行的函数并在URL中传递

我通过使用AppleScript处理程序来解决这个问题,然后调用我的JXA代码,但这显然不太理想

我在JXA Cookbook()中也没有看到任何与此相关的内容。

正如您所建议的,诀窍(目前)似乎是立即将控制权传递给同一捆绑包中的第二个(用于自动化的JavaScript)脚本

on open location strURL
    run script (path to resource "jsHandler.scpt" in directory "Scripts") with parameters {{|URL|:strURL}}
end open location

好问题。我期待着答案。函数签名中遗漏一个参数是复制粘贴错误吗?因为它应该是
函数openLocation(thisURL){//process thisURL}
如果它要工作的话…@kopischke:no,我故意省略了URL参数(例如thisURL)。我使用JS函数可用的特殊“参数”来确定是否调用了我的函数。我相信我已经按照您的建议使用了显式参数进行了尝试,但这有关系吗?我如何访问jsHandler.scpt中的参数?我尝试过从函数run(args)迭代args,但没有乐趣。