当前位置: 首页 > 面试题库 >

检测文本中单击了哪个词

关玄裳
2023-03-14
问题内容

我正在构建一个JS脚本,该脚本有时可以在给定页面上允许用户单击任何单词并将该单词存储在变量中。

我有一个非常丑陋的解决方案,涉及到使用jQuery进行类解析:首先解析整个html,拆分每个空间中的所有内容" ",然后重新附加包装在中的所有内容<span class="word">word</span>,然后添加带有jQ的事件以检测点击这样的类,并使用$(this).innerHTML获得点击的单词。

这在许多方面都是缓慢而丑陋的,我希望有人知道实现这一目标的另一种方法。

PS:我可能会考虑将其作为浏览器扩展运行,因此,如果仅使用JS听起来是不可能的,并且如果您知道允许这样做的浏览器API,请随时提及!

可能的解决方法是让用户突出显示该单词而不是单击它,但是我真的很希望能够仅单击一下就可以实现相同的目的!


问题答案:

这是一个无需在文档中添加大量跨度即可使用的解决方案(适用于Webkit,Mozilla和IE9 +):

<p class="clickable">some words</p>

$(".clickable").click(function(e) {
    s = window.getSelection();
    var range = s.getRangeAt(0);
    var node = s.anchorNode;
    while (range.toString().indexOf(' ') != 0) {
        range.setStart(node, (range.startOffset - 1));
    }
    range.setStart(node, range.startOffset + 1);
    do {
        range.setEnd(node, range.endOffset + 1);

    } while (range.toString().indexOf(' ') == -1 && range.toString().trim() != '' && range.endOffset < node.length);
    var str = range.toString().trim();
    alert(str);
});​

在IE8中,由于存在getSelection,因此出现了问题。该链接getSelection()是否有跨浏览器的解决方案?可能有助于解决这些问题。我还没有在Opera上测试过。

s.modify('extend','forward','word');
s.modify('extend','backward','word');

不幸的是,他们并不总能理解整个词。作为一种解决方法,我得到了Range进行选择,并添加了两个循环以查找单词边界。第一个一直在单词中添加字符,直到到达空格为止。第二个循环到达单词的末尾,直到到达一个空格。

这也会在单词的末尾出现标点符号,因此请确保在需要时将其删除。



 类似资料:
  • 我正在制作一个棋盘游戏,8X8矩阵,在一个框架中有64个。到目前为止,我的代码是这样的: 我试图告诉哪个JButoon是使用此代码单击的: 然而,我不知道如何辨别点击了哪个Jbutton。

  • 我有一个listView,它充满了字符串的数组列表,我想让它可点击...但我无法识别哪个项目被点击了 我做了这个,但没用! 有办法知道被点击的字符串吗?如果没有,是否有办法知道被点击项目的位置?

  • 我想知道在多个按钮的列表中按下了哪个按钮。例如,如果按下了第二个按钮,则代码会检测到按下第二个向下的按钮,并返回类似于 。但是,我不知道该怎么做。当我搜索时,jQuery参与其中,但我没有使用jQuery。代码如下: 我尝试使用EventListner,通过将EventListner添加到创建的每个按钮,但这并不能区分单个按钮。请注意,每个按钮都有一个id为和一个类。 如果有人能帮忙,谢谢!

  • 我有两个大小相同的ArrayList,一个用于JButton,一个用于JTextField。单击按钮时,相应的文本字段应更新。我怎么能意识到? p、 jcomponents对(jbutton jtextfield)的数量不是固定的。它们是为用户添加或删除而设计的。但是,它们必须按固定顺序排列。 我如何知道JButton ArrayList中的索引“I”?

  • 问题内容: 我的页面上有几个按钮,但是我不确定如何知道单击了哪个按钮。这是我的两个按钮的标记: 问题答案: 使用类似如下的HTML表单: 使用的PHP代码如下所示: 您应该始终 假定或默认为第一个提交按钮以HTML源代码的形式出现 。实际上,在以下情况下,各种浏览器会可靠地发送带有发布数据的提交按钮的名称/值: 用户使用鼠标或定位设备从字面上单击提交按钮 或者将焦点放在“提交”按钮(它们在选项卡上

  • 问题内容: 我需要知道现在正在按下哪个键。我不是要捕获一些特定的键来触发事件或类似的事情, 我想知道现在按下了哪些键并显示它们的列表。 我还需要捕获特殊键,例如F1 … F12,Shift,Alt,Home,Windows等。基本上,键盘上的所有键都是如此。 我该如何在python中做到这一点?如何捕获键盘事件? 编辑 就是这样,您知道我不是要创建键盘记录程序。我正在尝试做一个诊断工具(我在笔记本