小云菜
小云菜
  • 发布:2015-08-14 11:42
  • 更新:2015-09-23 17:10
  • 阅读:3941

[报bug] scroll下拉后,dom重置不能恢复到初始状态及全屏预览的bug

分类:MUI

报bug,求解决

先说一下需求

为了提高加载速度,页面是预加载的,每次打开加载的数据都不一样。返回时清空数据。  
页面有scroll滚动功能和图片预览功能。  
demo附件已上传  

1.scroll
当我重置dom时,重新调用
mui('.mui-scroll-wrapper').scroll(); //回弹


重新初始化 看mui-container 还是有transition位移的  
有没有方法去初始化  
我自己去还原为初始状态,重新加载数据时 依然会滚动到原状态,当dom高度比较小时,白屏。
                    //TODO dom树变化后,scroll如何重置?  
                    //如下手动恢复后,页面重新打开后单击,scroll依然滚到上一次所在的位置  

                    //style="-webkit-transform: translate3d(0px, 0px, 0px) translateZ(0px); -webkit-transition-duration: 0ms; transition-duration: 0ms;"  
                    container.style.webkitTransform = 'translate3d(0px, 0px, 0px) translateZ(0px)';  
                    container.style.webkitTransition = '0ms';  

                    //-webkit-transition-duration: 500ms; transition-duration: 500ms; opacity: 0;  
                    var cnext = container.nextElementSibling;  
                    cnext.webkitTransition = '0ms';  

                    //-webkit-transition-duration: 0ms; transition-duration: 0ms; display: block; height: 410px; -webkit-transform: translate3d(0px, 0px, 0px) translateZ(0px);  
                    var chld = cnext.querySelector('.mui-scrollbar-indicator');  
                    chld.webkitTransition = '0ms';  
                    chld.webkitTransform = 'translate3d(0px, 0px, 0px) translateZ(0px)';  
                    chld.height = container.clientHeight;

2.previewImage
当我清空当前预加载页面数据时,重新加载数据并打开的时候 有以下bug:
页面内有两个preview-group 第一个g1是一张图片(头像), 第二个g2是多张图片 ,重新加在数据并mui.previewImage(); 后头像依然未变(实际上已经更改了), g2已经更改了,不过单击g2的图片x且该g2_index>0时 显示的却是g2的第一张图片,看代码有这个方法:

  • 写死的img且未更改previewimage.js
    bug:预加载重新打开后单击g1,显示原图片,单击g2>1的图片 显示的却是第一张图片
<div class="mui-content">  
            <!--  
                作者:1020450921@qq.com  
                时间:2015-08-14  
                描述:写死的img,再次previewImage时重新打开依然是上一次的图片  
            -->  
            <img id="img1" data-preview-src data-preview-group='1' />  
            <p>Group2</p>  
            <div id="imgContainer">  

            </div>  
        </div>  
<script>  
                mui.back = function() {  
                    document.getElementById("img1").src = '';  
                    document.getElementById("imgContainer").innerHTML = '';  
                    oldback();  
                }  
</script>
  • 写死img且更改previewimage.js
    bug: 和上面相同
$.previewImage = function(options) {  
        //TODO IMG写死的情况下,注释掉也无济于事  
        //动态生成的IMG,需要注释掉  
//      if (!previewImageApi) {  
            previewImageApi = new PreviewImage(options);  
//      }   
        return previewImageApi;  
    };
var oldback = mui.back;  
                mui.back = function() {  
                    var pre = document.getElementById("__MUI_PREVIEWIMAGE");  
                    pre && pre.parentNode.removeChild(pre);  
                    document.getElementById("img1").src = '';  
//document.getElementById("imgContainer0").innerHTML='';  
                    document.getElementById("imgContainer").innerHTML = '';  
                    oldback();  
                }
  • 动态生成img,且不更改previewimage.js ,不删除生成的__MUI_PREVIEWIMAGE
    bug: g1 再次正常了,不过g2单击index>0的的图片 依然显示g2_0
<div id="imgContainer0">  

            </div>  
            <!--  
                作者:1020450921@qq.com  
                时间:2015-08-14  
                描述:写死的img,再次previewImage时重新打开依然是上一次的图片  
            -->  
            <!--<img id="img1" data-preview-src data-preview-group='1' />-->  
<script>  
var oldback = mui.back;  
                mui.back = function() {  
//                  var pre = document.getElementById("__MUI_PREVIEWIMAGE");  
//                  pre && pre.parentNode.removeChild(pre);  
//                  document.getElementById("img1").src = '';  
document.getElementById("imgContainer0").innerHTML='';  
                    document.getElementById("imgContainer").innerHTML = '';  
                    oldback();  
                }  
</script>

  • 动态生成img,且更改previewimage.js ,删除生成的__MUI_PREVIEWIMAGE
    bug:预加载页面成功打开并返回后再次打开,单击g2_index>1 时,显示g2_0,再次关闭并打开,显示正常
    目前暂时使用这种debug的方法
2015-08-14 11:42 负责人:无 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

1.scroll问题

重新生成内容后,调用

var scrollApi = mui('.mui-scroll-wrapper').scroll();//获取插件对象  
scrollApi.refresh();//刷新  
scrollApi.scrollTo(0,0);//滚动至顶部

2.预览问题
请到github里边下载最新的mui.previewimage.js

  • tinny100

    就用的这个代码,有错误提示[ERROR] : TypeError: undefined is not a function (evaluating 'scrollap.refresh()')

    2015-12-03 14:00

  • sql开发者

    3Q

    2017-04-12 09:54

safaring

safaring

回到顶部
$('.mui-scroll').css('transform',' translate3d(0,0,0) translateZ(0)');

  • 戍五

    这个前段时间还好用,现在又出问题了,具体问题是可以回到顶部,但是只要稍微往下拉一点,就快速跑到底部。

    2017-08-25 11:03

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