Hi Nico, thanks for your reply.
Here a bit of code I try:
var isIntersection = xRange.intersectsRange(xRangeActual);
var isBefore = (xRange.compareBoundaryPoints(Range.START_TO_END, xRangeActual) == -1);
var isAfter = (xRange.compareBoundaryPoints(Range.END_TO_START, xRangeActual) == 1);
if (isIntersection) {
if (isBefore) {
xRange.setEnd(xRangeActual.endContainer,xRangeActual.endOffset);
}
else {
xRange.setStart(xRangeActual.startContainer,xRangeActual.startOffset);
}
var sel = rangy.getSelection();
sel.setSingleRange(xRange);
xRangeToProcess = {"range":xRange, "selectedString": sel.getRangeAt(0).toString()};
sel.removeAllRanges();
}
when I get this situation (from Logs):
xRange.startContainer = [object Text]
xRange.startContainer.nodeType = 3
xRange.endContainer = [object HTMLSpanElement]
xRange.endContainer.nodeType = 1
I get the error I mention before:
Error: IndexSizeError: Index or size is negative or greater than the allowed amount
To put in context, I'm doing a firefox jetpack plugin but I don't think that put some rare condition, other intersection detection work well.
When I make the "union" I modify the DOM with some styles (span) to show the user some feedback, may be the DOM modification affect that?
Thanks!