diff options
| author | mrmr1993 | 2015-08-26 18:21:27 +0100 | 
|---|---|---|
| committer | mrmr1993 | 2015-08-26 18:22:52 +0100 | 
| commit | 46fe5cffc952b80371f839fce0aa2fc8ded27f50 (patch) | |
| tree | 95d1a8e17e2925476d5206ac85cf161d6c5f436b /lib/dom_utils.coffee | |
| parent | c08e59ea14c5b691a20a62d204456a8496258d0f (diff) | |
| download | vimium-46fe5cffc952b80371f839fce0aa2fc8ded27f50.tar.bz2 | |
Use createElementNS for XML documents and remove XML specific codepaths
This implements @gdh1995's idea from #1796.
Diffstat (limited to 'lib/dom_utils.coffee')
| -rw-r--r-- | lib/dom_utils.coffee | 18 | 
1 files changed, 14 insertions, 4 deletions
| diff --git a/lib/dom_utils.coffee b/lib/dom_utils.coffee index d4f5953d..8a3969b1 100644 --- a/lib/dom_utils.coffee +++ b/lib/dom_utils.coffee @@ -8,12 +8,22 @@ DomUtils =      else        func() +  createElement: (tagName) -> +    element = document.createElement tagName +    if element.style +      # The document namespace provides (X)HTML elements, so we can use them directly. +      element +    else +      # The document namespace doesn't give (X)HTML elements, so we create them with the correct namespace +      # manually. +      document.createElementNS "http://www.w3.org/1999/xhtml", tagName +    #    # Adds a list of elements to a page.    # Note that adding these nodes all at once (via the parent div) is significantly faster than one-by-one.    #    addElementList: (els, overlayOptions) -> -    parent = document.createElement("div") +    parent = DomUtils.createElement("div")      parent.id = overlayOptions.id if overlayOptions.id?      parent.className = overlayOptions.className if overlayOptions.className?      parent.appendChild(el) for el in els @@ -236,7 +246,7 @@ DomUtils =    # momentarily flash a rectangular border to give user some visual feedback    flashRect: (rect) -> -    flashEl = document.createElement("div") +    flashEl = DomUtils.createElement("div")      flashEl.id = "vimiumFlash"      flashEl.className = "vimiumReset"      flashEl.style.left = rect.left + window.scrollX + "px" @@ -297,7 +307,7 @@ DomUtils =        'letterSpacing', 'wordSpacing' ]      (element, position) -> -      div = document.createElement "div" +      div = DomUtils.createElement "div"        div.id = "vimium-input-textarea-caret-position-mirror-div"        document.body.appendChild div @@ -315,7 +325,7 @@ DomUtils =        if element.nodeName.toLowerCase() == "input"          div.textContent = div.textContent.replace /\s/g, "\u00a0" -      span = document.createElement "span" +      span = DomUtils.createElement "span"        span.textContent = element.value.substring(position) || "."        div.appendChild span | 
