0
我在這裏發現了幾個帖子,解釋如何在Safari(或默認瀏覽器)中的嵌入式WebView中打開全部鏈接,但我無法找到任何關於如何打開所選鏈接的內容在Safari中,而默認的是他們加載在WebView中。有任何想法嗎?從Cocoa(OSX,不是iPhone)WebView中只加載Safari中的指定鏈接?
我在這裏發現了幾個帖子,解釋如何在Safari(或默認瀏覽器)中的嵌入式WebView中打開全部鏈接,但我無法找到任何關於如何打開所選鏈接的內容在Safari中,而默認的是他們加載在WebView中。有任何想法嗎?從Cocoa(OSX,不是iPhone)WebView中只加載Safari中的指定鏈接?
實際上,您可以在默認瀏覽器中加載您單擊的鏈接。
對於您必須實現WebPolicyDecisionListener
協議並設置policyDelegate
爲WebView
:
[webView setPolicyDelegate:self];
,然後實現以下方法:
-(void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id<WebPolicyDecisionListener>)listener
{
if (WebNavigationTypeLinkClicked == [[actionInformation objectForKey:WebActionNavigationTypeKey] intValue])
{
[listener ignore];
NSLog(@"Opening URL in browser:%@",[request URL]);
[[NSWorkspace sharedWorkspace] openURL:[request URL]];
}
[listener use];
}
-(void)webView:(WebView *)webView decidePolicyForNewWindowAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request newFrameName:(NSString *)frameName decisionListener:(id <WebPolicyDecisionListener>)listener
{
if (WebNavigationTypeLinkClicked == [[actionInformation objectForKey:WebActionNavigationTypeKey] intValue])
{
[listener ignore];
NSLog(@"Opening URL new window:%@",[request URL]);
[[NSWorkspace sharedWorkspace] openURL:[request URL]];
}
[listener ignore];
}
此鏈接,你點擊會在[請求URL]
收到此代表方法
這個迴應應該被接受。我測試過它並且工作得很好。 – omarrr 2014-07-11 20:21:33