File tree Expand file tree Collapse file tree 4 files changed +37
-9
lines changed Expand file tree Collapse file tree 4 files changed +37
-9
lines changed Original file line number Diff line number Diff line change @@ -86,17 +86,33 @@ This example can be found in `examples` folder.
86
86
87
87
``` js
88
88
const injectScript = `
89
- (function () {
90
- if (WebViewBridge) {
89
+ function webViewBridgeReady(cb) {
90
+ //checks whether WebViewBirdge exists in global scope.
91
+ if (window.WebViewBridge) {
92
+ cb(window.WebViewBridge);
93
+ return;
94
+ }
91
95
92
- WebViewBridge.onMessage = function (message) {
93
- alert('got a message from Native: ' + message);
96
+ function handler() {
97
+ //remove the handler from listener since we don't need it anymore
98
+ document.removeEventListener('WebViewBridge', handler, false);
99
+ //pass the WebViewBridge object to the callback
100
+ cb(window.WebViewBridge);
101
+ }
94
102
95
- WebViewBridge.send("message from webview");
96
- };
103
+ //if WebViewBridge doesn't exist in global scope attach itself to document
104
+ //event system. Once the code is being injected by extension, the handler will
105
+ //be called.
106
+ document.addEventListener('WebViewBridge', handler, false);
107
+ }
97
108
98
- }
99
- }());
109
+ webViewBridgeReady(function (webViewBridge) {
110
+ WebViewBridge.onMessage = function (message) {
111
+ alert('got a message from Native: ' + message);
112
+
113
+ WebViewBridge.send("message from webview");
114
+ };
115
+ });
100
116
` ;
101
117
102
118
var Sample2 = React .createClass ({
Original file line number Diff line number Diff line change @@ -286,6 +286,8 @@ - (NSString *)webViewBridgeScript {
286
286
var RNWBSchema = ' wvb' ;
287
287
var sendQueue = [];
288
288
var receiveQueue = [];
289
+ var doc = window.document ;
290
+ var customEvent = doc.createEvent (' Event' );
289
291
290
292
function callFunc (func, message) {
291
293
if (' function' === typeof func) {
@@ -340,6 +342,10 @@ function signalNative() {
340
342
};
341
343
342
344
window.WebViewBridge = WebViewBridge;
345
+
346
+ // dispatch event
347
+ customEvent.initEvent (' WebViewBridge' , true , true );
348
+ doc.dispatchEvent (customEvent);
343
349
}(window));
344
350
);
345
351
}
Original file line number Diff line number Diff line change 1
1
{
2
2
"name" : " react-native-webview-bridge" ,
3
- "version" : " 0.16.0 " ,
3
+ "version" : " 0.16.1 " ,
4
4
"description" : " React Native WebView Javascript Bridge" ,
5
5
"main" : " webview-bridge" ,
6
6
"directories" : {
Original file line number Diff line number Diff line change 9
9
var RNWBSchema = 'wvb' ;
10
10
var sendQueue = [ ] ;
11
11
var receiveQueue = [ ] ;
12
+ var doc = window . document ;
13
+ var customEvent = doc . createEvent ( 'Event' ) ;
12
14
13
15
function callFunc ( func , message ) {
14
16
if ( 'function' === typeof func ) {
63
65
} ;
64
66
65
67
window . WebViewBridge = WebViewBridge ;
68
+
69
+ //dispatch event
70
+ customEvent . initEvent ( 'WebViewBridge' , true , true ) ;
71
+ doc . dispatchEvent ( customEvent ) ;
66
72
} ( window ) ) ;
You can’t perform that action at this time.
0 commit comments