美文网首页
移动端事件绑定

移动端事件绑定

作者: cendechen | 来源:发表于2018-08-10 18:24 被阅读0次

最近做一个移动端项目,引入了fastclick,发现不少问题,翻阅了mdn和w3c,记录一下吧

addEventListener

原型

target.addEventListener(type, listener, options);
target.addEventListener(type, listener ,{capture: Boolean, passive: Boolean, once: Boolean});
target.addEventListener(type, listener, useCapture);
target.addEventListener(type, listener[, useCapture, wantsUntrusted  ]); 

前面两个参数,不需要说明,新支持了options对象
options:

  • capture: Boolean,表示 listener 会在该类型的事件捕获阶段传播到该 EventTarget 时触发。
  • once: Boolean,表示 listener 在添加之后最多只调用一次。如果是 true, listener 会在其被调用之后自动移除。
  • passive: Boolean,表示 listener 永远不会调用 preventDefault()。如果 listener 仍然调用了这个函数,客户端将会忽略它并抛出一个控制台警告。
  • mozSystemGroup: 只能在 XBL 或者是 Firefox' chrome 使用,这是个 Boolean,表示 listener被添加到 system group。

新增加的options属性,支持了 passive 和 once 属性

div.addEventListener('click', function(){},{once: true}) // 事件只会执行一次
div.addEventListener('click', function(){}, {passive: true}) // 浏览器默认不会执行event.preventDefault()

判断是否支持

var passiveSupported = false;

try {
  var options = Object.defineProperty({}, "passive", {
    get: function() {
      passiveSupported = true;
    }
  });

  window.addEventListener("test", null, options);
} catch(err) {}

可以判断事件绑定是否支持passive特性

fastClick 使用中遇到的表单的坑

fastclick是拦截用户的touchStart touchMove 和touchEnd 事件,看用户操作耗时来组织掉后面的click事件,去程序触发 click事件,从而解决移动端的300ms延时

但是在以前移动端默认不支持passive,从谷歌提供pwa,在ios11.3以后,由于默认不会执行event.preventDefault(), 所以需要手动修正这个bug

相关文章

  • 移动端事件绑定

    最近做一个移动端项目,引入了fastclick,发现不少问题,翻阅了mdn和w3c,记录一下吧 addEventL...

  • 移动端触摸事件

    移动端触摸事件添加方式值能用 addEventListeber(),方式绑定 移动触摸事件有4个: 1、touch...

  • ui-image-editor 图片编辑器 移动端 字体设置

    图片编辑器 移动端 字体设置 大小滑块拖动问题 找到对应插件代码新增 绑定移动端事件(touch) 以及相关 事件...

  • 移动端事件常见问题

    1、不用on方式绑定事件,而用addEventListener方式绑定事件。 移动端开发的时候,浏览器的模拟器时好...

  • e.preventDefault的失效

    在tap事件下,e.preventDefault不起效,click可以生效. 如果一定要在移动端绑定touch事件...

  • touch事件和click事件多次触发的问题

    问题: 不绑定touch事件,只是去绑定click,移动端会出现,事件不结束,UI界面停留某一个不太好的画面,例如...

  • iSlider 移动端click事件失效

    使用 或者 可以绑定事件,遂绑定了 事件,在pc端是可以使用的,在移动端是不可以使用的,这是为了在一定的可以更好地...

  • 拖动工具泡

    概述 一个拖动工具泡,拖动,点击触发事件,做了移动端与PC端兼容 展示: 涉及的点:1.事件绑定,删除事件,浏览器...

  • vue移动端绑定@click事件失效问题

    vue移动端绑定click事件失效问题原因可能是你使用了better-scroll,默认它会阻止touch事件。所...

  • 移动端事件

    移动端事件 触屏事件 移动端事件要比PC端要简单的多,移动端主要就有ontouchstart ontouchend...

网友评论

      本文标题:移动端事件绑定

      本文链接:https://www.haomeiwen.com/subject/vvjlbftx.html