Fixed insert of text modules.

This commit is contained in:
Martin Edenhofer 2015-01-07 01:03:18 +01:00
parent f88e05e1bb
commit 9da8aeb054
3 changed files with 43 additions and 2 deletions

View file

@ -103,7 +103,7 @@ class App.Utils
) )
# remove tags & content # remove tags & content
html.find('li, ul, ol, a, b, u, i, strong, blockquote, h1, h2, h3, h4, h5, h6, br, hr, img').remove() html.find('li, ul, ol, a, b, u, i, strong, blockquote, h1, h2, h3, h4, h5, h6, hr, img').remove()
html html

View file

@ -179,7 +179,33 @@
// get cursor position // get cursor position
var marker = '<span id="js-cursor-position"></span>' var marker = '<span id="js-cursor-position"></span>'
Medium.Injector.prototype.inject( marker )
// IE9 and non-IE
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
range = sel.getRangeAt(0);
range.deleteContents();
// Range.createContextualFragment() would be useful here but is
// only relatively recently standardized and is not supported in
// some browsers (IE9, for one)
var el = document.createElement("div");
el.innerHTML = marker;
var frag = document.createDocumentFragment(), node, lastNode;
while ( (node = el.firstChild) ) {
lastNode = frag.appendChild(node);
}
range.insertNode(frag);
// Preserve the selection
if (lastNode) {
range = range.cloneRange();
range.setStartAfter(lastNode);
range.collapse(true);
sel.removeAllRanges();
sel.addRange(range);
}
}
position = $('#js-cursor-position').position() position = $('#js-cursor-position').position()
$('#js-cursor-position').remove() $('#js-cursor-position').remove()
if (!position) return if (!position) return

View file

@ -223,6 +223,16 @@ test( "htmlRemoveRichtext", function() {
result = App.Utils.htmlRemoveRichtext( $(source) ) result = App.Utils.htmlRemoveRichtext( $(source) )
equal( result.html(), should, source ) equal( result.html(), should, source )
source = "<div><br></div>"
should = "<br>"
result = App.Utils.htmlClanup( $(source) )
equal( result.html(), should, source )
source = "<div><div class=\"xxx\"><br></div></div>"
should = "<div><br></div>"
result = App.Utils.htmlRemoveRichtext( $(source) )
equal( result.html(), should, source )
}); });
// htmlClanup // htmlClanup
@ -253,6 +263,11 @@ test( "htmlClanup", function() {
result = App.Utils.htmlClanup( $(source) ) result = App.Utils.htmlClanup( $(source) )
equal( result.html(), should, source ) equal( result.html(), should, source )
source = "<div><div class=\"xxx\"><br></div></div>"
should = "<div><br></div>"
result = App.Utils.htmlRemoveRichtext( $(source) )
equal( result.html(), should, source )
}); });
// wrap // wrap