我正在使用新的 Firepad realtime text collaboration service .
我想对用户选择的框中的文本使用 JavaScript getSelection
方法。
但是,无论出于何种原因,我的代码都无法正常工作。
我的 JavaScript:
function myFunction()
{
alert(window.getSelection());
}
HTML:
<button onclick="myFunction();">Get Selected Text in Firepad</button>
最佳答案
查看插件后,FirePad 似乎正在使用 textarea
。
根据 another SO post的回答似乎 textareas
不使用与其他节点相同的选择范围。
accepted answer解释如下:
There is extra bizarreness going on with textarea nodes. If I remember correctly they behave as any other nodes when you select them in IE, but in other browsers they have an independent selection range which is exposed via the .selectionEnd and .selectionStart properties on the node.
highest voted answer显示解决方案。
该解决方案直接使用对 textarea
节点的引用,并使用元素的 selectionEnd
和 selectionStart
属性从那里获取选定范围,类似对此:
function myFunction() {
var e = document.getElementById('thearea');
//Mozilla and DOM 3.0
if ('selectionStart' in e) {
var l = e.selectionEnd - e.selectionStart;
var start = e.selectionStart,
end = e.selectionEnd,
length = l,
text = e.value.substr(e.selectionStart, l);
alert(text);
}
}
DEMO - 对 textarea
selectionStart
和 selectionEnd
我不确定这些天在所有浏览器中是否都相同,但上面的代码和链接 SO 中的附加信息应该有望帮助您获得所需的结果。
关于javascript - getSelection 不会在自定义文本输入中为我找到选定的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16239776/