最近做移动平台的应用,使用iscroll使屏幕上下滑动。发现当使用iscroll后,input等不能输入内容了。只要在iscroll.js文件中加入如下代码就ok了。

function allowFormsInIscroll(){
[].slice.call(document.querySelectorAll('input, select, button')).forEach(function(el){
el.addEventListener(('ontouchstart' in window)?'touchstart':'mousedown', function(e){
e.stopPropagation(); })
})
}
document.addEventListener('DOMContentLoaded', allowFormsInIscroll, false);

   问题原因是:iscroll需要一直监听用户的touch操作,以便灵敏的做出对应效果,所以它把其余的默认事件屏蔽了。

  以上代码原理是:页面加载完成后查找到所有的'input, select, button'元素并依次绑定'touchstart'或'mousedown'事件,在执行事件的时候停止事件的传播,这样行了。

修改版:

使用了iscroll之后,你会发现点击输入框时不灵敏,经常无法聚焦;页面文字也无法选择和复制。这是由于iscroll要监听鼠标事件和触摸事件来进行滚动,所以禁止了浏览器的默认行为,详见源代码92行: 
  

onBeforeScrollStart: function (e) { e.preventDefault(); }, 

iscroll不分青红皂白,禁止了浏览器的一切默认行为,导致上述问题。所以我们需要稍作修改:

onBeforeScrollStart: function (e) {
var target = e.target;
while (target.nodeType != 1) target = target.parentNode;
if (target.tagName != ‘SELECT’ && target.tagName != ‘INPUT’ && target.tagName != ‘TEXTAREA’)
e.preventDefault();
},

最新文章

  1. 深入探究javascript的 {} 语句块
  2. iOS - OC 数据持久化
  3. new总结
  4. 算术编码JM实现
  5. 在Build时使用NuGet自动下载缺失的包
  6. Win8下在Vmware11中安装使用苹果系统OS X 10.10
  7. iOS textfield 限制输入字数长度
  8. PHP面向对象概述
  9. 以打印日志为荣之logging模块详细使用
  10. 字符串API
  11. using 的三种使用方式
  12. python全栈开发知识点补充for else和while else如果不是除正常以外的其他方式退出循环,那么else语句就会被执行。
  13. synchronized相关用法简述
  14. MTK 关闭安全模式
  15. HTML5 Plus 拍照或者相册选择图片上传
  16. django2.1---上下文处理器
  17. jQuery的基本使用
  18. linux 下的php_gd2.dll
  19. 数学图形(2.13)Spherical trochoid曲线
  20. 阿里云接口异常-Can not find endpoint to access

热门文章

  1. Myeclipse右键新建项目突然变的很少
  2. jquery点击label触发2次的问题
  3. 一道Twitter面试题
  4. PHP基础 之 数组(一)
  5. 软件测试-----Graph Coverage作业
  6. webrtc第二篇 聊天室
  7. ajax异步提交数据动态更改select选项
  8. CentOS 6.5 zabbix 3.0.4 SendEmail报警
  9. iOS开发——UI进阶篇(八)pickerView简单使用,通过storyboard加载控制器,注册界面,通过xib创建控制器,控制器的view创建,导航控制器的基本使用
  10. js计算24点