Set policyDelegate
of a WebView to some class and implement the delegate method below in the class.
- (void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id < WebPolicyDecisionListener >)listener {
if ([[actionInformation valueForKey:WebActionNavigationTypeKey] intValue] == WebNavigationTypeLinkClicked) {
[[NSWorkspace sharedWorkspace] openURL:request.URL];
[listener ignore];
} else {
[listener use];
}
}
MacAppならありがちな挙動なのに意外とドキュメントに書いてない&探しても見付からなくて時間かかった.ので英語で書いておく.