Closed amydomi closed 5 years ago
App执行window.funTest
的话可以直接用
WebView.loadUrl("javascript:window.funTest('data')")
但是并不能获取到传递的jsonData,除非如你上面的例子,在Android里面拦截console.log数据,这是不推荐的(因为console使用频率很高)。或者在console.log地方调用JsBridge的方法传递给App
可能我没表达清楚我的用途。 我在js里面定义函数给app去使用,app传递一个json对象给js WebView.loadUrl("javascript:window.funTest('data')") 这个只能传递字符串参数,并不能传递json对象
所以JsBridge就是解决这个问题的呀。
举个ajax的例子,app对前端暴露ajax方法
@JSBridgeMethod
public void ajax(JBMap dataMap) {
String type = dataMap.getString("type");
String url = dataMap.getString("url");
JBMap data = dataMap.getJBMap("data");
JBCallback successCallback = dataMap.getCallback("success");
JBCallback errorCallback = dataMap.getCallback("error");
// Omit the request code
if (request success) {
successCallback.apply("success");
} else {
errorCallback.apply("failure");
}
}
前端调用就可以传递对象啦
JsBridge.ajax({
type:'GET',
url:'xxx.com',
dataType:'text'
data:{a:1, b:'xx'},
success:function(data){
},
error:function(err){
}
})
例如: window.funTest = function(jsonData) { console.log(jsonData) }
App里面如何执行window.funTest() 并拿到jsonData数据?