WebView打开'_blank'链接

时间:2012-04-27 22:55:47

标签: objective-c xcode cocoa webview

我有一个WebView,可以从Internet加载内容。 如果我有一个使用'_blank'属性的链接,则没有任何反应。

到目前为止,我已经尝试设置我的WebView委托,但我无法让它注册,我甚至无法获得NSLog,所以我必须使用它错了。代码如下:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [tmpView setUIDelegate:self];
}

- (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request
{
    NSLog(@"HEY THERE");
    return sender;
}

理想情况下,无论何时在WebView上单击链接,链接总是在该WebView中打开,而不是其他地方。

这可能吗?

通过研究我发现了其他方法,但不知道如何使用它们来获得我想要的结果:

webView:decidePolicyForNewWindowAction:request:newFrameName:decisionListener:

我完全难过,所以我非常感谢你的帮助。

先谢谢大家。

3 个答案:

答案 0 :(得分:3)

如果您不想打开新窗口但只想在当前WebView对象中打开请求,则只需在代理中执行此操作:

- (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request
{
    [[sender mainFrame] loadRequest:request];
    return sender;
}

答案 1 :(得分:1)

此博客文章提供了一个使用JavaScript基本上从链接中删除目标属性的解决方案。

http://blog.mikeweller.com/2009/06/uiwebview-doesnt-open-targetblank-links.html

答案 2 :(得分:0)

你可以打电话

(WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request

确实有效。

您也可以实施

(void)webView:(WebView *)sender decidePolicyForNewWindowAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request newFrameName:(NSString *)frameName decisionListener:(id<WebPolicyDecisionListener>)listener

做你想要达到的目标。