2016-02-01 7 views
1

Пытается проверить редактор quill.js (contenteditable div) в браузере без головок zombie.js.Quill.js и zombie.js

  1. Жаловаться document.getSelection отсутствует
  2. Жаловаться document.createTreeWalker отсутствует
  3. Не похоже, чтобы ответить, если я вручную отправляет событие изменения с помощью DOM узла редактора.

Кто-нибудь знает, как сделать эту работу?

ответ

3

Хорошо, вот что я нашел:

  1. document.getSelection не поддерживается текущей (старой) версии jsdom которая zombie.js использования. На данный момент мне пришлось обезопасить себя. Существует ожидающий PR для zombie.js, которые должны обновить jsdom до более поздней версии, где они доступны: https://github.com/assaf/zombie/issues/939
  2. document.createTreeWalker - же
  3. оказывается, что quill.js прослушивает «KeyUp» или «KeyDown» вместо того, чтобы «менять», поэтому их нужно отправлять.

Ниже приведен некоторые страшные обезьяны пятно недостающих методов DOM, которые оказываются достаточными для тестирования голого минимума quill.js:

var zombie = require("zombie"); 
zombie.Pipeline.addHandler(function(browser, request, response) { 

    browser.document.getSelection = browser.window.getSelection = function() { 

     console.warn("getSelection called - monkey-patched, incorrect implementation"); 
     return null; 

    }; 
    browser.document.createTreeWalker = function(x) { 

     console.warn("createTreeWalker called - monkey-patched, incorrect implementation"); 
     return { 

      currentNode: x, 
      nextNode: function() { 

       if(this.currentNode.childNodes && this.currentNode.childNodes.length) { 

        this.currentNode = this.currentNode.childNodes[ 0 ]; 

       } else if(this.currentNode.nextSibling) { 

        this.currentNode = this.currentNode.nextSibling; 

       } else if(this.currentNode.parentNode) { 

        this.currentNode = this.currentNode.parentNode.nextSibling; 

       } 
       return this.currentNode || null; 

      } 

     }; 

    }; 
    return response; 

}); 

 Смежные вопросы

  • Нет связанных вопросов^_^