Показать сообщение отдельно
  #1 (permalink)  
Старый 19.01.2011, 18:59
Новичок на форуме
Отправить личное сообщение для Fobius Посмотреть профиль Найти все сообщения от Fobius
 
Регистрация: 19.01.2011
Сообщений: 3

indexOf - недочеты в работе
Беру выделеный на странице текст
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, но решить проблему не придумал как. Второй случай для меня несколько загадочен.

Дайте пинок в нужную сторону пожалуйсто...
Ответить с цитированием