Вы смотрели статью quirksmode на Range?
На основе этой статьи вы можете создать такой метод:
function getRangeText() {
var userSelection;
if (window.getSelection) {
userSelection = window.getSelection();
} else if (document.selection) {
userSelection = document.selection.createRange();
}
var selectedText = userSelection;
if (userSelection.text) {
selectedText = userSelection.text;
}
return selectedText;
}
Я проверял это в FF5, Opera 11, Safari на Mac, а также в IE6 и IE7. Это стоит протестировать в других браузерах IE, но я думаю, что это работает и в них.