gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 18:37:34 25 4
gpt4 key购买 nike

注意:看来解决了我自己的问题。查看修改。

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

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

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

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

编辑 # 1:Ken Browning 指出 jQuery 中的选择事件仅在文本区域和输入字段中触发。所以我想我必须放弃它。也许我可以稍微改变一下我的问题,并询问是否有人可以告诉我将选择事件绑定(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:如果有人好奇,我将完成的脚本发布在 Userscripts 上。链接在这里。享受吧!

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com