Mercurial > hg > extraction-interface
diff js/taggingtext.js @ 54:f9e7119339b2 extractapp
bug fixed: when addTagTitle, removing self-closing tag which causes error in coloring tag
author | Zoe Hong <zhong@mpiwg-berlin.mpg.de> |
---|---|
date | Mon, 30 Mar 2015 15:34:47 +0200 |
parents | 3e42a63de0ea |
children | 3395385476d1 |
line wrap: on
line diff
--- a/js/taggingtext.js Thu Mar 26 17:25:46 2015 +0100 +++ b/js/taggingtext.js Mon Mar 30 15:34:47 2015 +0200 @@ -122,6 +122,24 @@ tagObject.append(newdiv); } +function removeEmptyNodes( node ) { + if (node.hasChildNodes()) { + var children = node.childNodes; + for (var i = 0; i < children.length; i++) { + if (children[i].textContent == "" && children[i].innerHTML == "" && children[i].nodeName != "BR") { + //console.log("removing child: "+children[i].nodeName+", its parent: "+node.nodeName); + node.removeChild(children[i]); + } else { + //console.log("recursive to "+children[i].nodeName+"("+children[i].textContent+")") + removeEmptyNodes(children[i]); // recursive + } + + }; + } else { + //console.log(node.nodeName+" ("+node.textContent+") has no childNodes."); + } + +} function removeTagTitle( range, container ) { @@ -168,22 +186,28 @@ } function addTagTitle( range, container ) { + // TODO: bug: here generate self-closing tag when the end of text with tag on it + saveUndoText(); + + var el = document.getElementById("editable-area"); + lastAddTag = $('#TitletagType').val(); var tag = "<"+$('#TitletagType').val()+">〈"+$('#TitletagName').val()+"〉</"+$('#TitletagType').val()+">"; - range.deleteContents(); + + range.deleteContents(); // may causes self-closing tag + var stringtemp = container.innerHTML; var regexText=/<br>/g; var replaceText="<br>"+tag; stringtemp = stringtemp.replace(regexText, replaceText); - + var newdiv = document.createElement("aaaa"); newdiv.innerHTML = tag+stringtemp; + range.insertNode(newdiv); - - var el = document.getElementById("editable-area"); - + var regexText=/<aaaa>/gi; var replaceText=''; @@ -194,6 +218,9 @@ el.innerHTML = el.innerHTML.replace(regexText, replaceText); $('.tagItemDivClass').remove(); + + removeEmptyNodes(el); // removing self-closing tags + } function cleanUpTextArea() { @@ -323,15 +350,16 @@ //Tagging Items function getSelected() { - if(window.getSelection) { + if(window.getSelection) { // all browsers, except IE before version 9 return window.getSelection(); } else if (document.getSelection) { return document.getSelection(); - } else { + } else { // IE var selection = document.selection && document.selection.createRange(); if(selection.text) { return selection.text; } + return false; } return false;