Я пишу аддон Firefox, который запускается всякий раз, когда слово подсвечивается. Однако мне нужен script, который определяет, когда выделено слово, и я застрял. Примером может служить nytimes.com(когда вы читаете статью и выделяете слово, появляется значок ссылки). Однако nytimes.com script супер сложный. Мне 16 лет, и я не очень программист, так что это определенно выход из моей лиги.
Javascript: как определить, выделено ли слово
Ответ 1
Самый простой способ сделать это - обнаружить события 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;
Ответ 2
Вот script:
<script language=javascript>
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>
Предоставлено Code Toad:
http://www.codetoad.com/javascript_get_selected_text.asp
В вашем случае вы хотели бы вызвать этот script при выборе, а затем вы можете обработать его, как вам угодно, с запросом AJAX для получения соответствующей информации, например, например, NYtimes.
Ответ 3
Используя rangy.js и jQuery:
$('#elem').on('keyup mouseup', function(){
var sel = rangy.getSelection()
if (sel.rangeCount === 0 || sel.isCollapsed) return
alert(sel.toString())
})
Ответ 4
Используйте следующий код
(function () {
"use strict";
var showSelectedText = function (e) {
var text = '';
if (window.getSelection) {
text = window.getSelection();
} else if (document.getSelection) {
text = document.getSelection();
} else if (document.selection) {
text = document.selection.createRange().text;
}
console.log(text.toString());
}
document.onmouseup = showSelectedText;
if (!document.all) {
document.captureEvents(Event.MOUSEUP);
}
})();