如何通过Firefox扩展操作选定的文本

时间:2009-02-06 06:46:41

标签: javascript firefox google-chrome

我正在处理 Firefox扩展程序,它将操纵突出显示的文本。

在独立页面上,我可以使用以下内容获取所选文本:

selectedText = document.selection?document.selection.createRange().text;

然后我将使用有问题的textarea上的字符串操作来操作所选文本。不幸的是,对于插件来说这是不可能的,因为我不知道用户所选文本的位置。

有没有办法获取选择文本的元素的名称,或者更改没有元素名称的所选文本?

2 个答案:

答案 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对象具有开始和结束容器节点等。

可以在Quirksmode here和w3.org上找到更多信息here