ОК, вот мой код:
function ShowSelection()
{
var textComponent = document.getElementById('Editor');
var selectedText;
if (textComponent.selectionStart !== undefined)
{// Standards Compliant Version
var startPos = textComponent.selectionStart;
var endPos = textComponent.selectionEnd;
selectedText = textComponent.value.substring(startPos, endPos);
}
else if (document.selection !== undefined)
{// IE Version
textComponent.focus();
var sel = document.selection.createRange();
selectedText = sel.text;
}
alert("You selected: " + selectedText);
}
Проблема, хотя код, который я даю для IE, приведен на многих сайтах, я не могу заставить его работать на моей копии IE6 в моей текущей системе. Возможно, это будет работать для вас, поэтому я даю это.
Трюк, который вы ищите, это, вероятно, вызов .focus (), чтобы вернуть текстовой области фокус, чтобы выбор снова был активирован.
[ОБНОВЛЕНИЕ] Я получил правильный результат (содержимое выбора) с событием onKeyDown:
document.onkeydown = function (e) { ShowSelection(); }
Так что код правильный. Опять же, проблема заключается в том, чтобы получить выбор при нажатии на кнопку ... Я продолжаю поиск.
[ОБНОВЛЕНИЕ] Я не добился успеха с кнопкой, нарисованной с тегом li
, потому что, когда мы нажимаем на нее, IE отменяет предыдущий выбор. Приведенный выше код работает с простой кнопкой input
, хотя ...