打开目标=“_blank";Safari 中 UIWebView 之外的链接

Open target=quot;_blankquot; links outside of UIWebView in Safari(打开目标=“_blank;Safari 中 UIWebView 之外的链接)
本文介绍了打开目标=“_blank";Safari 中 UIWebView 之外的链接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

在我的 iOS 应用程序中,我有一个 UIWebView.

Inside my iOS Application I have an UIWebView.

现在我希望所有具有属性 target="_blank" 的链接不要在我的 WebView 内部打开,而是在 Safari 外部打开.

Now I want all links that have the attribute target="_blank" not to open inside my WebView but externally in Safari.

我该怎么做?

推荐答案

我的答案来自我在 Android WebView 的堆栈溢出中找到的答案.但实际上,两个 webview 都有相同的问题和相同的(脏)修复:

My answer, which is a from an answer I found on stack overflow for the Android WebView. But actually, both webview have the same problem and same (dirty) fix:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request     navigationType:(UIWebViewNavigationType)navigationType
{
    if ([request.URL.absoluteString hasPrefix:@"newtab:"])
    {
        // JS-hacked URl is a target=_blank url - manually open the browser.
        NSURL *url = [NSURL URLWithString:[request.URL.absoluteString substringFromIndex:7]];
        [[UIApplication sharedApplication] openURL:url];

        return true;
    }

    return true;
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    // JS Injection hack to solve the target="_blank" issue and open a real browser in such case.
    NSString *JSInjection = @"javascript: var allLinks = document.getElementsByTagName('a'); if (allLinks) {var i;for (i=0; i<allLinks.length; i++) {var link = allLinks[i];var target = link.getAttribute('target'); if (target && target == '_blank') {link.setAttribute('target','_self');link.href = 'newtab:'+link.href;}}}";
    [webView stringByEvaluatingJavaScriptFromString:JSInjection];
}

这解决了在 safari 中打开 target="_blank" 的问题,并在 webview 中保持打开标准链接.

This solves both the target="_blank" issue to open in safari, AND keeps opening standard links within the webview.

这篇关于打开目标=“_blank";Safari 中 UIWebView 之外的链接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

问题描述:H5页面,ios点击input框,输入内容时,页面会自动放大,且失焦后需手动放小,要怎么处理呢? 解决办法 meta name="viewport" content="width=device-width, initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" width=device
AWS DynamoDB Batch Get Request - iOS(AWS DynamoDB 批量获取请求 - iOS)
Querying DynamoDB on non-key attributes(在非关键属性上查询 DynamoDB)
DynamoDB auto incremented ID amp; server time (iOS SDK)(DynamoDB 自动递增 ID amp;服务器时间(iOS SDK))
Where to find a clear explanation about swift alert (UIAlertController)?(哪里可以找到关于 swift alert (UIAlertController) 的清晰解释?)
Facebook Requests Dialog: Frictionless Requests in native iOS app possible?(Facebook 请求对话框:本机 iOS 应用程序中的无摩擦请求可能吗?)