对于Mozilla扩展,我想从任何删除的文本中获取原始文本(删除HTML)。 如果我使用
var selectedText = content.getSelection().toString();
alert(selectedText);
在我的方法中,它适用于HTML上的选定文本,但不适用于表单中的文本(例如textarea)。在这种情况下,它什么都不返回。有没有一种方法适用于所有可能类型的标记文本?
答案 0 :(得分:2)
您可以查看document.activeElement
,如果是输入或文本区域,请从中选择,否则返回window.getSelection()
。我不知道你如何从Mozilla扩展中访问document
对象,但我相信你会这样做。
也许是这样的(传递页面的window
和document
对象作为函数参数):
演示: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();
}
}