を使用して、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
を上書きすることができソリューション を私を見つけたよリンク
ホープこれは役立つ:https://stackoverflow.com/a/2899793/775896 – Mrunal
@code Kadiyaは – Maddy
を(navigationType == UIWebViewNavigationTypeLinkClicked){} '条件および参照は、それが実行されているか否かを場合'内部にブレークポイントを追加したりしません@Maddy Nopeのバディは 'UIWebViewNavigationTypeOther'型があるので実行されませんが、' UIWebViewNavigationTypeLinkClicked'によって 'window.open()'を処理できません –