美文网首页
Android-JS交互 非JSON(JS对象、匿名回调)如何解

Android-JS交互 非JSON(JS对象、匿名回调)如何解

作者: JeahWan | 来源:发表于2019-08-07 18:41 被阅读0次

最近公司项目与三方h5页面对接,要求实现几个js方法,但是看了所谓的文档是这样的....

image.png
(这里马赛克的内容就是我们平时和h5约定好的注入js对象名,下文以mlb代替)


wtf????js对象?匿名函数?大哥我是用java的,可怜可怜吧 接受不了js对象啊 更别提匿名函数了,只能接受string


于是找对方沟通,对方表示为了保持良好的兼容性(LZ就不想改)
只能这个样子,你自己想办法吧~

(微笑)


我只是想要把参数json序列化,另外要个回调函数名,很简单啊 5分钟 哦不 3分钟就能搞定对吧?

可是对面死活不给改啊,这你说我该怎么办。。。


小脑袋开始思索....

我想要给他的参数穿身名为json的衣服;
我想要给可怜的匿名函数起个名纸;

想法是有了,但怎么实现呢?java实现?不存在的。js方法重载?好主意!!


大家都知道咱强大的webview是可以通过

loadUrl("javascript:"+"函数名啊什么的") 

来加载js代码的,那么ok,我来帮对面完成交互应有的样子(没错,我 对接 我自己!)

摆在眼前的一座大山,我不会js代码啊 肿么办?


这么办:

image.png

接通了 接通了...


image.png




image.png



好吧 ,其实哥们儿就在旁边,肯德基在对面~
简单的讲解了下需求,作为前端巨佬的哥们,3分钟甩我脸上一段js:

//这行代码也是个坑 开始注入失败 说window.mlb未定义 需要加上这行先声明
window.mlb= {};

window.keys = {
    callback: 'APPCallback'
};

window.mlb.getLocation = function (data, cb) {
    //在原本的data中加入一个新的字段callback 也就是回调函数名
    data.callback=keys.callback;
    //将远方的cb赋值给自己声明的
    window[keys.callback] = cb;
    //control是我们自己跟自己人约定的标识
    window.control.getLocation(JSON.stringify(data));
};



OK,万事俱备,只欠注入

在webview的onPageFinished中:

@Override
public void onPageFinished(WebView view, String url) {
        //getJs是我自己写的一个方法 因为代码较多 放到了一个js文件中 
        //从assets中读取字符串出来 不要忘记前缀javascript:
        webview.loadUrl("javascript:" + getJs());
        super.onPageFinished(view, url);
}




十分舒适。

相关文章

  • Android-JS交互 非JSON(JS对象、匿名回调)如何解

    最近公司项目与三方h5页面对接,要求实现几个js方法,但是看了所谓的文档是这样的.... (微笑)我只是想要把参数...

  • android h5 js 匿名函数通信

    android js 互相调用 支持js匿名函数接收 支持js json对象接收 支持js函数返回值获取 通过注解...

  • JQuery入门

    零) js / ajax / json / jQuery js: 基于对象, 解释型, 事件驱动, 浏览器交互执行...

  • JS Json对象与js字符串的相互转换

    json定义 json --> js对象 js对象 --> json

  • Android-JS交互beta

    Android 与 Js 较互 html: test.html: Android端: WebView初始化: Js...

  • # JSON 对象、JSON 字符串 转换

    1. JSON 对象 json 对象,可以通过 javascript 存取属性,如“对象.属性”调用。 2. JS...

  • JS注意事项

    JS/JSON js对象转换字符串:JSON.stringify(要转换的对象)json字符串转换成js对象:JS...

  • 回调函数与promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数 具名回调写法 匿名回调写法 多层嵌套的匿名回调(回调地...

  • 回调函数与promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数 具名回调写法 匿名回调写法 多层嵌套的匿名回调(回调地...

  • Promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数一个最基本的具名回调匿名回调 回调地狱匿名回调嵌套过多层...

网友评论

      本文标题:Android-JS交互 非JSON(JS对象、匿名回调)如何解

      本文链接:https://www.haomeiwen.com/subject/ideadctx.html