Try the demo in Internet Explorer 11 and in a real browser.
IE now implements Range objects, representing a range of text that may span several elements. It's the basis for the standards-based part of bililiteRange. And it almost works. It's a little flaky: inserting text that contains '\n'
without '\r'
, what I consider the "normal" way, automatically inserts the '\r'
. Then using node.nodeValue
returns a string without the '\r'
, but Range.toString()
includes them. But that I can hack around.
The real bug is that ranges cannot end with a '\n'
. If you try, the range is truncated. I can't find any way around that, so I had to change the way bililiteRange returned text: I went from range.toString()
to element.textContent.slice()
. Since that works with no other changes, I suspect that the error is in IE's toString()
function itself rather than reflecting an underlying error in the Range
.
Now to report that to Microsoft.