最近刚刚入门mui,学习慕课上仿豆瓣app,但是在预加载和跳转页面中出现了以下问题。
Uncaught Error: webview[某个页面的id] does not exist
具体代码如下:
//预加载电影详情页面
var detailPage = mui.preload({
id:'movie-detail',
url:'./html/movie-detail.html'
});
//打开电影详情页面
function open_detail(item){
//触发详情页面的movieId事件
mui.fire(detailPage,'movieId',{
id:item.id
});
//打开
mui.openWindow({
id:'movie-detail'
});
}
这段代码没有放在plusReady中,具体结构如下,
修改方案:
把预加载丢在plusReady中,然后在plusReady中使用detailPage= plus.webview.getWebviewById('movie-detail');来获取这个webview,具体如下。
var detailPage;
mui.plusReady(function() {
mui.preload({
id: 'movie-detail',
url: './html/movie-detail.html'
});
detailPage= plus.webview.getWebviewById('movie-detail');
});
//打开电影详情页面
function open_detail(item) {
//触发详情页面的movieId事件
mui.fire(detailPage, 'movieId', {
id: item.id
});
//打开
mui.openWindow({
id: 'movie-detail'
});
}
具体原因尚不明确,可能跟js执行的顺序有关,很有可能是预加载没完成,或者页面还没加载完成就进行预加载,导致movie-detail这个webview并没有加载,所以id为movie-detail的这个页面就不存在,实际需要进一步考察,如果有大佬知道请告知我一下,感激不尽。
完整项目代码:
链接:https://pan.baidu.com/s/12sjW5MYOiA9YBwjEF0xrGA 密码:hy15