@@ -18,14 +18,7 @@ <h1>Demo</h1>
1818 if ( window . WKWebViewJavascriptBridge ) { return callback ( WKWebViewJavascriptBridge ) ; }
1919 if ( window . WKWVJBCallbacks ) { return window . WKWVJBCallbacks . push ( callback ) ; }
2020 window . WKWVJBCallbacks = [ callback ] ;
21-
22- <!-- var WVJBIframe = document.createElement('iframe');-->
23- <!-- WVJBIframe.style.display = 'none';-->
24- <!-- WVJBIframe.src = 'https://__bridge_loaded__';-->
25- <!-- document.documentElement.appendChild(WVJBIframe);-->
2621 window . webkit . messageHandlers . iOS_Native_InjectJavascript . postMessage ( null )
27-
28- < ! -- setTimeout ( function ( ) { document . documentElement . removeChild ( WVJBIframe ) } , 0 ) -- >
2922 }
3023
3124 setupWKWebViewJavascriptBridge ( function ( bridge ) {
@@ -72,21 +65,15 @@ <h1>Demo</h1>
7265 window . WKWebViewJavascriptBridge = {
7366 registerHandler : registerHandler ,
7467 callHandler : callHandler ,
75- disableJavscriptAlertBoxSafetyTimeout : disableJavscriptAlertBoxSafetyTimeout ,
7668 _fetchQueue : _fetchQueue ,
7769 _handleMessageFromiOS : _handleMessageFromiOS
7870 } ;
7971
80- var messagingIframe ;
8172 var sendMessageQueue = [ ] ;
8273 var messageHandlers = { } ;
8374
84- var CUSTOM_PROTOCOL_SCHEME = 'https' ;
85- var QUEUE_HAS_MESSAGE = '__wvjb_queue_message__' ;
86-
8775 var responseCallbacks = { } ;
8876 var uniqueId = 1 ;
89- var dispatchMessagesWithTimeoutSafety = true ;
9077
9178 function registerHandler ( handlerName , handler ) {
9279 messageHandlers [ handlerName ] = handler ;
@@ -99,9 +86,6 @@ <h1>Demo</h1>
9986 }
10087 _doSend ( { handlerName :handlerName , data :data } , responseCallback ) ;
10188 }
102- function disableJavscriptAlertBoxSafetyTimeout ( ) {
103- dispatchMessagesWithTimeoutSafety = false ;
104- }
10589
10690 function _doSend ( message , responseCallback ) {
10791 if ( responseCallback ) {
@@ -110,8 +94,6 @@ <h1>Demo</h1>
11094 message [ 'callbackID' ] = callbackID ;
11195 }
11296 sendMessageQueue . push ( message ) ;
113-
114- <!-- messagingIframe.src = CUSTOM_PROTOCOL_SCHEME + '://' + QUEUE_HAS_MESSAGE;-->
11597 window . webkit . messageHandlers . iOS_Native_FlushMessageQueue . postMessage ( null )
11698 }
11799
@@ -122,38 +104,30 @@ <h1>Demo</h1>
122104 }
123105
124106 function _dispatchMessageFromiOS ( messageJSON ) {
125- if ( dispatchMessagesWithTimeoutSafety ) {
126- setTimeout ( _doDispatchMessageFromiOS ) ;
107+ var message = JSON . parse ( messageJSON ) ;
108+ var messageHandler ;
109+ var responseCallback ;
110+
111+ if ( message . responseID ) {
112+ responseCallback = responseCallbacks [ message . responseID ] ;
113+ if ( ! responseCallback ) {
114+ return ;
115+ }
116+ responseCallback ( message . responseData ) ;
117+ delete responseCallbacks [ message . responseID ] ;
127118 } else {
128- _doDispatchMessageFromiOS ( ) ;
129- }
130-
131- function _doDispatchMessageFromiOS ( ) {
132- var message = JSON . parse ( messageJSON ) ;
133- var messageHandler ;
134- var responseCallback ;
135-
136- if ( message . responseID ) {
137- responseCallback = responseCallbacks [ message . responseID ] ;
138- if ( ! responseCallback ) {
139- return ;
140- }
141- responseCallback ( message . responseData ) ;
142- delete responseCallbacks [ message . responseID ] ;
119+ if ( message . callbackID ) {
120+ var callbackResponseId = message . callbackID ;
121+ responseCallback = function ( responseData ) {
122+ _doSend ( { handlerName :message . handlerName , responseID :callbackResponseId , responseData :responseData } ) ;
123+ } ;
124+ }
125+
126+ var handler = messageHandlers [ message . handlerName ] ;
127+ if ( ! handler ) {
128+ console . log ( "WKWebViewJavascriptBridge: WARNING: no handler for message from iOS:" , message ) ;
143129 } else {
144- if ( message . callbackID ) {
145- var callbackResponseId = message . callbackID ;
146- responseCallback = function ( responseData ) {
147- _doSend ( { handlerName :message . handlerName , responseID :callbackResponseId , responseData :responseData } ) ;
148- } ;
149- }
150-
151- var handler = messageHandlers [ message . handlerName ] ;
152- if ( ! handler ) {
153- console . log ( "WKWebViewJavascriptBridge: WARNING: no handler for message from iOS:" , message ) ;
154- } else {
155- handler ( message . data , responseCallback ) ;
156- }
130+ handler ( message . data , responseCallback ) ;
157131 }
158132 }
159133 }
@@ -162,18 +136,11 @@ <h1>Demo</h1>
162136 _dispatchMessageFromiOS ( messageJSON ) ;
163137 }
164138
165- messagingIframe = document . createElement ( 'iframe' ) ;
166- messagingIframe . style . display = 'none' ;
167- messagingIframe . src = CUSTOM_PROTOCOL_SCHEME + '://' + QUEUE_HAS_MESSAGE ;
168- document . documentElement . appendChild ( messagingIframe ) ;
169-
170- registerHandler ( "_disableJavascriptAlertBoxSafetyTimeout" , disableJavscriptAlertBoxSafetyTimeout ) ;
171-
172139 setTimeout ( _callWVJBCallbacks , 0 ) ;
173140 function _callWVJBCallbacks ( ) {
174141 var callbacks = window . WKWVJBCallbacks ;
175142 delete window . WKWVJBCallbacks ;
176- for ( var i = 0 ; i < callbacks . length ; i ++ ) {
143+ for ( var i = 0 ; i < callbacks . length ; i ++ ) {
177144 callbacks [ i ] ( WKWebViewJavascriptBridge ) ;
178145 }
179146 }
0 commit comments