首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在OS X上发送和接收来自JavaScript的“原始”苹果事件(El Capitan)

在OS X上发送和接收来自JavaScript的“原始”苹果事件(El Capitan)
EN

Stack Overflow用户
提问于 2016-04-20 04:28:07
回答 1查看 411关注 0票数 3

我正在尝试使用OS (10.11)中的新JavaScript Automation feature来编写一个不提供字典的应用程序脚本。我有一个使用原始苹果事件与该应用程序交互的AppleScript,如下所示:

代码语言:javascript
复制
tell application "Bookends"
  return «event ToySSQLS» "authors REGEX 'Johnson' "
end tell

现在我的问题是:如何将其转换为JavaScript?我找不到关于发送和接收原始Apple事件的Javascript OSA API的任何信息。

一种可能的解决方法是使用call a piece of AppleScript through the shell,但我更喜欢使用“真正的”API。

EN

回答 1

Stack Overflow用户

发布于 2016-07-03 05:30:41

通过在几个帮助器函数中使用OSAKit,您至少可以做一些比shell脚本调用更快的事情:

代码语言:javascript
复制
// evalOSA :: String -> String -> IO String
function evalOSA(strLang, strCode) {

    var oScript = ($.OSAScript || (
            ObjC.import('OSAKit'),
            $.OSAScript))
        .alloc.initWithSourceLanguage(
            strCode, $.OSALanguage.languageForName(strLang)
        ),
        error = $(),
        blnCompiled = oScript.compileAndReturnError(error),
        oDesc = blnCompiled ? (
            oScript.executeAndReturnError(error)
        ) : undefined;

    return oDesc ? (
        oDesc.stringValue.js
    ) : error.js.NSLocalizedDescription.js;
}

// eventCode :: String -> String
function eventCode(strCode) {
    return 'tell application "Bookends" to «event ToyS' +
        strCode + '»';
}

这样,您就可以编写如下函数:

代码语言:javascript
复制
// sqlMatchIDs :: String -> [String]
function sqlMatchIDs(strClause) {
    // SELECT clause without the leading SELECT keyword
    var strResult = evalOSA(
        '', eventCode('SQLS') +
        ' "' + strClause + '"'
    );

    return strResult.indexOf('\r') !== -1 ? (
        strResult.split('\r')
    ) : (strResult ? [strResult] : []);
}

以及像这样的调用

代码语言:javascript
复制
sqlMatchIDs("authors like '%Harrington%'")

这里是完整的示例集:JavaScript wrappers for Bookends functions

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36728791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档