2017-05-29 20 views
0

を使用して、IOS Objective Cのサファリでwindow.openメソッドを開くために、私はUIWebViewでURLを開くためのアプリケーションが、safari Webブラウザで正常に動作しているWebサイトを開発していは、どのように私はiOSの開発に新たなんだWebViewの

が、 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 

とIをファイルでとにかく私はそのリンクをクリックしたときにサファリブラウザを開く必要がありますが、私のローディングのWebアプリケーションのソース

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


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

から、このコードを見つけました

私は考えると

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

ここに文字列やファイルは、私は自分のコードに追加されただけでなく、それが正常に働いているサンプルコードであるとして、我々はJavaScriptを注入javascriptを上書きすることができソリューション を私を見つけたよリンク

+0

ホープこれは役立つ:https://stackoverflow.com/a/2899793/775896 – Mrunal

+0

@code Kadiyaは – Maddy

+0

を(navigationType == UIWebViewNavigationTypeLinkClicked){} '条件および参照は、それが実行されているか否かを場合'内部にブレークポイントを追加したりしません@Maddy Nopeのバディは 'UIWebViewNavigationTypeOther'型があるので実行されませんが、' UIWebViewNavigationTypeLinkClicked'によって 'window.open()'を処理できません –

答えて

1

のそのタイプのために実行していません私

- (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()方法にはありません!

関連する問題