getSelection() 可以仅应用于某个元素(而不是整个文档)吗?

Shr*_*pta 5 javascript string getselection

我正在测试该getSelection()方法,我希望我的程序获取特定文本段落中的选定文本并将其显示在 div 标签中。我使用了以下代码:

var txt = document.getSelection();
document.getElementById("display").innerHTML = "The text you have selected is: " + txt + ".";
Run Code Online (Sandbox Code Playgroud)

但是,我希望程序仅获取段落本身中所做的选择,而不是整个文档中的选择。我尝试使用document.getElementById("id").getSelection();但没有成功。

我怎样才能使它getSelection()只适用于某个元素?

Dav*_*mas 3

这是一种方法,仅在 Chromium 19 中进行了测试(它支持textContent,对于 Internet ExplorerinnerText则必须使用):

\n\n
function getSelectedText() {\n    if (window.getSelection) {\n        return window.getSelection().toString();\n    } else if (document.selection) {\n        return document.selection.createRange().text;\n    }\n    return \'\';\n}\n\nvar b = document.getElementsByTagName(\'body\')[0],\n    o = document.getElementById(\'output\');\n\nb.onmouseup = function(e){\n    var selText = getSelectedText(),\n        targetElem = e.target.tagName.toLowerCase();\n    if (selText && targetElem == \'p\') {\n        o.textContent = \'You selected the text: "\' + selText + \'" from a \' + targetElem + \' element.\';\n    }\n};\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n\n

JS 小提琴演示

\n