2016-02-01 71 views
1

試圖在zombie.js無頭瀏覽器中測試quill.js編輯器(contenteditable div)。Quill.js和zombie.js

  1. 抱怨document.getSelection失蹤
  2. 抱怨document.createTreeWalker失蹤
  3. 似乎沒有,如果我手動調度使用編輯器的DOM節點更改事件作​​出迴應。

任何人都知道如何使這項工作?

回答

3

好了,這裏就是我發現:

  1. document.getSelection不受jsdom當前(舊)版本,它zombie.js用途支持。我現在不得不猴子補丁。有是應該更新jsdom到更高版本,這些地方都可以zombie.js掛起PR:https://github.com/assaf/zombie/issues/939
  2. document.createTreeWalker - 同
  3. 原來,quill.js被監聽「KEYUP」或「的keydown」而不是「改變」,所以需要派發那些。

下面是其中練得足夠用於測試quill.js最低限度的失蹤DOM方法的一些可怕的猴子補丁:

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; 

});