突出显示文本后,我想获取所选文本所在的段落。
var select = window._content.document.getSelection();
请问有什么指点吗?
突出显示文本后,我想获取所选文本所在的段落。
var select = window._content.document.getSelection();
请问有什么指点吗?
这实际上很难做到,因为您必须考虑六种情况:
所以首先你必须决定你想要解决方案的完整程度。我将只介绍 (1) 和 (2) 中最简单的情况。
function getSelectedParagraphText() {
if (window.getSelection) {
selection = window.getSelection();
} else if (document.selection) {
selection = document.selection.createRange();
}
var parent = selection.anchorNode;
while (parent != null && parent.localName != "P") {
parent = parent.parentNode;
}
if (parent == null) {
return "";
} else {
return parent.innerText || parent.textContent;
}
}
注意:如果您也需要标签,请将 textContent 替换为 innerHTML。
编辑:放入更好的版本,包括更好的浏览器兼容性。
我发现了这个有用的例子。
似乎有些浏览器支持 window.getSelection() 而其他浏览器支持 document.getSelection()。该示例处理所有这些情况。
select.anchorNode.parentNode 将返回父节点,在你的情况下
标签,然后您可以获取该节点的文本。
var x = window.getSelection()
var z = x.anchorNode.parentNode
alert(z.innerHTML)
确保您也查看 window.getSelection() ,因为 document.getSelection 在 firefox 中已折旧。
$.event.props.push('onTextSelect');
$(document).click(function(){
var str=window.getSelection().anchorNode.data;
var str=str.substring(window.getSelection().anchorOffset,window.getSelection().focusOffset);
if(str)
$(window.getSelection().focusNode.parentNode).trigger({type:'onTextSelect',text:str});
});
$('p').on('onTextSelect',function(e){
console.log($(this).attr('class'))
$('p:last').text(e.text);
});
html
<div><p class="p">some text</p></div>
<p></p>
你可以在这里找到小提琴https://jsfiddle.net/q9nkc0fd/6/
jsmatita 诞生了一个新项目:http ://takenotes.sourceforge.net/ (它是意大利语)