Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 28.05.2010, 14:54
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от mycoding
как лучше генерировать диалоговые окна
Через innerHTML. Среди каши из createElement потом не разберёшься. Проходили.
Ответить с цитированием
  #22 (permalink)  
Старый 28.05.2010, 14:56
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Есть другой вариант. В памяти лежит шаблон HTML - кода. Так же есть ссылки на необходимые элементы, которые нужно "подправить" при создании нового экземпляра шаблона. Таким образом, при создании экземпляра, клонируем нужный шаблон, правим (если надо) и добавляем в DOM одним разом - с помощью documentFragment, если добавляется всё в 1 место. Не уверен, что будет быстрее innerHTML, но удобнее - это факт. Так же не придётся создавать каждый элемент шаблона через createElement.
Ответить с цитированием
  #23 (permalink)  
Старый 28.05.2010, 15:01
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 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
Ответить с цитированием
  #24 (permalink)  
Старый 28.05.2010, 15:13
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от e1f
innerHTML может иногда подвести в ИЕ, при невалидном html.
Примеры? Иногда может подвести всё, что угодно, в любом браузере. И что имеется в виду под невалидным HTML?
Ответить с цитированием
  #25 (permalink)  
Старый 28.05.2010, 15:25
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Kolyaj, хм, а тема-то старовата, я и не заметил
Пример тот, что у ТС'а
Ответить с цитированием
  #26 (permalink)  
Старый 28.05.2010, 15:33
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от e1f
Пример тот, что у ТС'а
У ТС'а нет никаких примеров
Ответить с цитированием
  #27 (permalink)  
Старый 28.05.2010, 15:39
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

У ТС'а была проблема, которая и является примером "подвести в ИЕ"

UPD Тю, с чего это я решил, что Increazon -- ТС. Туплю, видимо

Последний раз редактировалось e1f, 28.05.2010 в 15:40. Причина: upd
Ответить с цитированием
  #28 (permalink)  
Старый 28.05.2010, 15:41
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Kolyaj
У ТС'а
Можно просто Влад
Ответить с цитированием
  #29 (permalink)  
Старый 28.05.2010, 15:44
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

ТС, B~Vladi то бишь, про IE вообще не упоминает. Может ты имеешь в виду
Сообщение от Increazon
Ты не видишь причин, а я охуевший сижу! Нужно менять текста в ячейке таблицы на джаваскрипт, в ИЕ7 пишет "Операция прервана. Не могу отобразить страницу." Так что поверь причины есть
Так неизвестно, что там Increazon наворотил. Если это то, о чём я думаю, то проблема не в innerHTML.
Ответить с цитированием
  #30 (permalink)  
Старый 28.05.2010, 15:54
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Kolyaj, да, я это и имел в виду И Вы правы -- тут innerHTML вроде не виноват -- скорее всего это вставка элементов JS-ом до load страницы.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
innerHTML and z-index ViZ0R Общие вопросы Javascript 5 12.08.2009 10:28
аналог getElementsByName MaxB jQuery 2 04.08.2009 19:39
двойной innerHTML Лесной_Белк Элементы интерфейса 13 21.05.2009 02:25
JS to innerHTML helgi AJAX и COMET 4 07.12.2008 20:50
ошибка с innerHTML Gekt0r Общие вопросы Javascript 15 21.08.2008 11:57