OSX应用程序中的WebKit:将消息从Javascript传递到包装器应用程序?

时间:2012-08-26 19:17:58

标签: objective-c macos webkit

在阅读WebKit文档时,我发现我可以directly evaluate Javascript in the embedded browser。大!这会处理从本机OSX应用程序传递消息到网站。

但是,我还需要能够从我的Javascript传递消息来触发OSX应用程序中的一些代码。我知道如何在 iPhone UIWebView 上执行此操作:我将实现UIWebViewDelegate类,然后实现如下方法:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
     // Examine the request object and do whatever needs be done
     return NO;
}

巧合的是,我看到other users have come up with this solution for the iOS。但是,我在OSX WebKit框架中看不到等效方法(例如,在Frame Load Delegate内)。

有人可以建议将消息​​从我的Javascript传递到我的OSX应用程序的最佳做法吗?

1 个答案:

答案 0 :(得分:0)

在询问之前,我似乎没有深入挖掘。 在WebKit中,您可以通过公开Objective-C类直接从Javascript调用Objective-C方法。查看此文档:http://developer.apple.com/library/safari/#documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/ObjCFromJavaScript.html

非常易于使用,非常实用。

修改的 为了完整起见: 如果您正在寻找拦截(甚至阻止)页面加载调用的方法(就像我在上面的UIWebView示例中所做的那样),请查看documentation for the WebKit policyDelegate。您可以选择忽略(或使用)某种类型的事件。