小巽
小巽
  • 发布:2016-07-12 15:19
  • 更新:2016-07-13 23:03
  • 阅读:2669

【报Bug】关于openWindow里的titleUpdate

分类:MUI

详细问题描述
[内容]
openWindow里的loaded改成titleUpdate后,导致原本在plusReady的pagebeforeshow事件不响应了;

原因如下
首先新webview的loading是最开始触发的。
然后是新webview的titleUpdate,
然后是新webview里的HTML的DOMContentLoaded,
一般情况下新webview里plus ready在DOMContentLoaded之后发生,
然后是新webview的loaded事件。
最后还有一个是新页面的body里的onload事件。

内容摘自 http://ask.dcloud.net.cn/article/571

2016-07-12 15:19 负责人:无 分享
已邀请:
DCloud_UNI_CHB

DCloud_UNI_CHB

bug已修复,请从github下载最新的mui.min.js;

解决方案:
1、webview依然在titleUpdate事件后显示
2、预加载及pagebeforeshow则保持在loaded事件后才触发

  • 小巽 (作者)

    thx~

    http://ask.dcloud.net.cn/question/20722 这个问题也看一下~我若表述得不清楚的话,我可以详细说明一下的~

    2016-07-13 23:28

  • 小强314

    提交个bug, 没积分开新题目,只能在这提交了,谢谢

    mui.get , mui.post 在wap环境下面全部提交的方法是option ,并不是get和post, 求救啊


    mui.get('http://xxxx.com',{category:'news'},function(data){

    alert(data);

    },'json'

    );


    测试出来是Option, 不是用的get

    post也是,同时 mui.ajax中的method填的也无效

    2016-07-14 12:22

DCloud_heavensoft

DCloud_heavensoft

titleUpdate是在老窗体监听的,plusready是在新窗体监听的。你难道在新窗体监听了titleUpdate?

  • 小巽 (作者)

    见评论

    2016-07-13 18:59

小巽

小巽 (作者) - 一个只会js不会css的渣渣~

if (!url) {
showWebview();
} else {
// webview.addEventListener("loaded", showWebview, false);
//titleUpdate触发时机早于loaded,更换为titleUpdate后,可以更早的显示webview
webview.addEventListener("titleUpdate", showWebview, false);
}

以上这段代码是来自 mui 3.2里的$.openWindow里的,我可能没写清除,@DCloud_heavensoft 没懂我的意思,我的某个窗体A添加了这么段代码
$.plusReady(function() {
window.addEventListener('pagebeforeshow', function(){
console.log('pagebeforeshow');
});
});
然后B窗体的某个事件通过openWindow打开窗体A,结果没有打印信息出来,在3.2版本之前是可以的,因为titleUpdate触发的比plusready要早,导致plusready里监听pagebeforeshow的事件没法响应了。
而原本的loaded因为触发的比plusready要晚,所以plusready里监听pagebeforeshow的事件是可以响应得了的~

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