Javascript:单击使用 window.getSelection()?

标签 javascript jquery html css

在 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

Detect which word has been clicked on within a text

最佳答案

当您单击时会创建一个零长度的选择范围,因此选择的 toString() 自然会是一个空字符串。

如果您想知道单击发生的地方存在的整个单词,您将不得不进一步深入了解getSelection() 返回的内容:https://developer.mozilla.org/en-US/docs/Web/API/Selection

Selection 对象会告诉您 DOM 树中存在零长度选择的节点,以及您单击该节点的偏移量。您可以轻松获取属于该节点的所有文本——但那比您想要的文本多。

您还需要做的是查看选择偏移处的文本,然后从该点向后和向前扫描以查找单词边界。

抱歉,我不知道还有比这更简单的方法——据我所知,没有什么可以通过单击选择自动为您提供完整的单词。

关于Javascript:单击使用 window.getSelection()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50136443/

相关文章:

javascript - 对于每个不按正确顺序发射的情况

Javascript 手机动画库 HTML5 Canvas 标签

javascript - 如何合并具有相同类的任意数量的(动态)表格单元格?

javascript - 单击按钮时事件处理程序不起作用

c# - 如何检查是否脏,但保存时不检查?

html - 我怎样才能把这些元素放在跨度的中间?

javascript - 等待时在提交时显示带有叠加层的加载 div

javascript - 如何覆盖交易 View 小部件的研究

javascript - 根据选中的复选框获取 <td> 的值

css - 受影响的 HTML 同级边距