你能获取用户双击的单词吗?我尝试在onDblClick事件处理程序中,但selectionStart在那里是未定义的;而onselect事件似乎仅适用于文本区域。
你能获取用户双击的单词吗?我尝试在onDblClick事件处理程序中,但selectionStart在那里是未定义的;而onselect事件似乎仅适用于文本区域。
在IE中可以使用document.selection.createRange().text
,在Firefox和WebKit中可以使用window.getSelection().toString()
,并将其附加到ondblclick
处理程序中:
document.ondblclick = function () {
var sel = (document.selection && document.selection.createRange().text) ||
(window.getSelection && window.getSelection().toString());
alert(sel);
};
参考资料:
而我使用的是window.getSelection().toString()
。
我想分享一下,你也可以使用 baseOffset
和 extentOffset
。
<p>test data.</p>
<script>
document.addEventListener("dblclick", (e)=>{
const selection = document.getSelection()
// console.log(selection.anchorNode.data) // is whole text: "test data."
const selectContent = selection.anchorNode.data.slice(selection.baseOffset, selection.extentOffset)
console.log(selectContent)
})
</script>