Improve the marker experience for caret mode.

master
lee 6 years ago
parent 6cfc5d56d0
commit 1db529b28c
  1. 23
      core/js/marker.js

@ -48,10 +48,14 @@
} }
function getCoords(node){ function getCoords(node){
if (node.getBoundingClientRect){
let rect = node.getBoundingClientRect(); let rect = node.getBoundingClientRect();
return [ rect.top, rect.left, rect.right, rect.bottom, cssSelector(node) ]; return [ rect.top, rect.left, rect.right, rect.bottom, cssSelector(node) ];
} }
return getCoords(node.parentNode); // TextNode not define getBoundingClientRect
}
function isElementOnScreen(rect){ function isElementOnScreen(rect){
let clientHeight = document.documentElement.clientHeight; let clientHeight = document.documentElement.clientHeight;
let clientWidth = document.documentElement.clientWidth; let clientWidth = document.documentElement.clientWidth;
@ -255,15 +259,28 @@ z-index: 100000;\
self.generateTextNodeMarker = () => { self.generateTextNodeMarker = () => {
var elements = getVisibleElements(function(e, v) {
var aa = e.childNodes; let elements = getVisibleElements(function(e, v) {
for (var i = 0, len = aa.length; i < len; i++) { 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) { if (aa[i].nodeType == Node.TEXT_NODE && aa[i].data.length > 0) {
v.push(e); v.push(e);
break; 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; return elements;
} }

Loading…
Cancel
Save