Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.07.2009, 22:35
Аспирант
Отправить личное сообщение для olgatcpip Посмотреть профиль Найти все сообщения от olgatcpip
 
Регистрация: 09.04.2009
Сообщений: 63

тормозит в IE
Здравствуйте, у меня тормозит ввод текста в ИЕ

Есть текст, который отображается. перед отображением на каждое слово накладываем событие (по клику делать то-то)

есть поле вода, в которое мы что-нибудь можем ввести (<input type="text" name="buyUserText" />)
есть место, куда мы вставляем количество символов введённых в поле ввода (<font id="char_counter">0</font>)
Вводим количество символов по событию
window.onload = function(){
	var v = document.getElementById('buyUserText'); 
	v.onkeyup = function()
	{
		charCount();
	}
}


function charCount()
{
   var c = document.getElementById('char_counter');
   var v = document.getElementById('buyUserText'); 
  c.innerText = v.value.length;
}


вот так работает НО если текста много то ТОЛЬКО в IE тормозит страшно c.innerText!

И что я только не пробовала. И чере дом элементы вставлять и менять местами вызовы функций (это от отчаяния)!

Помогите пожалуйста.

Я думаю, что это из-за механизма обработки событий IE браузером так. Но алгоритм по которому он так делает я не знаю.

ТОрмозит явно из-за огромного текста (чем больше текст, тем больше тормозит)

Как обойти? приму любые предложения. Сочувствие тоже приму.

Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 07.07.2009, 00:30
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

При сколки символах тормозит?
Какой IE?
Ответить с цитированием
  #3 (permalink)  
Старый 07.07.2009, 06:37
Аспирант
Отправить личное сообщение для olgatcpip Посмотреть профиль Найти все сообщения от olgatcpip
 
Регистрация: 09.04.2009
Сообщений: 63

ie 7
12574 сим достаточно заметно тормозит.
Ответить с цитированием
  #4 (permalink)  
Старый 07.07.2009, 13:05
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

У меня заметно тормозить начинает примерно при 500000. Для оптимизации можно вычислять элементы по id один раз и запоминать замыканием:
window.onload = function(){
	var v = document.getElementById('buyUserText'),
		c = document.getElementById('char_counter');
	v.onkeyup = function() {
		charCount(v, c);
	};
};

function charCount(v, c) {
	c.innerHTML = v.value.length;
}


Можно попробовать вместо innerText/innerHTML использовать nodeValue у первого текстового узла в char_counter. Только нужно не забыть создать его при onload. Можно charCount вызывать через нулевой timeout: http://javascript.ru/tutorial/events/timing.

Но толку от всей этой оптимизации никакого (у меня, по крайней мере), т. к. даже если убрать весь javascript, то тормозить меньше не становится. Тестировал еще в Chrome. Для input-а также никаких изменений, а вот для textarea очень неплохое улучшение.
Ответить с цитированием
  #5 (permalink)  
Старый 07.07.2009, 20:33
Аспирант
Отправить личное сообщение для olgatcpip Посмотреть профиль Найти все сообщения от olgatcpip
 
Регистрация: 09.04.2009
Сообщений: 63

К сожалению не помогло. там как раз из-за того, что на каждое слово событие повешано.
Скажу по секрету что это за сайт
toop.ru

зарегиться надо под покупателя, и попытаться купить ссылки. на этих этапах вам деньги не понадобятся, но увидите что за скрипт там такой.

Посмотрите. Мне кажется это именно из-за того, как ie обрабатывает события. если это не так, скажите, пожалуйста.
Ответить с цитированием
  #6 (permalink)  
Старый 08.07.2009, 00:55
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Не уверен что куда надо попал, много текста добавить не получается т. к. maxlength установлен и количество символов считается не от value.length , а просто увеличивается при нажатии клавиш. Даже если нажимать delete, то все равно увеличивается. И ошибки еще были:

Последний раз редактировалось Riim, 09.07.2010 в 21:33.
Ответить с цитированием
  #7 (permalink)  
Старый 08.07.2009, 01:29
Аспирант
Отправить личное сообщение для olgatcpip Посмотреть профиль Найти все сообщения от olgatcpip
 
Регистрация: 09.04.2009
Сообщений: 63

простите. это я так химичила.... сейчас уже прекратила.
я пробовала разнык варианты... не важно. сейчас уже не буду доделывать. вернула в более менее правильный вариант.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск