[FIX] summernote lib: some browsers raise when select a range to target a node like an image or a br; createFromNode can't select a node withe more or less of one item. For eg: <div>text <span>one</span></div> the range selected is only 'text '
https://github.com/summernote/summernote/pull/799
This commit is contained in:
@@ -799,6 +799,7 @@ define([
|
||||
isControlSizing: isControlSizing,
|
||||
buildLayoutInfo: buildLayoutInfo,
|
||||
isText: isText,
|
||||
isVoid: isVoid,
|
||||
isPara: isPara,
|
||||
isPurePara: isPurePara,
|
||||
isInline: isInline,
|
||||
@@ -813,6 +814,7 @@ define([
|
||||
isAnchor: isAnchor,
|
||||
isDiv: makePredByNodeName('DIV'),
|
||||
isLi: isLi,
|
||||
isBR: makePredByNodeName('BR'),
|
||||
isSpan: makePredByNodeName('SPAN'),
|
||||
isB: makePredByNodeName('B'),
|
||||
isU: makePredByNodeName('U'),
|
||||
|
||||
@@ -618,7 +618,25 @@ define([
|
||||
* @return {WrappedRange}
|
||||
*/
|
||||
createFromNode: function (node) {
|
||||
return this.create(node, 0, node, 1);
|
||||
var sc = node;
|
||||
var so = 0;
|
||||
var ec = node;
|
||||
var eo = dom.nodeLength(ec);
|
||||
|
||||
// browsers can't target a picture or void node
|
||||
if (dom.isVoid(sc) || dom.isImg(sc)) {
|
||||
so = dom.listPrev(sc).length-1;
|
||||
sc = sc.parentNode;
|
||||
}
|
||||
if (dom.isBR(ec)) {
|
||||
eo = dom.listPrev(ec).length-1;
|
||||
ec = ec.parentNode;
|
||||
} else if (dom.isVoid(ec) || dom.isImg(sc)) {
|
||||
eo = dom.listPrev(ec).length;
|
||||
ec = ec.parentNode;
|
||||
}
|
||||
|
||||
return this.create(sc, so, ec, eo);
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user