javascript
webviewjavascriptbridge android ios,js与ios交互使用WebViewJavascriptBridge如何写多个函数
//js與webview交互初始化
function setupWebViewJavascriptBridge(callback) {
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 = 'https://__bridge_loaded__';
document.documentElement.appendChild(WVJBIframe);
setTimeout(function () {
document.documentElement.removeChild(WVJBIframe)
}, 0)
}
//關(guān)注按鈕點(diǎn)擊交互
setupWebViewJavascriptBridge(function (bridge) {
function followChange(data) {
if (data == 1) {
$(".btnFollow").removeClass("btnFollow-yes").addClass("btnFollow-no");
} else {
$(".btnFollow").removeClass("btnFollow-no").addClass("btnFollow-yes");
}
}
$(".btnFollow").click(function () {
var followStaus=1;
if ($(this).is('.btnFollow-no')) {
followStaus=1;
} else {
followStaus=2;
}
bridge.callHandler(
'callMobileHandler',
{"followStaus": followStaus, "deviceType": "ios"},
function (response) {
if(response.followStaus==1){
$(this).removeClass("btnFollow-yes").addClass("btnFollow-no");
}else{
$(this).removeClass("btnFollow-no").addClass("btnFollow-yes");
}
});
});
bridge.registerHandler('callJSHandler', function (data, responseCallback) {
followChange(data.followStaus);
// responseCallback(responseData);
});
//以上代碼實(shí)現(xiàn)的功能可以正常運(yùn)行,以下代碼實(shí)現(xiàn)的功能沒有生效
var imgs = document.getElementsByTagName("img");
//傳遞圖片src數(shù)組
var imgsSrc=imgs.map(function (value,index) {
return value.src
});
bridge.callHandler(
'callMobileHandler',//名稱待換
{"imgList": imgsSrc, "deviceType": "ios"},//參數(shù)待換
function (response) {//假設(shè)返回的src數(shù)組為imgList
for(var i = 0;i< response.imgList.length; i++){
imgs[i].src=response.imgList[i];
}
});
//js注冊(cè)函數(shù),沒用可刪除
/*bridge.registerHandler('callJSHandler', function (data, responseCallback) {
responseCallback(responseData);
});*/
//圖片點(diǎn)擊事件
for(var i = 0;i< imgs.length; i++){
imgs[i].onclick(function(){
bridge.callHandler(
'callMobileHandler',//名稱待換
{"currentImg": imgs[i].src, "deviceType": "ios"},//參數(shù)待換
function (response) {
//內(nèi)容待寫
});
//js獲得ios端參數(shù)函數(shù),沒用可刪除
/*bridge.registerHandler('callJSHandler', function (data, responseCallback) {
responseCallback(responseData);
});*/
});
}
});
我想問一下我想寫多個(gè)callhandle函數(shù),是應(yīng)該調(diào)用多次這個(gè)橋接函數(shù)呢,還是在一個(gè)函數(shù)里重復(fù)寫幾遍呢,或者是其他方法?目前只有第一個(gè)功能實(shí)現(xiàn)了,剩下的傳遞圖片數(shù)組和圖片點(diǎn)擊事件都沒有傳遞過去,該怎么辦?
總結(jié)
以上是生活随笔為你收集整理的webviewjavascriptbridge android ios,js与ios交互使用WebViewJavascriptBridge如何写多个函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “千里歌别鹤”下一句是什么
- 下一篇: 坚果g9s如何链接哈曼卡顿