直接从项目里复制了一份关于WebViewJavascriptBridge使用的代码,注释部分是自己暂时的理解。孟哥说,callHandler类似于jq里的trigger,
registerHandler类似于jq的bind。暂时先这样理解,应该找本移动Web的书看看了。
function showMonthPicker(date) { var data = { timestamp: +date }; window.connectWebViewJavascriptBridge && connectWebViewJavascriptBridge(function(bridge) { bridge.callHandler('showMonthPicker', data, function() { }); // callHandler函数有三个参数,第一个参数是一个函数名,此函数名可看成APP内置的, // 通过callHandler可以让APP执行showMonthPicker函数,并对showMonthPicker函数传入后面两个参数(data与fun) }); } function setMonthPicker(timestamp) { vm.$set('selectedDate', timestamp); } window.connectWebViewJavascriptBridge && connectWebViewJavascriptBridge(function(bridge) { bridge.registerHandler("setMonthPicker", function(data, responseCallback) { // registerHandler函数有2个参数,第一个参数是一个函数名,此函数名是JS在APP上注册的,第二个参数是注册的函数名的函数体 // APP执行setMonthPicker时,是让JS执行了函数体里的内容,函数体的参数是通过APP执行setMonthPicker(data,responseCallback)时传给JS的。 var json = JSON.parse(data); setMonthPicker(json.timestamp); }); });