2017-05-29 88 views
0

打开window.open方法我是新来的iOS开发如何在IOS Objective C的Safari浏览器使用的WebView

我开发一个应用程序在UIWebView打开网址,但该网站工作正常,在safari网页浏览器,但当我录制链接编码为window.open()时,它将加载相同的webview。这里是我的代码

ViewController.h文件

// 
// ViewController.m 
// 
// 
// Created by Code Kadiya on 5/18/17. 
// Copyright © 2017 Code Kadiya. All rights reserved. 
// 

#import "ViewController.h" 

@interface ViewController() <UIWebViewDelegate> 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [self.webView setDelegate:self]; 
    // Do any additional setup after loading the view, typically from a nib. 

    NSURL *websiteUrl = [NSURL URLWithString:@"http://some.url"]; 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:websiteUrl cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:15.0]; 
    [_webView loadRequest:request]; 
} 

- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest: (NSURLRequest *)request navigationType: (UIWebViewNavigationType)navigationType { 
    if (navigationType == UIWebViewNavigationTypeLinkClicked) { 
     NSURL *url = [request URL]; 
     [[UIApplication sharedApplication] openURL: url options:@{} completionHandler:nil]; 
     return NO; 
    } 
    return YES; 
} 




- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 





@end 

,我发现加载Web应用程序的源代码,这

<a onclick="open_pdf('office')" target="_blank"> 


function open_pdf(type) { 
    window.open("http://some.url?type=" + type);    
} 

无论如何我需要打开Safari浏览器,当我点击该链接,但我无法更改网络应用源代码

我认为

[[UIApplication sharedApplication] openURL: url options:@{} completionHandler:nil]; 

该类型的链接

+0

希望这有助于:https://stackoverflow.com/a/2899793/775896 – Mrunal

+0

@code卡地亚添加一个破发点中'如果(navigationType == UIWebViewNavigationTypeLinkClicked){}'条件,看它是否被执行或不 – Maddy

+0

@Maddy Nope buddy它不执行,因为有'UIWebViewNavigationTypeOther'类型,但我无法通过'UIWebViewNavigationTypeLinkClicked'处理'window.open()' –

回答

1

我找到解决方案 我们可以覆盖javascript注入的JavaScript字符串或文件,这里不执行就是例子代码,我加入到我的代码,以及它的正常工作以我

- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest: (NSURLRequest *)request navigationType: (UIWebViewNavigationType)navigationType { 
    if(navigationType == UIWebViewNavigationTypeLinkClicked){ 
     [[UIApplication sharedApplication] openURL: [request URL] options:@{} completionHandler:nil]; 
     return NO; 
    } else { 
     [self.webView stringByEvaluatingJavaScriptFromString:@"window.close = function() { window.history.back(); }"]; 
    } 
    return YES; 
} 

它不是window.open()方法,无论如何,我们可以覆盖任何方法类似这样的例子

谢谢!