diff --git a/Android/WebViewJavascriptBridge/res/raw/webviewjavascriptbridge.js b/Android/WebViewJavascriptBridge/res/raw/webviewjavascriptbridge.js index 63d9794b..83af8c9e 100644 --- a/Android/WebViewJavascriptBridge/res/raw/webviewjavascriptbridge.js +++ b/Android/WebViewJavascriptBridge/res/raw/webviewjavascriptbridge.js @@ -1,90 +1,98 @@ ;(function() { - if (window.WebViewJavascriptBridge) { return } + if (window.WebViewJavascriptBridge) { + return; + } - var messageHandlers = {} - var responseCallbacks = {} - var uniqueId = 1 + var messageHandlers = {}; + var responseCallbacks = {}; + var uniqueId = 1; function init(messageHandler) { - if (WebViewJavascriptBridge._messageHandler) { throw new Error('WebViewJavascriptBridge.init called twice') } - WebViewJavascriptBridge._messageHandler = messageHandler + if (WebViewJavascriptBridge._messageHandler) { + throw new Error('WebViewJavascriptBridge.init called twice'); + } + WebViewJavascriptBridge._messageHandler = messageHandler; } function send(data, responseCallback) { - _doSend({ data:data }, responseCallback) + _doSend({ data:data }, responseCallback); } - + function registerHandler(handlerName, handler) { - messageHandlers[handlerName] = handler + messageHandlers[handlerName] = handler; } - + function callHandler(handlerName, data, responseCallback) { - _doSend({ handlerName:handlerName, data:data }, responseCallback) + _doSend({ handlerName:handlerName, data:data }, responseCallback); } - + function _doSend(message, responseCallback) { - console.log("responseCallback:"+responseCallback); + console.log("responseCallback:" + responseCallback); if (responseCallback) { - var callbackId = 'cb_'+(uniqueId++)+'_'+new Date().getTime() - responseCallbacks[callbackId] = responseCallback - message['callbackId'] = callbackId - } - console.log("sending:"+JSON.stringify(message)); - _WebViewJavascriptBridge._handleMessageFromJs(message.data||null,message.responseId||null, - message.responseData||null,message.callbackId||null,message.handlerName||null); - + var callbackId = 'cb_' + (uniqueId++) + '_' + new Date().getTime(); + responseCallbacks[callbackId] = responseCallback; + message['callbackId'] = callbackId; + } + console.log("sending:" + JSON.stringify(message)); + _WebViewJavascriptBridge._handleMessageFromJs( + typeof message.data === 'object' ? JSON.stringify(message.data) : (message.data || null), + message.responseId || null, + message.responseData || null, + message.callbackId || null, + message.handlerName || null + ); } function _dispatchMessageFromJava(messageJSON) { - var message = JSON.parse(messageJSON) - var messageHandler - + var message = JSON.parse(messageJSON); + var messageHandler; + if (message.responseId) { - var responseCallback = responseCallbacks[message.responseId] + var responseCallback = responseCallbacks[message.responseId]; if (!responseCallback) { return; } - responseCallback(message.responseData) - delete responseCallbacks[message.responseId] + responseCallback(message.responseData); + delete responseCallbacks[message.responseId]; } else { - var responseCallback + var responseCallback; if (message.callbackId) { - var callbackResponseId = message.callbackId + var callbackResponseId = message.callbackId; responseCallback = function(responseData) { - _doSend({ responseId:callbackResponseId, responseData:responseData }) - } + _doSend({ responseId: callbackResponseId, responseData: responseData }); + }; } - - var handler = WebViewJavascriptBridge._messageHandler + + var handler = WebViewJavascriptBridge._messageHandler; if (message.handlerName) { - handler = messageHandlers[message.handlerName] + handler = messageHandlers[message.handlerName]; } try { - handler(message.data, responseCallback) + handler(message.data, responseCallback); } catch(exception) { - if (typeof console != 'undefined') { - console.log("WebViewJavascriptBridge: WARNING: javascript handler threw.", message, exception) + if (typeof console !== 'undefined') { + console.log("WebViewJavascriptBridge: WARNING: javascript handler threw.", message, exception); } } } } - + function _handleMessageFromJava(messageJSON) { - _dispatchMessageFromJava(messageJSON) + _dispatchMessageFromJava(messageJSON); } - //export + /* export */ window.WebViewJavascriptBridge = { init: init, send: send, registerHandler: registerHandler, callHandler: callHandler, _handleMessageFromJava: _handleMessageFromJava - } + }; - //dispatch event + /* dispatch event */ var doc = document; var readyEvent = doc.createEvent('Events'); readyEvent.initEvent('WebViewJavascriptBridgeReady'); readyEvent.bridge = WebViewJavascriptBridge; doc.dispatchEvent(readyEvent); -})(); \ No newline at end of file +})();