在开发中需要用到客户端与JS交互,考虑到js注入的问题,使用了WebviewBridge这个控件。但是在实际开发过程中遇到了js写好代码,android和ios只能其中一个客户端调用成功的问题。在检查之后发现了问题。记录下来,以便其他人可以不踩坑。
其实很简单,就是android和ios分别有段初始化js的代码,需要都加载才可以让android和ios成功调用js方法。代码如下:
function connectWebViewJavascriptBridge(callback) {
if (window.WebViewJavascriptBridge) {
callback(WebViewJavascriptBridge)
} else {
document.addEventListener(
'WebViewJavascriptBridgeReady'
, function() {
callback(WebViewJavascriptBridge)
},
false
);
}
if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); }
if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); }
window.WVJBCallbacks = [callback];
var WVJBIframe = document.createElement('iframe');
WVJBIframe.style.display = 'none';
WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';
document.documentElement.appendChild(WVJBIframe);
setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)
}