繁体   English   中英

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

[英]How do you manipulate selected text via a Firefox extension

我正在开发一个可以操作突出显示文本的Firefox扩展程序

在独立页面上,我可以通过以下方式获取所选文本:

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

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

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

selectedText = content.getSelection().toString();

您需要从用户选择中获取范围对象:

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 这里和w3.org上找到

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM