我正在使用新的Firepad realtime text collaboration service。
我想在用户选择的框中对文本使用JavaScript getSelection
方法。
但是,我的代码无论出于何种原因都无法正常工作。
我的JavaScript:
function myFunction()
{
alert(window.getSelection());
}
HTML:
<button onclick="myFunction();">Get Selected Text in Firepad</button>
答案 0 :(得分:2)
在查看插件后,FirePad似乎正在使用textarea
。
根据another SO post的回答,似乎textareas
不使用与其他节点相同的选择范围。
accepted answer解释如下:
textarea节点还有一些奇怪的现象。如果我记得 在IE中选择它们时,它们的行为与任何其他节点一样正确 但在其他浏览器中,它们具有独立的选择范围 通过.selectionEnd和.selectionStart属性公开 节点
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 - 将selectionStart
和selectionEnd
用于textarea
我不确定这些天所有浏览器是否相同,但上述代码和链接SO中的其他信息应该有助于您获得所需的结果。
答案 1 :(得分:1)
Firepad基于CodeMirror。您不应直接从DOM中获取选择,而应使用CodeMirror公开的函数来执行此操作。
在这里查看getSelection(): http://codemirror.net/doc/manual.html
答案 2 :(得分:0)
您可以使用功能
firepad.getHtmlFromSelection();
firepad.insertTextAtCursor(textPieces);
firepad.getHtml();
firepad.getText();
firepad.insertText(index,textPieces);