我构建了一个AppleScriptObjC应用程序(OS X),它响应用户输入并在我们的本地服务器和用户的计算机上执行任务。我使用Safari作为其UI,它完美运行,直到Apple升级安全性,要求用户在每次用户提交表单或解除与应用程序通信的任何其他事件时都会关闭对话框。这对我的用户来说是一个主要的烦恼和不便。因为我已经为此编写了很多复杂的ASobjc和JS,所以我现在尝试使用WebView而不是Safari来使其适应Cocoa App。因为我是Cocoa的新手,所以我从一个我在这里找到的例子开始: https://github.com/ryanb/cocoa-web-app-example
它显示我的HTML并从窗口显示响应JS事件,但是我无法从HTML执行任何AppleScript。我正在用一个只显示“Hello,World。”对话框的脚本进行测试。
这是HTML元素:
<div><button id="wazzup" onclick="javascript:sayHello('Hello')">Run Hello Script</div>
和JS函数:
function sayHello(filename) {
if (window.app) {
window.app.sayHello_(filename);
}
}
和AppDelegate中的Objective C:
- (void)sayHello:(NSString *)filename {
NSString* path = [[NSBundle mainBundle] pathForResource:filename ofType:@"scpt"];
NSURL* url = [NSURL fileURLWithPath:path];NSDictionary* errors = [NSDictionary dictionary];
NSAppleScript* appleScript = [[NSAppleScript alloc] initWithContentsOfURL:url error:&errors];
[appleScript executeAndReturnError:nil];
if(errors){
NSLog(@"ERROR: %@", errors);
}
[appleScript release];
}
单击按钮时,没有任何反应。谁能告诉我我做错了什么?