тормозит в 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, время: 19:57. |