Runic
Runic
  • 发布:2016-05-29 16:18
  • 更新:2016-05-29 17:09
  • 阅读:3574

【报Bug】初始化 区域滚动 导致滚动区域内 textarea 无法滑动内容

分类:MUI

初始化 区域滚动 导致滚动区域内 textarea 无法滑动内容

<div class="mui-content">  
    <div class="mui-scroll-wrapper">  
        <div class="mui-scroll">  
            <ul class="mui-table-view info-list">  
                    <li class="mui-table-view-cell">  
                        <span>简&nbsp;&nbsp;&nbsp;&nbsp;介</span>  
                        <div class="mui-input-row">  
                            <textarea class="modify-text" rows="4">测试内容<br/>测试内容<br/>测试内容<br/>测试内容<br/>测试内容<br/>测试内容<br/>测试内容<br/>测试内容<br/>测试内容<br/>测试内容<br/>测试内容<br/>测试内容<br/>测试内容<br/>测试内容<br/>测试内容<br/>测试内容<br/>测试内容<br/></textarea>  

                        </div>  
                    </li>  
                </ul>  
        </div>  
    </div>  
</div>
mui('.mui-content>.mui-scroll-wrapper').scroll({ deceleration: 0.0005 });

希望像 下拉刷新那样加入 /^(INPUT|TEXTAREA|BUTTON|SELECT|VIDEO)$/ 这样的 正则控制跳过输入标签。

mui.js  
>line: 3587  
//这里没有判断?  preventDefaultException  
// 刷拉刷新的 滚动区域都有 正则 跳过 相关 标签  /^(INPUT|TEXTAREA|BUTTON|SELECT|VIDEO)$/   
        handleEvent: function(e) {  
//解决方案代码:  
            if(e.target){// 自己简单写了个 事件标签判断 解决了问题、  
                if(/^(INPUT|TEXTAREA|BUTTON|SELECT|VIDEO)$/.test(e.target.tagName)){  
                    if(document.activeElement == e.target){ // 焦点文本输入  
                        // 等于输入文本框时 且 焦点在标签上 时 不做滑动处理。。。这个逻辑应该是对的。  
                        // 点击输入框 允许获取焦点  
                        if(e.type==$.EVENT_START){  
                            return;  
                        }  
                        // 细节优化、TEXTAREA 滚动到最 顶部/底部 时 事件交给滚动区域 完成外部滚动区域滑动  
                        if(e.target.scrollTop!=0 && e.target.scrollTop!=(e.target.scrollHeight-e.target.offsetHeight)){  
                            return;  
                        }  
                    }  
                }  
            }  
//End - 解决方案代码  
            if (this.stopped) {  
                this.resetPosition();  
                return;  
            }  

            switch (e.type) {  
                case $.EVENT_START:  
                    this._start(e);  
                    break;

运行环境
[mui版本] v3.0.0

2016-05-29 16:18 负责人:无 分享
已邀请:
Runic

Runic (作者)

奇怪、。。。谷歌模式里 正常、android 下还是 不行!

Runic

Runic (作者)

e.path 改成 e.target 好像可以了。

            if(e.target){  
                if(/^(INPUT|TEXTAREA|BUTTON|SELECT|VIDEO)$/.test(e.target.tagName)){  
                    if(document.activeElement == e.target){ // 焦点文本输入  
                        return;  
                    }  
                }  
            }

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