我正在处理 Firefox扩展程序,它将操纵突出显示的文本。
在独立页面上,我可以使用以下内容获取所选文本:
selectedText = document.selection?document.selection.createRange().text;
然后我将使用有问题的textarea上的字符串操作来操作所选文本。不幸的是,对于插件来说这是不可能的,因为我不知道用户所选文本的位置。
有没有办法获取选择文本的元素的名称,或者更改没有元素名称的所选文本?
答案 0 :(得分:4)
selectedText = content.getSelection().toString();
答案 1 :(得分:0)
您需要从用户选择中获取范围对象:
var userSelection;
if (window.getSelection)
userSelection = window.getSelection();
else if (document.selection) // should come last; Opera!
userSelection = document.selection.createRange();
var rangeObject = getRangeObject(userSelection);
...
function getRangeObject(selectionObject) {
if (selectionObject.getRangeAt)
return selectionObject.getRangeAt(0);
else { // Safari!
var range = document.createRange();
range.setStart(selectionObject.anchorNode, selectionObject.anchorOffset);
range.setEnd(selectionObject.focusNode, selectionObject.focusOffset);
return range;
}
}
...
Range对象具有开始和结束容器节点等。