在 JavaScript 中,我不知道如何通过单击使用 window.getSelection()
?
var s = window.getSelection();
s = s.toString().trim();
alert(s);
HTML 包含:
<p>This text contains --this; and that-that.</p>
如果单击--this;,预期的输出应该是this。 双击应该可以做到这一点,但是如何通过单击来做到这一点呢?
非常感谢大家,我来到这个解决方案:
$('p').bind('click', function () {
var sel_obj = window.getSelection(); //it will return an object
sel_obj.modify("move","forward","character");
sel_obj.modify("extend","backward","word");
sel_obj.modify("move","backward","character");
sel_obj.modify("extend","forward","word");
var text = sel_obj.toString().trim();
text = text.toLowerCase();
alert (text);
引用资料: https://developer.mozilla.org/en-US/docs/Web/API/Selection
https://developer.mozilla.org/en-US/docs/Web/API/Selection/modify
最佳答案
当您单击时会创建一个零长度的选择范围,因此选择的 toString()
自然会是一个空字符串。
如果您想知道单击发生的地方存在的整个单词,您将不得不进一步深入了解getSelection()
返回的内容:https://developer.mozilla.org/en-US/docs/Web/API/Selection
Selection
对象会告诉您 DOM 树中存在零长度选择的节点,以及您单击该节点的偏移量。您可以轻松获取属于该节点的所有文本——但那比您想要的文本多。
您还需要做的是查看选择偏移处的文本,然后从该点向后和向前扫描以查找单词边界。
抱歉,我不知道还有比这更简单的方法——据我所知,没有什么可以通过单击选择自动为您提供完整的单词。
关于Javascript:单击使用 window.getSelection()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50136443/