IE до 9 не поддерживает window.getSelection()
.Вы можете использовать document.selection
вместо этого (см. на этой странице MSDN для описания).Этот объект выбора имеет метод createRange()
, который возвращает объект TextRange
(подробности см. на этой странице MSDN ).
Обратите внимание, что оба объекта selection
и textrange
являются собственной реализацией Microsoft и не соответствуют стандартам W3C.Подробнее о проблемах textrange
и range
можно прочитать на www.quirksmode.org / dom / range_intro.html .
В IE работает следующая реализация:
$('#click').click(function(){
var range = document.selection.createRange();
range.pasteHTML("<span style='color: red'>" + range.htmlText + "</span>");
});
Это не так хорошо, как в другой реализации, так как вам приходится работать со строками, а не с dom.Есть небольшой хак, где вы вставляете <span id="myUniqueId"></span>
в качестве заполнителя, а затем заменяете его, используя dom.Вам все равно придется работать с range.htmlText
или range.text
.
Кстати: приведенная выше реализация, очевидно, предназначена только для IE.Вы должны использовать некоторые возможности обнаружения браузера, чтобы решить, какую версию использовать.