gpt4 book ai didi

ios - 为什么 "_blank"链接在我的应用程序中打开,而其他链接在 webview 中打开?

转载 作者:行者123 更新时间:2023-11-29 12:04:01 27 4
gpt4 key购买 nike

我有一个基本的测试应用程序。它包含一个 UIWebView。

该网站包含带有 target="_blank"的链接,有些则没有。问题是发生的情况恰恰相反,“_blank”在应用程序中打开,其他在 Safari 中打开。

我的 View Controller 包含这个:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
[[UIApplication sharedApplication] openURL:request.URL];
return false;
}
return true;
}

怎么可能呢?谢谢

最佳答案

您自己实现了此行为。当您收到 UIWebViewNavigationTypeLinkClicked 时,这意味着点击了任何链接,而不仅仅是带有 target="_blank" 的链接。对于这种情况,您调用 -[UIApplication openURL:],因此,您可以在 Safari 中打开任何链接。

当目标为“_blank”时,您将收到与 UIWebViewNavigationTypeOther 相同的委托(delegate)方法。对于这种情况,您返回 true,因此链接在 Web View 中打开。这里的问题是,没有简单的方法可以将此案例与许多“其他”案例区分开来。 UIWebView API 远非完美。我建议切换到 WKWebView

看这个问题Open target="_blank" links outside of UIWebView in Safari有关此功能基于 UIWebView 的实现的详细信息。

UPD:再次检查。对于 target="_blank",我收到 2 个后续 shouldStartLoadWithRequest: 调用,首先是 UIWebViewNavigationTypeLinkClicked,第二个是 UIWebViewNavigationTypeOther。因此,在我的例子中,所有链接都在 Safari 中打开,并带有来自问题的代码。在 iOS 9.1 和 iOS 8.4 上检查过。

关于ios - 为什么 "_blank"链接在我的应用程序中打开,而其他链接在 webview 中打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35724855/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com