//<script> window.onerror = function(err) { log('window.onerror: ' + err) } function connectWebViewJavascriptBridge(callback) { //注意,所有bridge函数都应写在这里面 if (window.WebViewJavascriptBridge) { callback(WebViewJavascriptBridge) } else { document.addEventListener('WebViewJavascriptBridgeReady', function() { callback(WebViewJavascriptBridge) }, false) } } connectWebViewJavascriptBridge(function(bridge) { var uniqueId = 1 function log(message, data) { var log = document.getElementById('log') var el = document.createElement('div') el.className = 'logLine' el.innerHTML = uniqueId++ + '. ' + message + ':<br/>' + JSON.stringify(data) if (log.children.length) { log.insertBefore(el, log.children[0]) } else { log.appendChild(el) } } // 注册js函数,可使用key在OC中直接调用 bridge.init(function(message, responseCallback) { log('JS got a message', message) var data = { 'Javascript Responds':'Wee!' } log('JS responding with', data) responseCallback(data) }) // 注册js函数,可使用key在OC中直接调用 bridge.registerHandler('testJavascriptHandler', function(data, responseCallback) { log('ObjC called testJavascriptHandler with', data) var responseData = { 'Javascript Says':'Right back atcha!' } log('JS responding with', responseData) responseCallback(responseData) }) // 注册js函数,可使用key在OC中直接调用 bridge.registerHandler('testCallback', function(data, responseCallback) { log('test', data) var responseData = { 'Javascript Says':'test' } log('JS responding with', responseData) responseCallback(responseData) }) // 添加按钮 var button = document.getElementById('buttons').appendChild(document.createElement('button')) button.innerHTML = 'Send message to ObjC' button.onclick = function(e) { e.preventDefault() var data = 'Hello from JS button' log('JS sending message', data) bridge.send(data, function(responseData) { log('JS got response', responseData) }) } // 添加按钮 var button1 = document.getElementById('buttons').appendChild(document.createElement('button')) button1.innerHTML = 'button test' button1.onclick = function(e) { e.preventDefault() var data = 'button test' log('JS sending message', data) // 调用OC中初始化方法(创建`bridge`) bridge.send(data, function(responseData) { log('JS got response', responseData) }) }
document.body.appendChild(document.createElement('br'))
// 添加按钮 var callbackButton = document.getElementById('buttons').appendChild(document.createElement('button')) callbackButton.innerHTML = 'Fire testObjcCallback' callbackButton.onclick = function(e) { e.preventDefault() log('JS calling handler "testObjcCallback"') // 调用OC中方法(`key`) bridge.callHandler('testObjcCallback', {'foo': 'bar'}, function(response) { log('JS got response', response) }) } }) // </script>
|