ZLBridge是为Android的Webview和JS数据交互时提供更简单方便的小工具组件,使用简单,可扩展性强,对原生WebView的API没有任何侵入污染,可配合H5端使用ZLBridge-JS库来交互,也支持原生本地注入JS代码,H5无需任何集成。目前已支持的平台有
ZLBridge-iOS
ZLBridge-Android
ZLBridge-JS
ZLBridge-flutter
ZLBridge-RN
repositories {
maven { url "https://jitpack.io/" }
}
dependencies {
implementation 'com.github.FPJack:ZLBridge-Android:1.1.0'
}
ZLBridge bridge = new ZLBridge(webView);
原生通过注入本地js代码初始化
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
bridge.injectLocalJS();
}
或者H5端导入初始化
//导入一次后也可以通过全局window.zlbridge拿zlbridge对象
var zlbridge = require('zlbridge')
window.zlbridge.call('test',(arg) => {
});
window.zlbridge.call('test',{key:"value"},(arg) => {
});
bridge.registHandler("test", new ZLBridge.RegisterJSHandlerInterface() {
@Override
public void callback(Object body, ZLBridge.JSCallback jsCallBack) {
ArrayList list = new ArrayList();
list.add("js调用了原生");
list.add(body);
//true:js调用一次test事件只能接受一次原生回调结果,false:可以接受多次回调结果
jsCallBack.callback(list,true);
}
});
ArrayList list = new ArrayList();
list.add("已收到原生调用js传过来的值");
bridge.callHander("jsMethod",list, new ZLBridge.EvaluateJSResultCallback() {
@Override
public void onReceiveValue(Object value,String error) {
Log.d("MainActivity", "value:" + value);
}
});
window.zlbridge.register("jsMethod",(arg) => {
return arg;
});
或者
window.zlbridge.registerWithCallback("jsMethod",(arg,callback) => {
//ture代表原生只能监听一次回调结果,false可以连续监听,默认传为true
callback(arg,true);
});
document.addEventListener('ZLBridgeInitReady', function() {
consloe.log('ZLBridge初始化完成');
},false);
ZLBridge is available under the MIT license. See the LICENSE file for more info.