安卓调用webview中iframe定义方法(适用于数据回调给webview)

admin2年前实践出真知985

首先在html中用js获取到当前页面的层级

//递归获取当前嵌套在iframe页面的层级位置
    function getSelfWindowPath(win, index){
        if(win.parent.frames.length > 0){
            for(var i = 0; i < win.parent.frames.length; i++){
                if(win.parent.frames[i] === win){
                    return 'window.frames[' + index + '].' + getSelfWindowPath(win.parent.frames[i].parent, i);
                }
            }
        }
        return 'window';
    }
    //把这个传给原生安卓
    var windowPath = getSelfWindowPath(window, index);
    
    //原生安卓要调用的方法
    function commeCallme(msg){
       alert('被调用了' + msg);
    }

将以上位置传给原生安卓

原生安卓中直接

//windowPath 为传过来的层级信息
mWebView.loadUrl("javascript:" + windowPath + ".commeCallme('message')");


相关文章

openfeign在单体项目用法

公司项目需要与其他系统对接,常规的httpClient写法,不符合我大道至简的理念,于是研究了一下openfeign,本文只是提供一个思路,具体还需要根据实际场景进行完善。一、加入依赖我使用的spri...

记录一次docker安装mysql8.3

配置文件 /data/mysql8-data/conf/my.cnf[mysql] # 设置mysql控制台默认字符集 default-character-set=utf8mb4 #&...

js的缓存工具

项目中用到的一个localStorage工具,可以用于token存储、数据缓存,支持过期,使用起来简答快捷JavaScript版const DEFAULT_EXPIRE =&nbs...

关于时间的处理(时间范围生成,mysql按照天,周,月统计)

mysql的查询语句 #周  select FROM_UNIXTIME(create_time,'%Y%u') weeks,count(cas...

thinkphp3.2一个复杂的查询语句

function buildWhere($where = array(), $searchFields = ''){    if(empty($searchFiel...

PHP造一个$_PUT

$_PUT = array(); if ('PUT' == $_SERVER['REQUEST_METHOD'])&...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。