问题:
1、使用mui.init的preloadPages预加载页面后。无论是通过mui.openWindow还是mui.fire通知被预加载的webview自己打开自己,都会出现打开页面白屏的情况。
2、改用mui.preload逐条加载,封到函数中并在首页执行。当数量超过10条时,会出现“: Maximum call stack size exceeded”这个错误。无论是在mui.init()还是在mui.js中修改preloadLimit都依然会出现这个问题。
- 发布:2016-03-02 14:27
- 更新:2016-03-03 03:52
- 阅读:2929
Eason (作者)
@DCloud_MUI_FXY
我现在所有的页面都是需要预加载的,打开页面都是通过“通知该页面执行ajax并渲染好页面,currentWebview.show()”。这种方式是否有问题。
index.html设置为入口,调试问题1;
index2.html设置为入口,调试问题2
问题1:
你preload的a.html里边配置subpages,且是两个空对象,导致创建了两个空白webview一直在显示着,所以你的a.html看不到了。吧subpages去掉即可
问题2:
无法重现,我这里不提示错误
话说,preloadPages 里面为什么又定义了一个 subpages 呢?这个 subpages 不应该是那个被 preload 的页面自己考虑的问题吗?在这里给那个 webview 强加了一组 subpages,那个 webview 初始化的时候自己又搞一套 subpages,不是很容易乱套吗?
设计成这样,是有什么特殊的考虑吗?@DCloud_MUI_FXY
Eason (作者)
@DCloud_MUI_FXY
问题1解决了,原因和你说的一样,创建了两个空的webview。
我看到mui.js中preloadLimit设置为10。我使用的是mui的tab模版,在tab-main页面plusReady后,调用了若干个mui,preload方法。mui.preload方法预加载的页面加上tab-main页面plus.webview.create的页面数量之和超过10,就会报“Maximum call stack size exceeded”这个错误。无论是在mui.js或者是在tab-main页面的mui.init中修改prealoadLimit仍然有这个错误。而在mui.init中使用preloadPages预加载不用设置preloadLimit也不会有问题。
那么我想请问的是:
1、使用mui.preload是否有这个限制?是否需要设置preloadLimit?mui.preload源码也是调用plus.webivew.create的,那么plus.webview.create这个也应该算在预加载中?
2、为了打开页面体验良好,将所有页面都预加载,是否有问题?
2、哪种方式是否是正确的预加载实现方式呢?
方式1:tab-main.html页面通过mui.init({preloadPages:[]})预加载所有的页面
方式2:tab-main.html页面只加载一级子页面,在每层页面中都只加载自己的一级子页面。
其他,请补充
Eason (作者)
@DCloud_MUI_FXY
正常的预加载方式,如果预加载页面的数量超过10个。
mui.init方式和mui.preload方式分别应该怎么处理呢?
-
-
Eason (作者)
回复 DCloud_UNI_FXY:我页面都使用mui.fire方式通知子页面执行ajax渲染成功后显示出自己。如果在预加载的页面不使用mui.openWindow打开就无法触发级联的预加载。而使用mui.openWindow因页面是预加载的又无法传参。
2016-03-03 15:57
-
-
Eason (作者)
回复 DCloud_UNI_FXY:这个我试过,没问题的。但是你没觉得这样写代码不太好么。。另外麻烦回复下我楼上的问题。使用mui.preload和mui.init({preloadPages})是否会有数量的限制,有的话如何正确设置preloadLimit呢
2016-03-03 16:19
Eason (作者)
http://ask.dcloud.net.cn/question/328
预加载页面中,再预加载页面无法成功。
一定要使用mui.openWindow才能触发子页面的mui.init预加载吗,是否有其他方式
Eason (作者)
能分享一下你的预加载实现逻辑吗。1、使用方式是mui.init(),还是mui.preload。2、首页全部预加载,还是只预加载二级页面。
2016-03-02 14:57