Беру выделеный на странице текст
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;
}
return txt;
}
Далее собираю весь текст из нужного блока
function getText(n) {
var strings = [];
getStrings(n, strings);
return strings.join("");
function getStrings(n, strings) {
if (n.nodeType == 3 )
strings.push(n.data);
else if (n.nodeType == 1 ) {
for(var m = n.firstChild; m != null; m = m.nextSibling) {
getStrings(m, strings);
}
}
}
}
Теперь надо узнать, находится ли выделеный текст в нужном мне блоке.
var text = getSelText();
content = getText( document.getElementById("blockid") );
if (content.indexOf( text ) != -1) {
alert("OK");
}
Все работает нормально. Вот только если выделить текст с переводом строки, тут уже совпадение не получается.
Еще если в FF стоят подряд буква+,+ +буква то тоже совпадений не находит
Смысл происходящего я понимаю: в первом случяе в строке воспринимает перевод как пробел и перевод как \r
n, но решить проблему не придумал как. Второй случай для меня несколько загадочен.
Дайте пинок в нужную сторону пожалуйсто...