如何修复IScroll5使用锚点造成的bug的显示bug

最近正在开发一个类似于通讯录的Webapp,其中滚动的时候使用了IScroll5。通讯录的最右侧使用了A-Z的小字母,点击快速滚动到已该字母打头的通讯录内容。在进行本页跳转的时候我使用了锚点的技术,然而这件事情带来了IScroll的BUG,在滚动到某字母打头的通讯录后,该字母之前的通讯录内容无法再滚动到。我查询了作者在github的bug反馈,发现在2013年IScroll4的时候,作者就承诺解决问题,然并卵,到今天该bug仍未解决,好在作者提供了一个内部函数支持调转到某个id的位置,我们将利用这个函数进行bug修复。

html

  1 <div class="contactBar">
  2     <a class="aToz" href="#A">A</a>
  3     <a class="aToz" href="#B">B</a>
  4     <a class="aToz" href="#C">C</a>
  5     <a class="aToz" href="#D">D</a>
  6     <a class="aToz" href="#E">E</a>
  7     <a class="aToz" href="#F">F</a>
  8     <a class="aToz" href="#G">G</a>
  9     <a class="aToz" href="#H">H</a>
 10     <a class="aToz" href="#I">I</a>
 11     <a class="aToz" href="#J">J</a>
 12     <a class="aToz" href="#K">K</a>
 13     <a class="aToz" href="#L">L</a>
 14     <a class="aToz" href="#M">M</a>
 15     <a class="aToz" href="#N">N</a>
 16     <a class="aToz" href="#O">O</a>
 17     <a class="aToz" href="#P">P</a>
 18     <a class="aToz" href="#Q">Q</a>
 19     <a class="aToz" href="#R">R</a>
 20     <a class="aToz" href="#S">S</a>
 21     <a class="aToz" href="#T">T</a>
 22     <a class="aToz" href="#U">U</a>
 23     <a class="aToz" href="#V">V</a>
 24     <a class="aToz" href="#W">W</a>
 25     <a class="aToz" href="#X">X</a>
 26     <a class="aToz" href="#Y">Y</a>
 27     <a class="aToz" href="#Z">Z</a>
 28 </div>
 29 <div id="contactsWrapper">
 30     <div class="content">
 31     <div class="content-list" id="contacts-list-A">
 32         <div class="content-list-title"><a id="A">A</a></div>
 33         <div class="contacts"></div>
 34     </div>
 35     <div class="content-list" id="contacts-list-B">
 36             <div class="content-list-title"><a id="B">B</a</div>
 37         <div class="contacts"></div>
 38         </div>
 39     <div class="content-list" id="contacts-list-C">
 40         <div class="content-list-title"><a id="C">C</a></div>
 41         <div class="contacts"></div>
 42     </div>
 43     <div class="content-list" id="contacts-list-D">
 44         <div class="content-list-title"><a id="D">D</a></div>
 45         <div class="contacts"></div>
 46     </div>
 47     <div class="content-list" id="contacts-list-E">
 48         <div class="content-list-title"><a id="E">E</a></div>
 49         <div class="contacts"></div>
 50     </div>
 51     <div class="content-list" id="contacts-list-F">
 52         <div class="content-list-title"><a id="F">F</a></div>
 53         <div class="contacts"></div>
 54     </div>
 55     <div class="content-list" id="contacts-list-G">
 56         <div class="content-list-title"><a id="G">G</a></div>
 57         <div class="contacts"></div>
 58     </div>
 59     <div class="content-list" id="contacts-list-H">
 60             <div class="content-list-title"><a id="H">H</a></div>
 61         <div class="contacts"></div>
 62     </div>
 63     <div class="content-list" id="contacts-list-I">
 64         <div class="content-list-title"><a id="I">I</a></div>
 65         <div class="contacts"></div>
 66     </div>
 67     <div class="content-list" id="contacts-list-J">
 68         <div class="content-list-title"><a id="J">J</a></div>
 69         <div class="contacts"></div>
 70     </div>
 71     <div class="content-list" id="contacts-list-K">
 72         <div class="content-list-title"><a id="K">K</a></div>
 73         <div class="contacts"></div>
 74     </div>
 75     <div class="content-list" id="contacts-list-L">
 76         <div class="content-list-title"><a id="L">L</a></div>
 77         <div class="contacts"></div>
 78     </div>
 79     <div class="content-list" id="contacts-list-M">
 80         <div class="content-list-title"><a id="M">M</a></div>
 81         <div class="contacts"></div>
 82     </div>
 83     <div class="content-list" id="contacts-list-N">
 84         <div class="content-list-title"><a id="N">N</a></div>
 85         <div class="contacts"></div>
 86     </div>
 87     <div class="content-list" id="contacts-list-O">
 88         <div class="content-list-title"><a id="O">O</a></div>
 89         <div class="contacts"></div>
 90     </div>
 91     <div class="content-list" id="contacts-list-P">
 92         <div class="content-list-title"><a id="P">P</a></div>
 93         <div class="contacts"></div>
 94     </div>
 95     <div class="content-list" id="contacts-list-Q">
 96         <div class="content-list-title"><a id="Q">Q</a></div>
 97         <div class="contacts"></div>
 98     </div>
 99     <div class="content-list" id="contacts-list-R">
100         <div class="content-list-title"><a id="R">R</a></div>
101         <div class="contacts"></div>
102     </div>
103     <div class="content-list" id="contacts-list-S">
104         <div class="content-list-title"><a id="S">S</a></div>
105         <div class="contacts"></div>
106     </div>
107     <div class="content-list" id="contacts-list-T">
108         <div class="content-list-title"><a id="T">T</a></div>
109         <div class="contacts"></div>
110     </div>
111     <div class="content-list" id="contacts-list-U">
112         <div class="content-list-title"><a id="U">U</a></div>
113         <div class="contacts"></div>
114     </div>
115     <div class="content-list" id="contacts-list-V">
116         <div class="content-list-title"><a id="V">V</a></div>
117         <div class="contacts"></div>
118     </div>
119     <div class="content-list" id="contacts-list-W">
120         <div class="content-list-title"><a id="W">W</a></div>
121         <div class="contacts"></div>
122     </div>
123     <div class="content-list" id="contacts-list-X">
124         <div class="content-list-title"><a id="X">X</a></div>
125         <div class="contacts"></div>
126     </div>
127     <div class="content-list" id="contacts-list-Y">
128         <div class="content-list-title"><a id="Y">Y</a></div>
129         <div class="contacts"></div>
130     </div>
131     <div class="content-list" id="contacts-list-Z">
132         <div class="content-list-title"><a id="Z">Z</a></div>
133         <div class="contacts"></div>
134     </div>
135     </div>
136 </div>                                        

js

//请注意使用id作为锚点的标志点,IScroll不支持那么作为锚点的标志点
if (location.hash) {
    window.scrollTo(0, 0);
}
//IScroll初始化
var myScroll = new IScroll(‘#contactsWrapper‘, { click: false, zoom: true });
if (location.hash) {
    setTimeout(function () {
    myScroll.scrollToElement(location.hash, 0);
     }, 50);
}
//关键代码
$(‘.aToz[href^="#"]‘).on(‘click touchstart‘, function (e) {
    //阻止默认点击事件
    e.preventDefault();
    var target = this.hash;
    $target = $(target);
    if($(‘#contacts-list-‘+target.substring(1)+‘‘).css(‘display‘)==‘block‘){
        //利用IScroll的scrollToElement方法进行锚点点击效果
        myScroll.scrollToElement(target,0);
    }
    return false
});  

document.addEventListener(‘touchmove‘, function (e) {
    e.preventDefault();
}, false);

使用IScroll的scrollToElement替代原有的锚点跳转,并阻止默认的锚点跳转是解决的关键点。

谢谢

时间: 2024-11-05 14:57:04

如何修复IScroll5使用锚点造成的bug的显示bug的相关文章

关于部分Hackintosh机型使用Clover引导后关于本机中“内存”选项卡不显示Bug的修复

问题描述: 当smbios设置为imac pro时,“关于本机”中的内存选项卡不显示,需要设置为imac19机型才能显示,虽然对性能和使用没有影响,但是部分情有独钟于iMac Pro机型的小伙伴还是强迫症发作,下面就这个问题给出解决方案: 1:网上有修正的注入kext,这里不推荐,我一向是不提倡使用过多的第三方kext 2:对config.list文件做一个小小的修正,这个方法是今天要分享给大家的 步骤如下: a,打开config.list文件,可以用bbedit或者CC,这里为了方便推荐使用c

【第二组】Hunter-alpha版本发布报告

Alpha版本测试报告 一  BUG汇总 1.暂时无法进行注册.(打算修复) 2.用户发布任务界面图标按钮存在显示bug.(打算修复) 3.主界面下拉菜单暂无内容,无法弹出.(打算修复) 二  场景测试 1.点击登录按钮会匹配用户输入的信息进行登录. 2.点击用户信息按钮会显示相关用户信息,可以查看当前游戏进度.成就等. 3.点击游戏列表项可以跳转至游戏页面,显示游戏内容并由用户回答谜题,上传答案. 4.点击发布任务按钮可以新建任务,填写完成后点击提交即可上传. 5.点击设置按钮可以打开设置页面

常见浏览器bug(针对IE6及更低版本)及其修复方法

常见bug及其修复方法有以下几种 1.双外边距浮动bug 双外边距浮动bug在IE6及更低版本中常见.所谓双外边距浮动bug是指使任何浮动元素上的外边距加倍.(见下图) 只要将元素的display属性设置成inline就行了.因为元素时浮动的,所以将display属性设置为inline实际上不会影响显示方式.但是,这似乎会阻止Windows上的IE6及更低版本将所有外边距加倍.所以每当对具有水平外边距的元素浮动时,都应该很自然的将display属性设置为inline,以备外边距将来被加大. 2.

Android热修复之微信Tinker使用初探

文章地址:Android热修复之微信Tinker使用初探 前几天,万众期待的微信团队的Android热修复框架tinker终于在GitHub上开源了. 地址:https://github.com/Tencent/tinker 官方介绍:https://my.oschina.net/shwenzhang/blog/751618 接入指南:https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%9

怪异JS错误的诊断与修复

h2{font-size:1.2em}p{text-indent:2em;}前端开发whqet,csdn,王海庆,whqet,前端开发专家 原文:JavaScript Errors and How to Fix Them 翻译:前端开发whqet, 意译为主,不当之处敬请指正. 作者简介:Jani Hartikainen,拥有十数年的网页应用开发经验,曾经为nokia和低调神秘的startups.(一个创业孵化公司)除了编程和玩游戏,他经常在自己的站点书写JS和高质量的代码. 译者的话,Java

和android热修复AndFix技术亲密接触

每次回家都偷懒,不想整理一下,今天周末,强迫自己整理下,内容一定很全. 前言 随着app版本升级迭代,难免有些bug会出现,用户升级新版的代价较高,如果能给app打热补丁,热更新掉app的bug,岂不更好. Andfix andfix是阿里的一个热修复框架,更新至今,已经相对完善了,可以满足我们日常需求.它有很多优点,比如: 1.热修复免重启app 2.更新包小 3.支持360加固(很多blog上说不支持,其实是支持的,下文会介绍怎么用) 至于缺点吗,我不说,哈哈. 下图为热修复图解 使用方式

Android 热补丁动态修复框架小结

转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/49883661: 本文出自:[张鸿洋的博客] 一.概述 最新github上开源了很多热补丁动态修复框架,大致有: https://github.com/dodola/HotFix https://github.com/jasonross/Nuwa https://github.com/bunnyblue/DroidFix 上述三个框架呢,根据其描述,原理都来自:安卓App热补丁

ios开发不能不知的动态修复bug补丁第三方库JSPatch 使用学习:JSPatch导入、和使用、.js文件传输加解密

JSPatch ios开发面临审核周期长,修复bug延迟等让人无奈的问题,所以,热修复的产生成为必然. ios上线APP产生bug,需要及时修复,如何修复: 我整理了jspatch的使用说明,并建立一个简单demo供他人使用和学习,此博客不做详细介绍,具体如何使用附上代码地址: 代码下载地址: https://github.com/niexiaobo/JSPatchUse ##### demo.js里添加代码:1.重写crashBtnClick方法 2.跳转新建的JPTableViewContr

浏览器bug和修复2

拥有布局 Window IE上的bug要比其他浏览器多,原因之一是,IE的显示引擎使用一个称为布局(layout)的内部概念.因为布局是专门针对显示引擎内部工作方式的概念,所以一般情况下不需要了解它,但是,布局问题是许多IE/Win显示bug的根源,所以理解这个概念以及它如何影响CSS是有帮助的. 什么是布局 Windows上的IE使用布局概念来控制元素的尺寸和定位.那些称为拥有布局(have layout)的元素负责本身及其子元素的尺寸和定位.如果一个元素没有拥有布局,那么它的尺寸和位置由最近