在阅读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应用程序的最佳做法吗?
答案 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。您可以选择忽略(或使用)某种类型的事件。