在JavaScript中选择所选单词的段落

时间:2016-03-09 23:19:17

标签: javascript

我想获取用户在浏览器中选择的单词的周围段落。这可能吗?

我目前有:

// returns a trimmed version of the currently selected text
function getTrimmedSelection() {
    var selection = window.getSelection();
    var words = String(selection);
    var context = getSelectedParagraphText(selection);
    console.log("CONTEXT: " + context)
}

function getSelectedParagraphText(selection) {
    var parent = selection.anchorNode;
    while (parent != null && parent.localName != "P") {
        parent = parent.parentNode;
    }

    if (parent == null) {
        return "";
    } else {
        return parent.innerText || parent.textContent;
    }
}

但这似乎不起作用。

1 个答案:

答案 0 :(得分:0)

至少在IE和Chrome中,localName返回小写值,并且由于JavaScript中的字符串比较区分大小写,因此parent.localName != "P"条件始终为true,您永远不会退出循环。为安全起见,您可能希望进行不区分大小写的比较:

while (parent != null && parent.localName.toLowerCase() != "p") {
  parent = parent.parentNode;
}

这是一个小工具:https://jsfiddle.net/gnyfdtof/1/