From 6306e2268ddbd9f9124c6ec57e67c9b9fbd30cb8 Mon Sep 17 00:00:00 2001 From: xuxie Date: Wed, 3 Aug 2016 13:42:13 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E4=BA=8C=E8=BF=9B?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Classes/IMYWebView.h | 1 + Classes/IMYWebView.m | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/Classes/IMYWebView.h b/Classes/IMYWebView.h index c9c9ba3..b83570c 100644 --- a/Classes/IMYWebView.h +++ b/Classes/IMYWebView.h @@ -53,6 +53,7 @@ - (id)loadRequest:(NSURLRequest*)request; - (id)loadHTMLString:(NSString*)string baseURL:(NSURL*)baseURL; +- (id)loadData:(NSData *)data MIMEType:(NSString *)MIMEType characterEncodingName:(NSString *)characterEncodingName baseURL:(NSURL *)baseURL; @property (nonatomic, readonly, copy) NSString* title; @property (nonatomic, readonly) NSURLRequest* currentRequest; diff --git a/Classes/IMYWebView.m b/Classes/IMYWebView.m index d21cbf0..b3459a9 100644 --- a/Classes/IMYWebView.m +++ b/Classes/IMYWebView.m @@ -297,6 +297,19 @@ - (id)loadHTMLString:(NSString*)string baseURL:(NSURL*)baseURL return [(WKWebView*)self.realWebView loadHTMLString:string baseURL:baseURL]; } } +- (id)loadData:(NSData *)data MIMEType:(NSString *)MIMEType characterEncodingName:(NSString *)characterEncodingName baseURL:(NSURL *)baseURL { + if (data) { + if (_usingUIWebView) { + [(UIWebView*)self.realWebView loadData:data MIMEType:MIMEType textEncodingName:characterEncodingName baseURL:baseURL]; + return nil; + } + else { + return [(WKWebView*)self.realWebView loadData:data MIMEType:MIMEType characterEncodingName:characterEncodingName baseURL:baseURL]; + } + }else { + return nil; + } +} - (NSURLRequest*)currentRequest { if (_usingUIWebView) { From 4b6aebf3c90fefea4c401da6fc039e01a14fcdeb Mon Sep 17 00:00:00 2001 From: xiexu Date: Thu, 15 Jun 2017 11:48:53 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Classes/IMYWebView.h | 3 +++ Classes/IMYWebView.m | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/Classes/IMYWebView.h b/Classes/IMYWebView.h index b83570c..248df2c 100644 --- a/Classes/IMYWebView.h +++ b/Classes/IMYWebView.h @@ -44,6 +44,9 @@ ///WKWebView 跟网页进行交互的方法。 - (void)addScriptMessageHandler:(id)scriptMessageHandler name:(NSString*)name; +- (void)removeScriptMessageHandlerName:(NSString*)name; + + ///back 层数 - (NSInteger)countOfHistory; - (void)gobackWithStep:(NSInteger)step; diff --git a/Classes/IMYWebView.m b/Classes/IMYWebView.m index b533350..65ae3ac 100644 --- a/Classes/IMYWebView.m +++ b/Classes/IMYWebView.m @@ -151,6 +151,15 @@ - (void)addScriptMessageHandler:(id)scriptMessageHandler [configuration.userContentController addScriptMessageHandler:scriptMessageHandler name:name]; } } + +- (void)removeScriptMessageHandlerName:(NSString*)name { + if (!_usingUIWebView) { + WKWebViewConfiguration* configuration = [(WKWebView*)self.realWebView configuration]; + [configuration.userContentController removeScriptMessageHandlerForName:name]; + } +} + + - (JSContext *)jsContext { if (_usingUIWebView) { From 77a06ef6b667d9579eeba1b075661c8240025960 Mon Sep 17 00:00:00 2001 From: xiexu Date: Thu, 27 Jul 2017 10:57:16 +0800 Subject: [PATCH 3/4] WKUIDelegate --- Classes/IMYWebView.h | 1 + Classes/IMYWebView.m | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/Classes/IMYWebView.h b/Classes/IMYWebView.h index 248df2c..dbfe287 100644 --- a/Classes/IMYWebView.h +++ b/Classes/IMYWebView.h @@ -18,6 +18,7 @@ - (void)webViewDidFinishLoad:(IMYWebView*)webView; - (void)webView:(IMYWebView*)webView didFailLoadWithError:(NSError*)error; - (BOOL)webView:(IMYWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType; +- (void)wkWebViewShowInfo:(NSString *)message; @end diff --git a/Classes/IMYWebView.m b/Classes/IMYWebView.m index 65ae3ac..93e92e1 100644 --- a/Classes/IMYWebView.m +++ b/Classes/IMYWebView.m @@ -230,6 +230,19 @@ - (void)webView:(WKWebView*)webView didFailNavigation:(WKNavigation*)navigation [self callback_webViewDidFailLoadWithError:error]; } #pragma mark - WKUIDelegate +//wkwebview默认不响应js的alert,设置代理,并且写alert的回调即可 +-(void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler{ + + NSLog(@"%@js想要alert",message); + if ([self.delegate respondsToSelector:@selector(wkWebViewShowInfo:)]) { + [self.delegate wkWebViewShowInfo:message]; + } + //一定要写这一句,否则会崩溃 + completionHandler(); + +} + + ///-- 还没用到 #pragma mark - CALLBACK IMYVKWebView Delegate From a65368c69b779e66eac7dd44c10de5f1bf683066 Mon Sep 17 00:00:00 2001 From: xiexu Date: Fri, 4 Aug 2017 16:38:09 +0800 Subject: [PATCH 4/4] WKWebView alter conform promote --- Classes/IMYWebView.h | 6 +++++- Classes/IMYWebView.m | 24 ++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/Classes/IMYWebView.h b/Classes/IMYWebView.h index dbfe287..ae06264 100644 --- a/Classes/IMYWebView.h +++ b/Classes/IMYWebView.h @@ -18,7 +18,11 @@ - (void)webViewDidFinishLoad:(IMYWebView*)webView; - (void)webView:(IMYWebView*)webView didFailLoadWithError:(NSError*)error; - (BOOL)webView:(IMYWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType; -- (void)wkWebViewShowInfo:(NSString *)message; +- (void)wkWebViewShowAlterInfo:(NSString *)message; + +- (void)wkWebViewShowConformInfo:(NSString *)message block:(void (^_Nonnull)(BOOL result))completionHandler; + +- (void)wkWebViewShowInputPanelInfo:(nullable NSString *)prompt defaultText:(nullable NSString *)defaultText block:(void (^_Nonnull)(NSString * _Nullable result))completionHandler; @end diff --git a/Classes/IMYWebView.m b/Classes/IMYWebView.m index 93e92e1..00f326d 100644 --- a/Classes/IMYWebView.m +++ b/Classes/IMYWebView.m @@ -234,8 +234,8 @@ - (void)webView:(WKWebView*)webView didFailNavigation:(WKNavigation*)navigation -(void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler{ NSLog(@"%@js想要alert",message); - if ([self.delegate respondsToSelector:@selector(wkWebViewShowInfo:)]) { - [self.delegate wkWebViewShowInfo:message]; + if ([self.delegate respondsToSelector:@selector(wkWebViewShowAlterInfo:)]) { + [self.delegate wkWebViewShowAlterInfo:message]; } //一定要写这一句,否则会崩溃 completionHandler(); @@ -243,6 +243,26 @@ -(void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString } +- (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(BOOL result))completionHandler { + if (self.delegate && [self.delegate respondsToSelector:@selector(wkWebViewShowConformInfo:block:)]) { + [self.delegate wkWebViewShowConformInfo:message block:^(BOOL result) { + completionHandler(result); + }]; + } +} + + +- (void)webView:(WKWebView *)webView runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(nullable NSString *)defaultText initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(NSString * _Nullable result))completionHandler { + if (self.delegate && [self.delegate respondsToSelector:@selector(wkWebViewShowInputPanelInfo:defaultText:block:)]) { + [self.delegate wkWebViewShowInputPanelInfo:prompt defaultText:defaultText block:^(NSString * _Nullable result) { + completionHandler(result); + }]; + } +} + + + + ///-- 还没用到 #pragma mark - CALLBACK IMYVKWebView Delegate