Skip to content

Commit 16aa68e

Browse files
add a method,make the user can decide whether the request from webview should be load except the WVJB request
1 parent 47d9a9a commit 16aa68e

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

WebViewJavascriptBridge/WebViewJavascriptBridge.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,28 @@
2222
#define WVJB_WEBVIEW_DELEGATE_TYPE NSObject<UIWebViewDelegate>
2323
#endif
2424

25+
@protocol WebViewJavascriptBridgeDelegate<NSObject>
26+
27+
@optional
28+
29+
// define a method,make the user decide every request from webview should be load except the WVJB request
30+
-(BOOL) WVJB_webView:(UIWebView *)webView
31+
shouldStartLoadWithRequest:(NSURLRequest *)request
32+
navigationType:(UIWebViewNavigationType)navigationType;
33+
34+
35+
@end
36+
2537
typedef void (^WVJBResponseCallback)(id responseData);
2638
typedef void (^WVJBHandler)(id data, WVJBResponseCallback responseCallback);
2739

2840
@interface WebViewJavascriptBridge : WVJB_WEBVIEW_DELEGATE_TYPE
2941

42+
@property (nonatomic,weak) id <WebViewJavascriptBridgeDelegate> delegate;
43+
3044
+ (instancetype)bridgeForWebView:(WVJB_WEBVIEW_TYPE*)webView handler:(WVJBHandler)handler;
3145
+ (instancetype)bridgeForWebView:(WVJB_WEBVIEW_TYPE*)webView webViewDelegate:(WVJB_WEBVIEW_DELEGATE_TYPE*)webViewDelegate handler:(WVJBHandler)handler;
46+
+ (instancetype)bridgeForWebView:(WVJB_WEBVIEW_TYPE*)webView WVJBDelegate:(id)delegate handler:(WVJBHandler)handler;
3247
+ (instancetype)bridgeForWebView:(WVJB_WEBVIEW_TYPE*)webView webViewDelegate:(WVJB_WEBVIEW_DELEGATE_TYPE*)webViewDelegate handler:(WVJBHandler)handler resourceBundle:(NSBundle*)bundle;
3348
+ (void)enableLogging;
3449

WebViewJavascriptBridge/WebViewJavascriptBridge.m

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,15 @@ + (instancetype)bridgeForWebView:(WVJB_WEBVIEW_TYPE*)webView webViewDelegate:(WV
5252
WebViewJavascriptBridge* bridge = [[WebViewJavascriptBridge alloc] init];
5353
[bridge _platformSpecificSetup:webView webViewDelegate:webViewDelegate handler:messageHandler resourceBundle:bundle];
5454
[bridge reset];
55+
bridge.delegate = nil;
56+
return bridge;
57+
}
58+
59+
+ (instancetype)bridgeForWebView:(WVJB_WEBVIEW_TYPE*)webView WVJBDelegate:(id)delegate handler:(WVJBHandler)handler {
60+
WebViewJavascriptBridge* bridge = [[WebViewJavascriptBridge alloc] init];
61+
[bridge _platformSpecificSetup:webView webViewDelegate:nil handler:handler];
62+
[bridge reset];
63+
bridge.delegate = delegate;
5564
return bridge;
5665
}
5766

@@ -385,7 +394,17 @@ - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)
385394
} else if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:shouldStartLoadWithRequest:navigationType:)]) {
386395
return [strongDelegate webView:webView shouldStartLoadWithRequest:request navigationType:navigationType];
387396
} else {
388-
return YES;
397+
if(self.delegate){
398+
if([self.delegate respondsToSelector:@selector(WVJB_webView:shouldStartLoadWithRequest:navigationType:)]){
399+
return [self.delegate WVJB_webView:webView
400+
shouldStartLoadWithRequest:request
401+
navigationType:navigationType];
402+
}else{
403+
return YES;
404+
}
405+
}else{
406+
return YES;
407+
}
389408
}
390409
}
391410

0 commit comments

Comments
 (0)