Вы говорите о TextRange
s, которые полностью реализованы только в IE. В других браузерах вместо этого используются объекты DOM Level 2 Range , которые в большинстве случаев значительно превосходят TextRanges и не имеют эквивалента текстовых методов, таких как expand()
. Однако в последних браузерах WebKit реализована версия expand()
, а в Webkit и Firefox 4 есть метод modify()
объекта Selection
, который обеспечивает аналогичную функциональность.
Пример: http://jsfiddle.net/bzU22/1/
<script type="text/javascript">
function expandSelection() {
if (window.getSelection && window.getSelection().modify) {
var sel = window.getSelection();
sel.modify("extend", "forward", "word");
} else if (document.selection && document.selection.type == "Text") {
var range = document.selection.createRange();
range.moveEnd("word", 1);
range.select();
}
document.getElementById("test").focus();
}
</script>
<input type="button" unselectable onclick="expandSelection();" value="Expand">
<p contenteditable="true" id="test">Hello, this is some test text.
Select a word and then press the 'Expand' button.</p>