关于touch事件监听选项的passive属性
描述
以前浏览器会先执行监听器函数,对于滑动事件来说,会存在一个问题:这个监听器里,有没有调用preventDefault()方法?
如果调了preventDefault(),那明显不应该进行滚动操作。
如果没调,那就最好先进行滑动,避免了先执行监听器造成的延迟卡顿。
所以,最新的DOM事件规范,对事件监听的第三个可选参数做了修改:由单个属性变为一个可选的对象。
原来:option,现在:option
polyfill
var supportsPassive = false; try { var opts = Object.defineProperty({}, 'passive', { get: function() { supportsPassive = true; } }); window.addEventListener("test", null, opts); } catch (e) {}
elem.addEventListener( 'touchstart', fn, supportsPassive ? { passive: true } : false );
|