var limit = 13,
count = 0;
mui.init({
preloadLimit: limit, //同时并存的预加载窗口数量
swipeBack: false,
});
(function($) {
$.plusReady(function() {
//初始化一级列表的预加载
$('#list>.mui-table-view-cell', document.body).each(function() {
//只预加载一级列表,二级列表在其展开时再预加载;
if (!this.classList.contains('mui-collapse')) {
var url = this.querySelector('a').getAttribute("href");
//预加载,默认使用url作为其id
$.preload({
url: url,
});
console.log(url);
if (++count >= limit) {
return false;
}
}
})
当设置limit数字稍微大一点,控制台就会输出 Uncaught RangeError: Maximum call stack size exceeded. 设置成13 都不可以。然后当点击列表进入另一个页面以后,无法返回到主列表,控制台输出 Uncaught TypeError: Cannot call method 'parent' of null at js/mui.min.js:6
gortonlau (作者)
问题出在$.preload({url: url,});把这一行注释掉就不出错,难道多次调用preload会导致内存不足导致的?之前尝试替换mui.js ,可是控制台不会输出具体是哪一行错误,只报错。
2014-11-19 02:00
gortonlau (作者)
并没有发现啥地方递归调用造成的死循环啊,我是用hbuilder新建的mui的模版,打开list.html以后改了下limit变量的值然后调试的时候就输出那个错误,点来列表的某项以后进去了也回不到主页面。
2014-11-19 11:34
gortonlau (作者)
把preload方法替换成plus.webview.create照样会有这个错误,这说明webview超过十几个左右的时候就一定会有这个错误。莫非创建webview的过程中很消耗javascript的内存才这样的?
2014-11-19 11:42
DCloud_UNI_FXY
看你贴出来的代码。似乎你的Hbuilder不是最新的吧。最新的Hbuilder带的mui模板的代码应该不是这个了。
2014-11-19 11:47
gortonlau (作者)
回复 DCloud_UNI_FXY:刚更新的
2014-11-19 13:02