【问题标题】:WebView Open '_blank' LinksWebView 打开“_blank”链接
【发布时间】:2012-05-08 16:34:55
【问题描述】:

我有一个从 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:

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

提前谢谢大家。

【问题讨论】:

  • 这可能会有所帮助:conecode.com/news/2011/05/…
  • @hanumanDev,这无济于事,因为这是一篇关于 iOS UIWebView 的文章,而问题是关于 Mac WebView

标签: objective-c xcode cocoa webview


【解决方案1】:

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

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

【讨论】:

  • 这正是我想要的,我只是不知道如何链接代表?我是否将箭头从 WebView 绘制到 FrameLoadDelegate 的文件所有者?
  • 我问的原因是因为目前这个方法似乎没有被执行?再次感谢罗伯
  • 该方法是WebUIDelegate 协议的一部分,因此您需要将实现该方法的任何对象指定为UIDelegateWebView。在您的示例代码中,您已经在 App Delegate 中实现了它,因此您可以将 WebViewUIDelegate 出口链接到 AppDelegate 对象。
  • 或者,如果您的应用代理有 Web 视图的出口,您可以在 applicationDidFinishLaunching: 中调用 [webView setUIDelegate:self]
  • 你绝对的英雄,它有效!我已经尝试这样做了好几个小时了 AAAH。非常感谢!
【解决方案2】:

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

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

【讨论】:

  • 在 Chrome 上测试时,这确实删除了所有不好的属性,正是我想要的,但是代码似乎没有对我的 WebView 做任何事情?我已经把它放在了WebViewProgressFinished方法中,但链接仍然无法点击?
【解决方案3】:

你可以打电话

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

确实有效。

你也可以实现

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

做你想做的事。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    • 2016-03-19
    • 2012-07-06
    • 2015-08-16
    • 2013-08-13
    相关资源
    最近更新 更多