codemirror插件

482 阅读1分钟

报错:

  1. 滚动事件报错
    • 报错信息 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);
          }
        };