安卓调用webview中iframe定义方法(适用于数据回调给webview)
首先在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')");