在登录后的首页预加载了对应功能的页面proList,代码如下:
mui.init({
preloadPages: [{
url: 'proList.html',
id: 'proList'
}]
});
在点击进入proList.html页面中,又进行了预加载,代码如下:
mui.init({
preloadPages: [{
url: 'proMetering.html',
id: 'proMetering'
}, {
url: 'proPlan.html',
id: 'proPlan'
}]
});
在对应的功能点击事件中获取webview不成功
var view = plus.webview.getWebviewById("proMetering");
调试查看 view=null
5 个回复
赵梦欢 - 专注前端,乐于分享!
在proMetering.html和proPlan.html页面放上这段代码,检测一下看你在点击的时候是否已经加载完成了,没有加载完成自然是为null
t***@163.com (作者)
还没进入对应的页面,有进入不了,点击的时候view就没有获取到;
赵梦欢 - 专注前端,乐于分享!
这个问题经过详细沟通,得出了结论是传递和接收参数的时机不对,详细的可以看看这里:
https://segmentfault.com/a/1190000005729743#articleHeader8
t***@163.com (作者)
反复测试了几次,把参数全部去掉也是不起作用的,预加载方法换成mui.preload(),其他代码不变则问题解决。建议遇到类似问题的朋友暂时还是使用mui.preload()。
hylong
preload和preloadPages可以根据场景灵活使用。两者同时存在的情况下,preload会先执行,而且可立即返回对应webview的引用。所以一般preload使用场景是其页面可能会立即被访问;preloadPages可以用在设置的二级页面、评论页面等一些刚开始不会立即被访问的场景。
你的代码也可以优化,可以将需要preloadPages的页面都放在首页,而不是需要的时候才去配置。
如有问题可以上传一个有问题的静态demo