我有一个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:
我完全难过,所以我非常感谢你的帮助。
先谢谢大家。
答案 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
做你想要达到的目标。