тормозит в 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! И что я только не пробовала. И чере дом элементы вставлять и менять местами вызовы функций (это от отчаяния)! :cray: Помогите пожалуйста. Я думаю, что это из-за механизма обработки событий IE браузером так. Но алгоритм по которому он так делает я не знаю. ТОрмозит явно из-за огромного текста (чем больше текст, тем больше тормозит) Как обойти? приму любые предложения. Сочувствие тоже приму. Спасибо |
При сколки символах тормозит?
Какой IE? |
ie 7
12574 сим достаточно заметно тормозит. |
У меня заметно тормозить начинает примерно при 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 очень неплохое улучшение. |
К сожалению не помогло. там как раз из-за того, что на каждое слово событие повешано.
Скажу по секрету что это за сайт toop.ru зарегиться надо под покупателя, и попытаться купить ссылки. на этих этапах вам деньги не понадобятся, но увидите что за скрипт там такой. Посмотрите. Мне кажется это именно из-за того, как ie обрабатывает события. если это не так, скажите, пожалуйста. |
Не уверен что куда надо попал, много текста добавить не получается т. к. maxlength установлен и количество символов считается не от value.length , а просто увеличивается при нажатии клавиш. Даже если нажимать delete, то все равно увеличивается. И ошибки еще были:
|
простите. это я так химичила.... сейчас уже прекратила.
я пробовала разнык варианты... не важно. сейчас уже не буду доделывать. вернула в более менее правильный вариант. |
Часовой пояс GMT +3, время: 00:39. |