       children = node.childNodes
       range.setStartBefore children[0]
       range.setEndAfter children[children.length - 1]
+      sel.addRange range
     else
-      range.setStartBefore node
-      range.setEndAfter node
-
-    sel.addRange range
+      if USE_TABLE_TEXT_WORKAROUND and node.nodeType is Node.TEXT_NODE and node.parentNode.tagName.toLowerCase() is "table"
+        # This is a text element that should not even be here.
+        # Selecting it might select the whole table,
+        # so we don't select anything
+
+      else
+        range.setStartBefore node
+        range.setEndAfter node
+        sel.addRange range
+
+
     if scroll
       sn = node
       while not sn.scrollIntoViewIfNeeded?

    # create our range, and select it
    range = @rootWin.document.createRange()

    # work-around 2 for table selection inconsistency issue,
    # See https://github.com/hypothesis/h/issues/280
    if USE_TH_TBODY_WORKAROUND and node.nodeType is Node.ELEMENT_NODE and
        node.tagName.toLowerCase() in ["thead", "tbody"] and node.hasChildNodes()
      # This is a thead or a tbody, and selection those is problematic,
      # because if the WebKit bug.


  # ===== Private methods (never call from outside the module) =======

  timestamp: -> new Date().getTime()

  stringStartsWith: (string, prefix) -> prefix is string.substr 0, prefix.length
