Диапазон текста Javascript в Firefox + Greasemonkey - PullRequest
1 голос
/ 06 сентября 2010

я новичок, но мне нужен скрипт, который мог бы помочь мне на некоторых страницах.Мне нужен скрипт, который анализирует текст на странице, и если есть слово, которое я ищу, он показывает всплывающее окно, если не делает ничего.Здесь приведен код, но он не работает с Firefox, потому что функция текстового диапазона предназначена только для IE (вероятно, не будет работать, потому что я не могу сделать JavaScript).Кто-то сказал мне использовать функцию tostrign, но я не знаю, как: P Так что, если вы могли бы изменить ее, чтобы она работала, это было бы очень здорово.

1 Ответ

2 голосов
/ 06 сентября 2010

Firefox имеет Range с вместо TextRange с. Если вы просто хотите проверить наличие определенного фрагмента текста на странице и не выделите его, в Firefox будет работать следующее. Причина использования объекта Selection состоит в том, что Range, охватывающий все тело, будет включать все текстовые узлы в теле, включая узлы внутри элементов <script>, в то время как результат вызова toString() для объекта Selection включает только видимый текст, который вы хотите. Также обратите внимание, что эта функция стирает текущий выбор, если таковой существует; если это проблема для вас, вы можете сохранить, а затем восстановить выбранные диапазоны.

function visibleTextContains(str) {
    var range = document.createRange();
    range.selectNodeContents(document.body);
    var sel = window.getSelection();
    sel.removeAllRanges();
    sel.addRange(range);
    var visibleText = sel.toString();
    sel.removeAllRanges();
    return visibleText.indexOf(str) > -1;
}
...