1
1
#import " WebViewJavascriptBridge_OSX.h"
2
2
3
+ @interface WebViewJavascriptBridge ()
4
+
5
+ @property (nonatomic , assign ) NSUInteger numRequestsLoading;
6
+
7
+ @end
8
+
3
9
@implementation WebViewJavascriptBridge
4
10
5
11
+ (id )bridgeForWebView : (WebView *)webView handler : (WVJBHandler)handler {
@@ -17,15 +23,17 @@ + (id)bridgeForWebView:(WebView *)webView webViewDelegate:(id)webViewDelegate ha
17
23
bridge.webView .frameLoadDelegate = bridge;
18
24
bridge.webView .resourceLoadDelegate = bridge;
19
25
bridge.webView .policyDelegate = bridge;
20
-
26
+
21
27
return bridge;
22
28
}
23
29
24
30
- (void )webView : (WebView *)webView didFinishLoadForFrame : (WebFrame *)frame
25
31
{
26
32
if (webView != self.webView ) { return ; }
27
33
28
- if (![[self .webView stringByEvaluatingJavaScriptFromString: @" typeof WebViewJavascriptBridge == 'object'" ] isEqualToString: @" true" ]) {
34
+ self.numRequestsLoading --;
35
+
36
+ if (self.numRequestsLoading == 0 && ![[self .webView stringByEvaluatingJavaScriptFromString: @" typeof WebViewJavascriptBridge == 'object'" ] isEqualToString: @" true" ]) {
29
37
NSString *filePath = [[NSBundle mainBundle ] pathForResource: @" WebViewJavascriptBridge.js" ofType: @" txt" ];
30
38
NSString *js = [NSString stringWithContentsOfFile: filePath encoding: NSUTF8StringEncoding error: nil ];
31
39
[self .webView stringByEvaluatingJavaScriptFromString: js];
@@ -45,6 +53,9 @@ - (void)webView:(WebView *)webView didFinishLoadForFrame:(WebFrame *)frame
45
53
46
54
- (void )webView : (WebView *)webView didFailLoadWithError : (NSError *)error forFrame : (WebFrame *)frame {
47
55
if (webView != self.webView ) { return ; }
56
+
57
+ self.numRequestsLoading --;
58
+
48
59
if (self.webViewDelegate && [self .webViewDelegate respondsToSelector: @selector (webView:didFailLoadWithError:forFrame: )]) {
49
60
[self .webViewDelegate webView: self .webView didFailLoadWithError: error forFrame: frame];
50
61
}
@@ -78,6 +89,9 @@ - (void)webView:(WebView *)webView didCommitLoadForFrame:(WebFrame *)frame {
78
89
79
90
- (NSURLRequest *)webView : (WebView *)webView resource : (id )identifier willSendRequest : (NSURLRequest *)request redirectResponse : (NSURLResponse *)redirectResponse fromDataSource : (WebDataSource *)dataSource {
80
91
if (webView != self.webView ) { return request; }
92
+
93
+ self.numRequestsLoading ++;
94
+
81
95
if (self.webViewDelegate && [self .webViewDelegate respondsToSelector: @selector (webView:resource:willSendRequest:redirectResponse:fromDataSource: )]) {
82
96
return [self .webViewDelegate webView: webView resource: identifier willSendRequest: request redirectResponse: redirectResponse fromDataSource: dataSource];
83
97
}
0 commit comments