文档章节

Android浮层点击穿透问题

drv
 drv
发布于 2016/12/28 11:27
字数 531
阅读 69
收藏 0

  最近做微信公众号开发的时候遇到一个问题,上线后发现此问题后检查代码没有发现问题,无奈只能回滚到上一个版本。

  问题是这样的:页面一个选择的浮层,在浮层点击确定后,下面的页面会自动提交

  

  在测试环境上无法重现,也不可能用正式环境测试问题,百撕不得骑姐之际,突然想到这个现象十分像JS冒泡,当然不是JS冒泡,那会不会是点了这个确定触发了下面的提交,测试环境没问题是因为测试环境由于数据原因,提交按钮刚好没在确定下面。

  这个容易,造数据验证,果然猜对了。剩下的就好办了,在浮层还在的时候锁掉下面的提交就好了。

  这个浮层是由mobiscroll.scroller控件产生的,去翻文档,发现特别慢,懒得FQ就看了下控件的源码。

  找到了浮层打开前的事件:onBeforeShow;又找到了选择事件,同时因为需要显示的值和控件原本的不同,就直接改代码了:

  

/**
        * Set button handler.
        */
        that.select = function () {
            if (that.hide(false, 'set') !== false) {
                setValue(true, true, 0, true);
                var showText = that.getValue();
                if(showText.length>12){
                    var text = showText.slice(0,11);
                    showText = text + "...";
                }
                /*event('onSelect', [that.val]);改为显示值*/
                event('onSelect', [showText]);
                /*加个事件*/
                event('onEndSelect', [showText]);
            }
        };

        /**
        * Cancel and hide the scroller instance.
        */
        that.cancel = function () {
            if (that.hide(false, 'cancel') !== false) {
                event('onCancel', [that.val]);
                event('onEndSelect', [that.val]);
            }
        };

  掉用处的代码:

var opt = {
            'select-opt': {
                preset: 'select',
                group: true,
                width: 50
                ,onBeforeShow:function(){
                    lockSure = true;
                }
                ,onClose:function(){
                    setTimeout('lockSure = false;',400);
                }
                ,onEndSelect:function(){
                    setTimeout('lockSure = false;',330);
                }
            }
        };

  上面onClose是同事连VPN后在文档中找到的事件,不过发现直接在事件中设置锁定变量值是不行的,只好延迟一下执行。经过测试,在手机反应比较慢时onClose在400毫秒时或选择结束时延迟330毫秒基本可以保证执行正常,选择结束效果产生会快一点,onClose的效果会比我加的事件处理全面一些,所以两个都保留了。

© 著作权归作者所有

上一篇: Kafka 文档用例
drv

drv

粉丝 2
博文 57
码字总数 75382
作品 0
东城
架构师
私信 提问
Android中点击空白区域控件自动隐藏(事件传递机制中的一个小例子)

随着android技术日趋成熟,android应用程序已经由刚开始的单纯效果展示变得越来越艺术话了,各种动画,各种布局层叠,那么由此就产生了一些问题,比如:一个listview的view的item点击时没有反...

xubohui
2013/12/19
7.3K
0
滑动穿透(锁body)终极探索

场景 当页面出现浮层的时候,滑动浮层的内容,正常情况下预期应该是浮层下边的内容不会滚动;然而事实并非如此。 如图所示,浮层下边的内容并没有如想象中不受影响。 解决 先去github上搜索一...

seventhMa
04/08
0
0
Android Studio 查看Android内部隐藏源码

问题的发现 今天查看AlertDialog源码的时候,看到AlertController,发现关于这部分的代码全都报红,原来AlertController类在com.android.internal.app这个包下,看这个包名internal(内部的)...

zhang_pan
2018/04/10
0
0
前端系列——与众不同的移动端底部固定栏 fixed、absolute 兼容 iOS 和 Android 方案

相信我,我分享的和你在其他博客上看到的终极方案是如此的与众不同! 做过移动端开发的同学,对底部DOM定位出现的各种奇葩情况已经深恶痛绝了吧,底部DOM设置不同的position,在Android和ios...

大灰狼的小绵羊哥哥
2018/09/13
0
0
CSS 粘性定位 sticky 详解

前言: position:sticky是css定位新增属性;可以说是static(没有定位) 和 固定定位fixed 的结合;它主要用在对 scroll 事件的监听上;简单来说,在滑动过程中,某个元素距离其父元素的距离...

Coderfei
04/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

作为一个(IT)程序员!聊天没有话题?试试这十二种技巧

首先呢?我是一名程序员,经常性和同事没话题。 因为每天都会有自己的任务要做,程序员对于其他行业来说;是相对来说比较忙的。你会经常看到程序员在发呆、调试密密麻麻代码、红色报错发呆;...

小英子wep
今天
14
0
【SpringBoot】产生背景及简介

一、SpringBoot介绍 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,从而使开发人员不再需要...

zw965
今天
4
0
简述并发编程分为三个核心问题:分工、同步、互斥。

总的来说,并发编程可以总结为三个核心问题:分工、同步、互斥。 所谓分工指的是如何高效地拆解任务并分配给线程,而同步指的是线程之间如何协作,互斥则是保证同一时刻只允许一个线程访问共...

dust8080
今天
6
0
OSChina 周四乱弹 —— 当你简历注水但还是找到了工作

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @花间小酌 :#今日歌曲推荐# 分享成龙的单曲《男儿当自强》。 《男儿当自强》- 成龙 手机党少年们想听歌,请使劲儿戳(这里) @hxg2016 :刚在...

小小编辑
今天
3.3K
22
靠写代码赚钱的一些门路

作者 @mezod 译者 @josephchang10 如今,通过自己的代码去赚钱变得越来越简单,不过对很多人来说依然还是很难,因为他们不知道有哪些门路。 今天给大家分享一个精彩的 GitHub 库,这个库整理...

高级农民工
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部