Вы не вызываете «moveEnd» для объекта выделения - вы вызываете его для TextRange («каретка»):
var caret = document.selection.createRange (); // got empty range between "e" and "x"
caret.moveEnd('character'); // Move endpoint one character right, now it must be "x"
caret.select(); // make the selection equal the range
alert (caret.htmlText);
edit Я также редактирую это, чтобы сделать так, чтобы "alert" действительно работал: -)
Вот пример страницы: http://gutfullofbeer.net/range.html
Я думаю, что этот материал может работать только в IE. (Подтверждено, что по крайней мере Chrome ничего не делает с этим кодом.)