51 javascript events highlight detect
我正在编写一个Firefox插件,只要突出显示一个单词就会触发它.但是我需要一个脚本来检测单词突出显示的时间,然后我就卡住了.一个例子是nytimes.com(当你正在阅读一篇文章并突出显示一个单词时,会弹出参考图标).然而,nytimes.com脚本非常复杂.我16岁,而不是程序员,所以这绝对是我的联盟.
Tim*_*own 73
要做到这一点最简单的方法是检测mouseup
和keyup
对文档的事件,并检查所有文本是否被选中.以下内容适用于所有主流浏览器.
示例:http://www.jsfiddle.net/timdown/SW54T/
function getSelectedText() {
var text = "";
if (typeof window.getSelection != "undefined") {
text = window.getSelection().toString();
} else if (typeof document.selection != "undefined" && document.selection.type == "Text") {
text = document.selection.createRange().text;
}
return text;
}
function doSomethingWithSelectedText() {
var selectedText = getSelectedText();
if (selectedText) {
alert("Got selected text " + selectedText);
}
}
document.onmouseup = doSomethingWithSelectedText;
document.onkeyup = doSomethingWithSelectedText;
Run Code Online (Sandbox Code Playgroud)
这是一个脚本:
<script>
function getSelText()
{
var txt = '';
if (window.getSelection)
{
txt = window.getSelection();
}
else if (document.getSelection)
{
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()">
<form name="aform">
<textarea name="selectedtext" rows="5" cols="20"></textarea>
</form>
Run Code Online (Sandbox Code Playgroud)
代码蟾蜍提供:
http://www.codetoad.com/javascript_get_selected_text.asp
在您的情况下,您希望在进行选择时调用此脚本,然后您可以根据需要处理它,例如使用 AJAX 请求获取相关信息,就像 NYtimes 可能做的那样。