A.html是主页面,B.html是子页面,在B中用mui.fire给A页面回传值,但是在A页面并没有执行fire中的事件,不知道是怎么回事?哪位大神给解答一下,谢谢。
A页面如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title></title>
<script src="js/mui.min.js"></script>
<link href="css/mui.min.css" rel="stylesheet"/>
<style>
.button {
font-size: 18px;
font-weight: normal;
text-decoration: none;
display: block;
text-align: center;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
color: #FFF;
background-color: #FFCC33;
border: 1px solid #ECB100;
padding: .5em 0em;
margin: .5em .7em;
-webkit-border-radius: 5px;
border-radius: 5px;
}
</style>
</head>
<body>
<div id="content" class="content">
<div class="button" onclick="openPage();">打开B页面</div>
<div id="info">输出值</div>
</div>
</body>
</html>
<script>
mui.init();
function openPage(){
mui.openWindow({
url:'B.html',
id:'B'
});
}
window.addEventListener('buttonClick',function(event){
var value = event.detail.value;
document.getElementById("info").innerText = value;
});
</script>
B页面如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title></title>
<script src="js/mui.min.js"></script>
<link href="css/mui.min.css" rel="stylesheet"/>
<style>
.button {
font-size: 18px;
font-weight: normal;
text-decoration: none;
display: block;
text-align: center;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
color: #FFF;
background-color: #FFCC33;
border: 1px solid #ECB100;
padding: .5em 0em;
margin: .5em .7em;
-webkit-border-radius: 5px;
border-radius: 5px;
}
</style>
</head>
<body>
<div id="content" class="content">
<div class="button" onclick="openPage();">打开A页面</div>
</div>
</body>
</html>
<script>
mui.init();
function openPage(){
var mainPage = null;
if(!mainPage){
// mainPage = plus.webview.getWebviewById('A.html');
mainPage = plus.webview.currentWebview().parent();
}
mui.fire(mainPage,"buttonClick",{
"value":"100",
"name":"hello"
});
mui.back();
}
</script>
5 个回复
DCloud_UNI_FXY
把mui.back放到timeout里边,延迟百十毫秒执行看看
zpzlbww (作者)
谢谢回复。这个问题我自己找到解决办法了,就是把
换成
我也不清楚为什么这样就好使了,只能用笨办法就是不停的试各种方法。我从用HBuilder到现在也遇到了大大小小的坑,感觉虽然从Hello mui和Hello H5+这两个样例中学到不少但是真正用起来总是感觉例子还是不够,只能自己摸索或是求助社区,希望各位能做出更多的例子来给我们这些菜鸟用,有时候一个例子可能比说好多话管用
s***@163.com
如果A页面不是B页面的opener,楼主上面的这个方法就没有用的,更好的办法应该是这样的:
var web = plus.webview.all()[0]; //这个得到的是index.html页面对象
mui.fire(web,"customEvent",{param:附加参数});
这样就能触发index.html页面的自定义事件了。
7***@qq.com
因为parent是子页面与父页面的关系,使用append才是这个关系,而openwindow不是子父页面关系,其实就是你触发的webview错了
l***@126.com
怎么我打开B页面后再打开A页面没反应,这是什么原因??我是用手机浏览器打开测试的,多谢!