首页 > 代码库 > 移动端 ios Safari 问题及 一般解决方法
移动端 ios Safari 问题及 一般解决方法
在ios设备中 使用 overflow 会有卡顿,解决办法:-webkit-overflow-scrolling: touch; /*消除在ios设备卡顿*/
在ios中的click事件不执行:解决办法:①:将目标元素 改为<a>或者<button>,②:给目标元素设置 cursor:pointer; ③:click事件 写为tounched事件
转: 在ios中
使用overflow scroll情况下,到达最极端的情况时会拖动整个页面的解决办法
方法一,从网上找到的:
function preventOverScroll(scrollPane) { // See http://www.quirksmode.org/js/events_order.html var CAPTURE_PHASE = true ; // happens first, outside to inside var BUBBLE_PHASE = false ; // happens second, inside to outside // These variables will be captured by the closures below var allowScrollUp = true , allowScrollDown = true , lastY = 0; scrollPane.addEventListener (‘touchstart’, function (e) { // See http://www.w3.org/TR/cssom-view/#dom-element-scrolltop allowScrollUp = ( this .scrollTop > 0); allowScrollDown = ( this .scrollTop < this .scrollHeight – this .clientHeight); // Remember where the touch started lastY = e.pageY; }, CAPTURE_PHASE); // If the touch is on the scroll pane, don’t let it get to the // body object which will cancel it scrollPane.addEventListener (‘touchmove’, function (e) { var up = (event.pageY > lastY); var down = !up; lastY = event.pageY; // Trying to start past scroller bounds if ((up && allowScrollUp) || (down && allowScrollDown)) { // Stop this event from propagating, lest // another object cancel it. e.stopPropagation(); } else { // Cancel this event event.preventDefault(); } }, CAPTURE_PHASE); } |
方法二自己想出来的,因为我发现非最极端(非最上或者最下时)时,就不会拖动整个页面,那么问题就简单了:
scrollPane.addEventListener( ‘touchstart‘ , function (){ if ( this .scrollTop === 0){ //滚动到1 this .scrollTop =1; } else if ( this .scrollTop == this .scrollHeight - this .clientHeight){ //滚动到最低端-1 this .scrollTop = this .scrollHeight - this .clientHeight -1; } }, true ); |
移动端 ios Safari 问题及 一般解决方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。