获取Mozilla扩展中的当前选择

时间:2014-01-28 05:49:48

标签: firefox-addon selection

对于Mozilla扩展,我想从任何删除的文本中获取原始文本(删除HTML)。 如果我使用

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

在我的方法中,它适用于HTML上的选定文本,但不适用于表单中的文本(例如textarea)。在这种情况下,它什么都不返回。有没有一种方法适用于所有可能类型的标记文本?

1 个答案:

答案 0 :(得分:2)

您可以查看document.activeElement,如果是输入或文本区域,请从中选择,否则返回window.getSelection()。我不知道你如何从Mozilla扩展中访问document对象,但我相信你会这样做。

也许是这样的(传递页面的windowdocument对象作为函数参数):

演示:http://jsfiddle.net/timdown/69uGL/

代码:

function getSelectedText(win, doc) {
    var activeEl = doc.activeElement, start, end;
    if (    activeEl &&
            /^(textarea|input)$/i.test(activeEl.nodeName) &&
            (start = activeEl.selectionStart) != (end = activeEl.selectionEnd)) {
        return activeEl.value.slice(start, end);
    } else {
        return "" + win.getSelection();
    }
}