遇到这样一个问题,比如A页面跳转B页面,怎样在B页面获取A页面的webview对象,然后通过plus.webview.getWebviewById('***');这个方法进行一系列的操作,现在问题是getWebviewById()这里面的参数怎么写?我直接写他的页面url路径获取不到为null。然后我通过前一个页面用ws=plus.webview.currentWebview();ws.id = 'index';这个方法设置了页面id标识,然后将这个id传值到B页面,用plus.webview.getWebviewById()这个方法也获取不到A页面的webview对象!!!
代码:
A页面
<script type="text/javascript">
var ws = null;
mui.plusReady(function(){
ws = plus.webview.currentWebview();
ws.id = 'index';
// console.log(ws.id);
});
mui("body").on("tap", "a", function() {
var id = this.href;
mui.openWindow({
id: id,
url: id,
styles: 'webview_style',
extras:{
pageId:ws.id //扩展参数
},
show: {
aniShow: 'pop-in'
}
});
});
</script>
B页面
<script type="text/javascript">
mui.plusReady(function(){
var ws = plus.webview.currentWebview();
var page = plus.webview.getWebviewById(ws.pageId);
console.log(page);
});
</script>
打出log后page为null
3 个回复
Trust - 少说废话
5+webview的id是在创建的时候设置的,不可动态修改。若传入无效的字符串,则id为url的值。
具体参考相关API创建新的Webview窗口
入口页的id是plus.runtime.appid,入口页也有专用的方法可以获取。
GETONE
既然是open方法,可以用参数传过去,在B上获取
[已删除]
1、id是创建时候固定,为何要动态指定?
2、获取创建者id:plus.webview.currentWebview().opener().id,不知道你是不是要这个;
3、如果不是创建者,我一般会在A打开B之后,执行B页面里的一个evalJS,从而动态改变B里面的一个变量,以后通过这个变量来操作A。不知道对你是否有用。