ПРИМЕЧАНИЕ: похоже, я решил собственную проблему. Смотрите правки.
Я пытаюсь написать скрипт greasemonkey, который подсвечивает все соответствующие тексты на странице, когда пользователь выбирает текст, а затем удаляет выделение, когда выбор отменяется. Я ищу JQuery способ сделать это. Кажется, что в ядре jQuery есть событие select, но я не мог заставить его работать так, как я хотел. Попробуйте выполнить следующее на этой странице, например:
$(document).select(function () {
console.log("hey");
});
Нет ответа. Так что, похоже, мне нужно прикрепить это к текстовым узлам в частности. Но это не кажется мне практичным. Это было бы слишком медленно.
Есть предложения, идеи? Спасибо.
EDIT # 1: Кен Браунинг указал, что событие выбора в jQuery запускается только в текстовой области и полях ввода. Так что я думаю, что должен отказаться от этого. Может быть, я могу немного изменить свой вопрос и спросить, может ли кто-нибудь сказать мне способ javascript, чтобы привязать события выделения ко всем текстовым узлам.
РЕДАКТИРОВАТЬ # 2: Я думаю, что нашел часть моего ответа. Это возвращает выбранный текст на странице, но вам все равно нужно нажать кнопку, чтобы показать его. Нет привязки события select. Гектометр
<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: Если кому-то интересно, я разместил свой готовый сценарий в скриптах пользователя. Вот ссылка. Наслаждайтесь!
http://userscripts.org/scripts/show/55148