,
但是等几秒之后,返回到列表页点击进入详情页,自定义事件里的代码就可以运行了。
给人感觉就是没完全加载完,就进入了详情页,导致自定义事件失效。 但是要怎么修改呢? 求助
chender - 与人为善
估计是evalJS和plusReady执行先后顺序的问题;
在你的子页面plusreay之前,事件就已经通过evalJS(mui.fire底层是通过evalJS实现的)触发了
在列表页面先预加载详情页面
mui.preload({
url: ‘detail.html’,
id:'detail.html',
styles: {
scrollIndicator: 'none' //无滚动
}
});
然后当点击列表的时候用mui.fire传参再打开detail.html
var f_detailpage = plus.webview.getWebviewById('detail.html');
//触发详情页面的newsId事件
mui.fire(f_detailpage, 'Detail');
setTimeout(function() {
plus.webview.show('detail.html','slide-in-right'); // 显示窗口
}, 300);
然后在detail.html的页面里面写监听
window.addEventListener('Detail', function(event) { //监听加载数据
alert("ok");
});
楼上的那个方法可行 但是不可取~因为需要最快的时间让其展示。。。
额 难道是mui的硬伤?
chender - 与人为善
楼上说的不全对,fire底层用的是evalJS,
evalJS是有缓存机制的;
var view=plus.webview.create(...);//不设置url
view.evalJS(xxx)
view.loadURL(xxx);
你可以试一下,上面的代码能正常运行
回复 liuzhuolin:我说的是 DCloud_MUI_FXY说的不全对;预加载里面的代码逻辑和创建基本是一样的,我只是想说明,evalJS不会因为界面没有loaded就不执行,他会被缓存起来,loaded之后执行
2015-09-07 21:34