ПРИМЕЧАНИЕ: Я решил, что проблема моя. См. Правки.Как подключить событие «select» к каждому текстовому узлу на странице? Есть ли способ лучше?
Я пытаюсь написать сценарий greasemonkey, который выделит все соответствующие тексты на странице, когда пользователь выберет текст, а затем удалит выделение, когда выбор отменен. Я ищу способ jQuery для этого. Кажется, что в ядре jQuery есть событие select, но я не мог заставить его работать так, как я этого хотел. Попробуйте выполнить следующее, например, на этой странице:
$(document).select(function() {
console.log("hey");
});
Ответа на этот вопрос не поступит. Поэтому мне кажется, что мне нужно привязать это к текстовым узлам, в частности. Но это не кажется мне практичным. Это было бы слишком медленно.
Любые предложения, идеи? Благодарю.
EDIT # 1: Кен Браунинг указал, что событие select в jQuery только срабатывает в текстовом поле и в полях ввода. Поэтому, я думаю, я должен отказаться от этого. Возможно, я могу немного изменить свой вопрос и спросить, может ли кто-нибудь сказать мне способ javascript связать события выбора со всеми текстовыми узлами.
EDIT # 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
EDIT # 3: SO я привязан к событию MouseUp, а не выбора. Затем я проверяю значение getSelText(), чтобы продолжить дальше после этой точки. Ура!
EDIT # 4: В случае, если кому-то интересно, я разместил мой готовый скрипт в Usercripts. Ссылка здесь. Наслаждайтесь!
http://userscripts.org/scripts/show/55148
удивительный. Спасибо за информативный комментарий. – picardo
if (document.selection && document.selection.createRange) selectText = document.selection.createRange(). Text; // IE - не то, что нужно для greasemonkey, но может быть удобно – gnarf