File tree Expand file tree Collapse file tree 2 files changed +35
-1
lines changed Expand file tree Collapse file tree 2 files changed +35
-1
lines changed Original file line number Diff line number Diff line change 22
22
#define WVJB_WEBVIEW_DELEGATE_TYPE NSObject <UIWebViewDelegate>
23
23
#endif
24
24
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
+
25
37
typedef void (^WVJBResponseCallback)(id responseData);
26
38
typedef void (^WVJBHandler)(id data, WVJBResponseCallback responseCallback);
27
39
28
40
@interface WebViewJavascriptBridge : WVJB _WEBVIEW_DELEGATE_TYPE
29
41
42
+ @property (nonatomic ,weak ) id <WebViewJavascriptBridgeDelegate> delegate;
43
+
30
44
+ (instancetype )bridgeForWebView : (WVJB_WEBVIEW_TYPE*)webView handler : (WVJBHandler)handler ;
31
45
+ (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 ;
32
47
+ (instancetype )bridgeForWebView : (WVJB_WEBVIEW_TYPE*)webView webViewDelegate : (WVJB_WEBVIEW_DELEGATE_TYPE*)webViewDelegate handler : (WVJBHandler)handler resourceBundle : (NSBundle *)bundle ;
33
48
+ (void )enableLogging ;
34
49
Original file line number Diff line number Diff line change @@ -52,6 +52,15 @@ + (instancetype)bridgeForWebView:(WVJB_WEBVIEW_TYPE*)webView webViewDelegate:(WV
52
52
WebViewJavascriptBridge* bridge = [[WebViewJavascriptBridge alloc ] init ];
53
53
[bridge _platformSpecificSetup: webView webViewDelegate: webViewDelegate handler: messageHandler resourceBundle: bundle];
54
54
[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;
55
64
return bridge;
56
65
}
57
66
@@ -387,7 +396,17 @@ - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)
387
396
} else if (strongDelegate && [strongDelegate respondsToSelector: @selector (webView:shouldStartLoadWithRequest:navigationType: )]) {
388
397
return [strongDelegate webView: webView shouldStartLoadWithRequest: request navigationType: navigationType];
389
398
} else {
390
- return YES ;
399
+ if (self.delegate ){
400
+ if ([self .delegate respondsToSelector: @selector (WVJB_webView:shouldStartLoadWithRequest:navigationType: )]){
401
+ return [self .delegate WVJB_webView: webView
402
+ shouldStartLoadWithRequest: request
403
+ navigationType: navigationType];
404
+ }else {
405
+ return YES ;
406
+ }
407
+ }else {
408
+ return YES ;
409
+ }
391
410
}
392
411
}
393
412
You can’t perform that action at this time.
0 commit comments