注意:似乎解决了我自己的问题。查看编辑。
我正在尝试编写一个greasemonkey脚本,当用户选择文本时,它将突出显示页面上的所有匹配文本,然后在取消选择时删除突出显示。我正在寻找一种 jQuery 方法来做到这一点。似乎 jQuery 核心中有一个 select 事件,但我无法让它按照我想要的方式工作。例如,尝试在此页面上运行以下命令:
$(document).select(function () {
console.log("hey");
});
没有回应。因此,我似乎特别需要将其附加到文本节点。但这对我来说似乎不切实际。这太慢了。
有什么建议、想法吗?谢谢。
编辑#1:Ken Browning 指出 jQuery 中的选择事件仅在 textarea 和输入字段中触发。所以我想我必须放弃它。也许我可以稍微改变一下我的问题,并询问是否有人可以告诉我将选择事件绑定到所有文本节点的 javascript 方式。
编辑#2:我想我找到了部分答案。这将返回页面上选定的文本,但您仍然必须单击一个按钮才能显示它。没有选择事件绑定。嗯。
<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:所以我绑定到 mouseup 事件而不是选择。然后,我正在检查 getSelText() 的值,以便在该点之后继续进行。耶!
编辑#4:如果有人好奇,我将完成的脚本发布在用户脚本上。链接在这里。享受!