diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/dom_utils.coffee | 19 | 
1 files changed, 19 insertions, 0 deletions
| diff --git a/lib/dom_utils.coffee b/lib/dom_utils.coffee index 2ae9412e..9d4df1b1 100644 --- a/lib/dom_utils.coffee +++ b/lib/dom_utils.coffee @@ -295,5 +295,24 @@ DomUtils =        document.body.removeChild div        coordinates +  # Get the text content of an element (and its descendents), but omit the text content of previously-visited +  # nodes. +  # NOTE(smblott).  This is currently O(N^2) (when called on N elements).  An alternative would be to mark +  # each node visited, and then clear the marks when we're done. +  textContent: do -> +    visitedNodes = null +    reset: -> visitedNodes = [] +    get: (element) -> +      nodes = document.createTreeWalker element, NodeFilter.SHOW_TEXT +      texts = +        while node = nodes.nextNode() +          continue unless node.nodeType == 3 +          continue if node in visitedNodes +          text = node.data.trim() +          continue unless 0 < text.length +          visitedNodes.push node +          text +      texts.join " " +  root = exports ? window  root.DomUtils = DomUtils | 
