我想获取用户在浏览器中选择的单词的周围段落。这可能吗?
我目前有:
// 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;
}
}
但这似乎不起作用。
答案 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/