28.05.2010, 14:54
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от mycoding
|
как лучше генерировать диалоговые окна
|
Через innerHTML. Среди каши из createElement потом не разберёшься. Проходили.
|
|
28.05.2010, 14:56
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Есть другой вариант. В памяти лежит шаблон HTML - кода. Так же есть ссылки на необходимые элементы, которые нужно "подправить" при создании нового экземпляра шаблона. Таким образом, при создании экземпляра, клонируем нужный шаблон, правим (если надо) и добавляем в DOM одним разом - с помощью documentFragment, если добавляется всё в 1 место. Не уверен, что будет быстрее innerHTML, но удобнее - это факт. Так же не придётся создавать каждый элемент шаблона через createElement.
|
|
28.05.2010, 15:01
|
|
Профессор
|
|
Регистрация: 03.04.2009
Сообщений: 1,263
|
|
Сообщение от mycoding
|
Хотел спросить, а как генерируются диалоги и другие виджеты в JQuery?
Через innerHTML или через createElements ?
Прочитал вот эту статью http://javascript.ru/optimize/javascript-performance
Т.е. обращение через createElements очень медленное будет по сравнению с innerHTML.
Например попробуем сделать диалоговое окно. Там надо как минимум раз 5 сделать элемент через createElements.
А в innerHTML всего один раз обратится к DOM и всё.
Ведь обращение к DOM очень медленное.
Подскажите, пожалуйста как лучше генерировать диалоговые окна, через какой метод и как это сделано в framework-ах?
|
mycoding, ну епсель-дропсель, неужели сложно открыть исходник? Пора уже сервис делать Let me read the source for you...
try {
for ( var i = 0, l = this.length; i < l; i++ ) {
// Remove element nodes and prevent memory leaks
if ( this[i].nodeType === 1 ) {
jQuery.cleanData( this[i].getElementsByTagName("*") );
this[i].innerHTML = value;
}
}
// If using innerHTML throws an exception, use the fallback method
} catch(e) {
this.empty().append( value );
}
UPD Kolyaj, innerHTML может иногда подвести в ИЕ, при невалидном html.
Последний раз редактировалось e1f, 28.05.2010 в 15:03.
Причина: upd
|
|
28.05.2010, 15:13
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от e1f
|
innerHTML может иногда подвести в ИЕ, при невалидном html.
|
Примеры? Иногда может подвести всё, что угодно, в любом браузере. И что имеется в виду под невалидным HTML?
|
|
28.05.2010, 15:25
|
|
Профессор
|
|
Регистрация: 03.04.2009
Сообщений: 1,263
|
|
Kolyaj, хм, а тема-то старовата, я и не заметил
Пример тот, что у ТС'а
|
|
28.05.2010, 15:33
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от e1f
|
Пример тот, что у ТС'а
|
У ТС'а нет никаких примеров
|
|
28.05.2010, 15:39
|
|
Профессор
|
|
Регистрация: 03.04.2009
Сообщений: 1,263
|
|
У ТС'а была проблема, которая и является примером "подвести в ИЕ"
UPD Тю, с чего это я решил, что Increazon -- ТС. Туплю, видимо
Последний раз редактировалось e1f, 28.05.2010 в 15:40.
Причина: upd
|
|
28.05.2010, 15:41
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от Kolyaj
|
У ТС'а
|
Можно просто Влад
|
|
28.05.2010, 15:44
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
ТС, B~Vladi то бишь, про IE вообще не упоминает. Может ты имеешь в виду
Сообщение от Increazon
|
Ты не видишь причин, а я охуевший сижу! Нужно менять текста в ячейке таблицы на джаваскрипт, в ИЕ7 пишет "Операция прервана. Не могу отобразить страницу." Так что поверь причины есть
|
Так неизвестно, что там Increazon наворотил. Если это то, о чём я думаю, то проблема не в innerHTML.
|
|
28.05.2010, 15:54
|
|
Профессор
|
|
Регистрация: 03.04.2009
Сообщений: 1,263
|
|
Kolyaj, да, я это и имел в виду И Вы правы -- тут innerHTML вроде не виноват -- скорее всего это вставка элементов JS-ом до load страницы.
|
|
|
|