diff --git a/core/js/marker.js b/core/js/marker.js index 21857d6..876304d 100644 --- a/core/js/marker.js +++ b/core/js/marker.js @@ -48,8 +48,12 @@ } function getCoords(node){ - let rect = node.getBoundingClientRect(); - return [ rect.top, rect.left, rect.right, rect.bottom, cssSelector(node) ]; + if (node.getBoundingClientRect){ + let rect = node.getBoundingClientRect(); + return [ rect.top, rect.left, rect.right, rect.bottom, cssSelector(node) ]; + } + + return getCoords(node.parentNode); // TextNode not define getBoundingClientRect } function isElementOnScreen(rect){ @@ -255,15 +259,28 @@ z-index: 100000;\ self.generateTextNodeMarker = () => { - var elements = getVisibleElements(function(e, v) { - var aa = e.childNodes; - for (var i = 0, len = aa.length; i < len; i++) { + + let elements = getVisibleElements(function(e, v) { + let aa = e.childNodes; + for (let i = 0, len = aa.length; i < len; i++) { if (aa[i].nodeType == Node.TEXT_NODE && aa[i].data.length > 0) { v.push(e); break; } } }); + + elements = Array.prototype.concat.apply([], elements.map(function (e) { + let aa = e.childNodes; + let bb = []; + for (let i = 0, len = aa.length; i < len; i++) { + if (aa[i].nodeType == Node.TEXT_NODE && aa[i].data.trim().length > 1) { + bb.push(aa[i]); + } + } + return bb; + })); + return elements; }