jl3*_*303 6 swift javascript-automation
如果我有一个带有 JXA 源代码的字符串变量,有没有办法从 swift 运行它?看来 NSAppleScript 只适用于 AppleScript 源。
以下示例展示了如何使用 Swift 中的 OSAKit 来运行存储在字符串中的 JavaScript for Automation 脚本:
import OSAKit
let scriptString = "Math.PI";
let script = OSAScript.init(source: scriptString, language: OSALanguage.init(forName: "JavaScript"));
var compileError : NSDictionary?
script.compileAndReturnError(&compileError)
if let compileError = compileError {
print(compileError);
return;
}
var scriptError : NSDictionary?
let result = script.executeAndReturnError(&scriptError)
if let scriptError = scriptError {
print(scriptError);
}
else if let result = result?.stringValue {
print(result)
}
Run Code Online (Sandbox Code Playgroud)
此 Swift 代码改编自Hammerspoon 源代码 (Objective-C)。
小智 -5
为什么?JXA 从各方面来说都是一只狗。如果您只想运行 JS 代码,JavaScriptCore Obj-C API 更加干净和简单。如果您想控制“AppleScriptable”应用程序,请使用 AppleScript\xe2\x80\x94it\ 这是唯一官方支持的\xe2\x80\xa0 选项,可以正常工作。
\n\n(\xe2\x80\xa0 有 SwiftAutomation,但 Apple 还没有上钩,考虑到 Apple 对 Mac Automation 的长期管理不善,我自己也不愿意支持它。我们将看看 WWDC17 会发生什么。 )
\n| 归档时间: |
|
| 查看次数: |
1046 次 |
| 最近记录: |