1

我有一个从 Internet 加载内容的 WebView。如果我有一个使用“_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:

我完全被难住了,所以我真的很感谢你的帮助。

提前谢谢大家。

4

3 回答 3

3

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

- (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request
{
    [[sender mainFrame] loadRequest:request];
    return sender;
}
于 2012-04-28T00:31:22.787 回答
1

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

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

于 2012-04-27T23:25:13.090 回答
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

做你想做的事。

于 2013-01-24T08:31:59.973 回答