【发布时间】:2019-03-19 11:02:14
【问题描述】:
我需要识别文本选择的开始和结束
元素的 id。我写了以下内容:
$(document).on('keydown', function ( e ) {
if ((e.metaKey ) && (String.fromCharCode(e.which).toLowerCase() === 'c') ) {
var selectedText = document.getSelection();
if (selectedText && selectedText != '') {
var selectedBeginId = $(selectedText.anchorNode.parentNode).attr('id');
var selectedEndId = $(selectedText.focusNode.parentNode).attr('id');
alert(selectedBeginId + ' - ' + selectedEndId);
} else {
alert('No passage selected');
}
}
});
HTML 是这样的:
<body>
<p id="p-001">1 Lorem ipsum</p>
<p id="p-002">2 Lorem ipsum</p>
<p id="p-003">3 Lorem ipsum</p>
<p id="p-004">4 Lorem ipsum</p>
<p id="p-005">5 Lorem ipsum</p>
<p id="p-006">6 Lorem ipsum</p>
</body>
当我选择一些文本范围并按 meta+c 时,它会显示开始和结束
id。但是,如果选择在段落末尾结束,有时它会将 selectedEndId 返回为 undefined。 谁能解释为什么以及如何解决它? 我在 Safari、Chrome 和 Opera 中观察到了这个错误,但在 FF 中没有。 感谢您的帮助。
【问题讨论】:
标签: javascript jquery getselection