我正在尝试读取文本区域中所选文本的值。这是我的代码:
function readSelected(id)
{
textarea = document.getElementById(id);
if (document.selection)
{ //Code for IE
textarea.focus();
sel = document.selection.createRange();
alert(sel.text);
}
else
{ // Code for Mozilla Firefox
var len = textarea.value.length;
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
var scrollTop = textarea.scrollTop;
var scrollLeft = textarea.scrollLeft;
sel = textarea.value.substring(start, end);
alert(sel);
}
}
HTML:
<textarea id="txt1" rows="10"></textarea>
<a onclick="readSelected('txt1');">Get Selected</a>
单击该按钮时,会出现一个弹出窗口,告诉您所选文本是什么。
该代码适用于Firefox,但我无法在IE8中使用它。
答案 0 :(得分:3)
问题是单击<a>
元素会破坏选择。您可以使用不可选择的按钮:
<input type="button" value="get" onclick="readSelected('txt1');" unselectable="on">
您的代码存在其他小问题
sel
和textarea
是违规者。scrollTop
和scrollLeft
是多余的。selectionStart
和selectionEnd
属性,因为它们是标准(HTML 5指定它们,IE 9将支持它们)。这是我的重写版本:
function readSelected(id) {
var sel = "", el = document.getElementById(id);
if (typeof el.selectionStart == "number" && typeof el.selectionEnd == "number") {
sel = el.value.slice(el.selectionStart, el.selectionEnd);
} else if (document.selection && document.selection.createRange) {
el.focus();
sel = document.selection.createRange().text;
}
alert(sel);
}
答案 1 :(得分:2)
您是否尝试使用onmousedown
代替onclick
?