研究MUI和HBuilder有几天时间了,几个DEMO看完之后,发现一个有意思的问题,就是MUI的登录模板。
首先我先贴出代码:
(因为这个官方DEMO,plusReady的部分太长,我就只贴出了这个部分)
$.plusReady(function() {
plus.screen.lockOrientation("portrait-primary");
var settings = app.getSettings();
var state = app.getState();
var mainPage = $.preload({
"id": 'main',
"url": 'main.html'
});
var main_loaded_flag = false;
mainPage.addEventListener("loaded",function () {
main_loaded_flag = true;
});
var toMain = function() {
//使用定时器的原因:
//可能执行太快,main页面loaded事件尚未触发就执行自定义事件,此时必然会失败
var id = setInterval(function () {
if(main_loaded_flag){
clearInterval(id);
$.fire(mainPage, 'show', null);
mainPage.show("pop-in");
}
},20);
};
我在注册完账号,输入用户名和密码之后,点击登录怎么都没有反应。我用Chrome的inspect模式下,发现登录按钮已经tap了(进了一个我设置的断点)
问题出在toMain函数,官方的做法,给了一个标志位,main_loaded_flag,为了保证页面在加载完毕后,自定义事件能够响应到,这个flag默认为false,只有main这个webview响应了loaded事件,把这个标志位设置为true,就能【清除定时器->FIRE自定义事件->显示main这个webview】,然而我在
main_loaded_flag = true这里设置了断点,大概等了10分钟,仍然没有触发进来
我好奇的问题在于:
1、preload有这么慢吗?
2、loaded事件为何没有被触发,我在度娘上几乎找不到有关于loaded的技术贴
------------------------追加问题分割线------------------------
- 在我把APP退出之后,第二次启动APP,登录,顺利完成。
- 也就是说——这个问题在于,用户第一次启动APP出现的
- 我已经验证了4次(卸载,CTRL+R运行,等待进断点,退出,重进),重现率可以说是100%
- 第3个问题:首次使用APP,preload或者loaded事件会失效吗?
1***@qq.com
弱弱的问一句【当您要参考这个演示程序进行相关 app 的开发时, 请注意将相关方法调整成 “基于服务端Service” 的实现】,这个有案例吗,要怎么调呢?
2018-04-15 19:37