鍍金池/ 問答/HTML5  HTML/ h5怎么寫個(gè)方法把數(shù)據(jù)拋出給移動端獲???

h5怎么寫個(gè)方法把數(shù)據(jù)拋出給移動端獲???

如題,需求是寫個(gè)h5頁面嵌在app里,然后進(jìn)這個(gè)頁面的時(shí)候,h5調(diào)接口獲取數(shù)據(jù)并保存在一個(gè)方法里,移動端會用原生調(diào)用這個(gè)方法獲取h5接收到的數(shù)據(jù),這個(gè)方法前端該怎么寫?

回答
編輯回答
巷尾

jsBridge,跟客戶端協(xié)議好方法名就好了。

2018年2月8日 19:32
編輯回答
凹凸曼

移動端嵌入H5頁面必然要用到 WebView 組件,以 Android 為例:

以下是移動端調(diào)用 js 的代碼:

    WebView contentWebView = (WebView) findViewById(R.id.webview);
    
    //啟用javascript
    contentWebView.getSettings().setJavaScriptEnabled(true);
    
    contentWebView.loadUrl("javascript:sayHello()");

以下是在頁面中定義 js 函數(shù)的代碼:

    var sayHello = function(){ return "Hello" };

在此不建議通過服務(wù)端去直接調(diào)用 js 中的函數(shù),因?yàn)檫@樣效率不是很高。

2017年5月2日 22:36
編輯回答
呆萌傻

貌似放在window下app就可以直接調(diào)吧?

{
    let data;
    fetch(url).then(function(_data){data=_data};tellAppToFetch());
    window.fetchData=function(){return data;}
}
2018年7月19日 00:43
編輯回答
不討喜
//ios
function SMBPay(calback){
    try{
        window.webkit.messageHandlers.SMBPay.postMessage(calback);
        return "ios"
    }catch(err){
        return "nozc"
    }
}
//android
function SMBPay(parameter){
    try{
        app.SMBPay(parameter); 
    }catch(err){
        return "nozc"
    }
}

前端調(diào)的話就 SMBPay(some data),其他就交給app開發(fā)把

當(dāng)然方法名你需要和app開發(fā)統(tǒng)一好

2017年5月13日 23:25