注意:似乎解决了我自己的问题。请参阅编辑。
我正在尝试编写一个greasemonkey脚本,当用户选择文本时会突出显示页面上的所有匹配文本,然后在取消选择时删除突出显示。我正在寻找一种jQuery方法来做到这一点。似乎jQuery核心中有一个select事件,但我无法按照我想要的方式工作。例如,尝试在此页面上运行以下命令:
$(document).select(function () {
console.log("hey");
});
没有回应。所以我似乎需要特别将它附加到文本节点。但这对我来说似乎不切实际。这会太慢了。
有什么建议,想法吗?感谢。
编辑#1:Ken Browning指出jQuery中的select事件仅在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:如果有人好奇,我将完成的脚本发布在Userscripts上。链接在这里。享受!答案 0 :(得分:3)
在Firefox中,document.getSelection()
将返回所选文字。
您可以将onmouseup
处理程序附加到document
,并在每次收到mouseup
事件时检查选择。
注意:在我写完之后,你发布了一些源代码来获取选择。虽然该代码很好(和跨浏览器),但如果您使用Greasemonkey,则必须使用Firefox,因此您只需要document.getSelection()
。
答案 1 :(得分:1)
当用户选择文本字段中的某些文本(包括输入和文本区域)时,将触发select事件。
我认为这意味着您的内容错误,除非您的网页内容位于<input type="text">
或<textarea>