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

标签 javascript string getselection

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

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

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

我怎样才能使 getSelection() 仅适用于特定元素?

最佳答案

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

function getSelectedText() {
    if (window.getSelection) {
        return window.getSelection().toString();
    } else if (document.selection) {
        return document.selection.createRange().text;
    }
    return '';
}

var b = document.getElementsByTagName('body')[0],
    o = document.getElementById('output');

b.onmouseup = function(e){
    var selText = getSelectedText(),
        targetElem = e.target.tagName.toLowerCase();
    if (selText && targetElem == 'p') {
        o.textContent = 'You selected the text: "' + selText + '" from a ' + targetElem + ' element.';
    }
};​

JS Fiddle demo .

关于javascript - getSelection() 可以只应用于某个元素(而不是整个文档)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11821037/

相关文章:

javascript:跨越字符串中的最后两个单词

c++ - C++ 中带字符串的输入验证循环

javascript - 如何使用javascript获取选定的html文本?

javascript - 如何断言传递给类构造函数的函数是通过引用传递的,并且在使用组合时不会重复?

string - 如何使用 foldl 找出一个字母在字符串中重复的次数?

java - 如何在不使用表单的情况下将文本字段数据从 html 传递到 servlet

javascript - jQuery:如何包装选定的文本

javascript - 从选定的谷歌图表 PieChart 切片中获取数据

Javascript 变量和作用域

php - PHP 风格的 Javascript 数组