背景:今天遇到一个IOS 一直覆盖桥的问题,连续跳H5页面,页面注册的桥一直被覆盖,
IOS goback 后,桥拿到的是最后覆盖的那一次的。
经思考后:
解决办法两种。
第一种 h5监听返回事件后直接刷新页面
第二种 H5 监听返回事件重新加载桥。(博主采用这种 已解决生产问题)
附代码:
window.addEventListener('pageshow',function (e) {
if(e.persisted || (window.performance && window.performance.navigation.type ==2)){
//ios Android都会进来
//重新注册一次
registerHandlerAgain();
}
});
function registerHandlerAgain() {
var u = navigator.userAgent;
var d = new Date();
var t0 = d.getTime();
var ua = navigator.userAgent.toLowerCase();
if (u.indexOf('iPhone') > -1) {
console.log("页面返回注册");
require(['bridge-common'], function (BC) {
BridgeCommon = BC;
BC.setupWebViewJavascriptBridge({
actionButtons: actionButtons
}, function (bridge, config) {
BridgeCommon.bridge.registerHandler('XXX:JSBRIDGE:ACTION:BUTTONS', function (data, callback) {
console.log('Bridge register action buttons ' + Date.now());
callback(actionButtons);
});
});
});
}
}
参考资料:
https://blog.csdn.net/YongChao_bms/article/details/89714426