t***@163.com
t***@163.com
  • 发布:2016-07-13 11:16
  • 更新:2016-07-17 18:08
  • 阅读:2030

预加载页面里面在进行预加载页面不成功问题

分类:HTML5+

在登录后的首页预加载了对应功能的页面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

2016-07-13 11:16 负责人:无 分享
已邀请:
赵梦欢

赵梦欢 - 专注前端,乐于分享!

在proMetering.html和proPlan.html页面放上这段代码,检测一下看你在点击的时候是否已经加载完成了,没有加载完成自然是为null

var ws=plus.webview.currentWebview();  
ws.addEventListener("loaded", function(e){  
    console.log( "Loaded: "+e.target.getURL() );  
}, false);
t***@163.com

t***@163.com (作者)

还没进入对应的页面,有进入不了,点击的时候view就没有获取到;

赵梦欢

赵梦欢 - 专注前端,乐于分享!

这个问题经过详细沟通,得出了结论是传递和接收参数的时机不对,详细的可以看看这里:
https://segmentfault.com/a/1190000005729743#articleHeader8

t***@163.com

t***@163.com (作者)

反复测试了几次,把参数全部去掉也是不起作用的,预加载方法换成mui.preload(),其他代码不变则问题解决。建议遇到类似问题的朋友暂时还是使用mui.preload()。

hylong

hylong

preload和preloadPages可以根据场景灵活使用。两者同时存在的情况下,preload会先执行,而且可立即返回对应webview的引用。所以一般preload使用场景是其页面可能会立即被访问;preloadPages可以用在设置的二级页面、评论页面等一些刚开始不会立即被访问的场景。

你的代码也可以优化,可以将需要preloadPages的页面都放在首页,而不是需要的时候才去配置。

如有问题可以上传一个有问题的静态demo

该问题目前已经被锁定, 无法添加新回复