报错:
- 滚动事件报错
- 报错信息 Unable to preventDefault inside passive event listener invocation.(无法阻止被动事件侦听器内部的默认值) codemirror.js?56b3:609
- 原因:
passive: 设置为 true 时,表示 listener 永远不会调用preventDefault()使用 passive 可改善的滚屏性能(根据标准,passive的值默认为false,最新的chrome和firefox已经默认将passive设置为true)。 - 这个报错会导致编辑器滑动选中文本时,会造成闪屏
element.addEventListener('touchstart', function(event) { // 这将抛出一个错误:无法在被动事件侦听器调用中preventDefault. event.preventDefault(); }, { passive: true }); - 解决方法:nodeModules里找到codemirror.js
var on = function(emitter, type, f) { if (emitter.addEventListener) { emitter.addEventListener(type, f, false); } else if (emitter.attachEvent) { emitter.attachEvent("on" + type, f); } else { var map = emitter._handlers || (emitter._handlers = {}); map[type] = (map[type] || noHandlers).concat(f); } }; -------替换成 ------ var on = function(emitter, type, f) { if (emitter.addEventListener) { emitter.addEventListener(type, f, {passive:false,capture:false}); } else if (emitter.attachEvent) { emitter.attachEvent("on" + type, f); } else { var map = emitter._handlers || (emitter._handlers = {}); map[type] = (map[type] || noHandlers).concat(f); } };