From: Jan Szejko Date: Fri, 4 Nov 2016 14:06:24 +0000 (+0100) Subject: fix selecting nodes with no text X-Git-Url: https://git.mdrn.pl/fnpeditor.git/commitdiff_plain/d13ac0186f86e208dc64e43b773576c5a224ad07?ds=inline;hp=2528dc646a1348f49098067923025d065a0c3f41 fix selecting nodes with no text --- diff --git a/src/wlxml/wlxml.js b/src/wlxml/wlxml.js index ef70d3d..d05eb64 100644 --- a/src/wlxml/wlxml.js +++ b/src/wlxml/wlxml.js @@ -238,6 +238,12 @@ $.extend(WLXMLDocument.prototype, { metadataNode.remove(); }); nativeNode.normalize(); + $(nativeNode).find('*').each(function() { + if (this.childNodes.length === 0) { + var fakeTextNode = window.document.createTextNode(""); + this.appendChild(fakeTextNode); + } + }); $(nativeNode).find(':not(iframe)').addBack().contents() .filter(function() {return this.nodeType === Node.TEXT_NODE;}) @@ -247,7 +253,8 @@ $.extend(WLXMLDocument.prototype, { elParent = el.parent(), hasSpanParent = elParent.prop('tagName') === 'SPAN', hasSpanBefore = el.prev().length && $(el.prev()).prop('tagName') === 'SPAN', - hasSpanAfter = el.next().length && $(el.next()).prop('tagName') === 'SPAN'; + hasSpanAfter = el.next().length && $(el.next()).prop('tagName') === 'SPAN', + onlyChild = el.is(':only-child'); var addInfo = function(toAdd, where, transformed, original) { @@ -288,7 +295,7 @@ $.extend(WLXMLDocument.prototype, { } } - if(!text.transformed) { + if(!text.transformed && !onlyChild) { addInfo(text.original, 'below'); el.remove(); return true; // continue