javascript - 如何将 "select"事件附加到页面上的每个文本节点?有没有更好的办法?

标签 javascript jquery events greasemonkey

注意:似乎解决了我自己的问题。查看编辑内容。

我正在尝试编写一个greasemonkey脚本,当用户选择文本时,它将突出显示页面上的所有匹配文本,然后在取消选择时删除突出显示。我正在寻找一种 jQuery 方法来做到这一点。似乎 jQuery 核心中有一个 select 事件,但我无法让它按照我想要的方式工作。例如,尝试在此页面上运行以下命令:

$(document).select(function () { 
      console.log("hey");
  });

没有任何回应。所以看来我需要特别将其附加到文本节点。但这对我来说似乎不切实际。这太慢了。

有什么建议、想法吗?谢谢。

编辑#1:Ken Browning 指出 jQuery 中的 select 事件仅在文本区域和输入字段中触发。所以我想我必须放弃它。也许我可以稍微改变我的问题,并询问是否有人可以告诉我将选择事件绑定(bind)到所有文本节点的javascript方法。

编辑#2:我想我找到了部分答案。这将返回页面上选定的文本,但您仍然需要单击按钮才能显示它。没有选择事件绑定(bind)。嗯。

<script language=javascript>
function getSelText()
{
    var txt = '';
     if (window.getSelection)
    {
        txt = window.getSelection();
             }
    else if (document.getSelection)
    {//javascript select event
        txt = document.getSelection();
            }
    else if (document.selection)
    {
        txt = document.selection.createRange().text;
            }
    else return;
document.aform.selectedtext.value =  txt;
}
</script>
<input type="button" value="Get selection" onmousedown="getSelText()"> 

http://www.codetoad.com/javascript_get_selected_text.asp

编辑#3:所以我绑定(bind)到 mouseup 事件而不是选择。然后,我检查 getSelText() 的值,以便在该点之后进一步继续。耶!

编辑#4:如果有人好奇,我将完成的脚本发布在用户脚本上。链接在这里。享受吧!

http://userscripts.org/scripts/show/55148

最佳答案

在 Firefox 中,document.getSelection() 将返回选定的文本。

您可以将 onmouseup 处理程序附加到 document,并在每次收到 mouseup 事件时检查选择。

注意:在我写完这篇文章后,您发布了一些源代码来获取选择。虽然该代码很好(并且跨浏览器),但如果您使用 Greasemonkey,则必须使用 Firefox,因此您需要的只是 document.getSelection()

关于javascript - 如何将 "select"事件附加到页面上的每个文本节点?有没有更好的办法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1236795/

相关文章:

javascript - 使用 Javascript 在 Windows 8 应用程序中获取计算机制造商和型号

javascript - WordPress 给我提供了 404 页面未找到functions.php?

javascript - jQuery/Javascript 代码检查,如果不是 undefined

python - Tkinter 应用程序中的日期更改通知 (win32)

javascript - JavaScript 中的 `x = y, z` 逗号赋值

javascript - 如何从 webpack 4 中的 vendor 文件获取变量

javascript - 无法在多项选择中附加选项

javascript - 在 JS 中撤消覆盖的粘贴

javascript - 自己的 pubsub 实现与使用 addEventListener() + CustomEvent 相比?

javascript - 使用 jQuery 加载图像后如何触发函数?