|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.08.2012, 10:31 | #21 | |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Цитата:
Возьмем упрощенную модель. Она будет иметь всего два тега <body> <font> и по атрибуту к ним. Код:
Последний раз редактировалось _PROGRAMM_; 29.08.2012 в 10:36. |
|
29.08.2012, 10:37 | #22 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
Стилями CSS? Хм, нужно не просто знать CSS, нужно понимать как он взаимодействует с браузером.
Парсинг HTML и создание DOM более менее понятно, но там не просто ветви и их атрибуты. Все делится на мелкие части: Поля ввода(input) События Действия Я сам не до конца понимаю как оно связывает стиль с html кодом, может все же посмотрите исходники Firefox? Допустим текст: <td><div class="imagebutton" id="vB_Editor_QR_cmd_underline"><im g src="images/1070/editor/underline.gif" width="21" height="20" alt="Подчёркнутый" /></div></td> Ссылается на секцию CSS в таблице стилей: Код:
Следовательно HTML это последний элемент, с которым работает парсер, ему предшествуют, наверняка CSS и JS а может JS и CSS. Значит нужно иметь некий контейнер всех CSS таблиц стилей в виде списка, где кажый элемент это блок, например: Код:
Вообще мне больше интересен интерактивный процесс взаимодействия пользователя и модели DOM в реальном времени. И предшествующий этому процесс. Особенно взаимодействие каскадных стилей и корректировка HTML под него, во время формирования DOM, сразу применяется стиль в элементу, или на этапе отображения DOM пользователю? Последний раз редактировалось Человек_Борща; 29.08.2012 в 10:50. |
29.08.2012, 10:57 | #23 | |
Раздолбайских Дел
Старожил
Регистрация: 22.05.2009
Сообщений: 3,828
|
Цитата:
Alar, верни репу!
|
|
29.08.2012, 11:04 | #24 |
Раздолбайских Дел
Старожил
Регистрация: 22.05.2009
Сообщений: 3,828
|
Код:
п.с. Тут есть видео, как гекко рендерит страницу.
Alar, верни репу!
|
29.08.2012, 11:37 | #25 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
так давайте сначала, структура идет тем не менее примерно та же, что я писал, ну можно события вынести отдельно, а можно в атрибуты пихнуть.
CSS по сути есть набор атрибутов, применяемых к элементу по селектору. CSS применяется после построения/изменения DOM-структуры. JS, по-моему выполняется по месту(чистые вставки, не события) при рендеринге браузер использует информацию из элементов для построения оных. на самом деле, все не так сложно, как кажется. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
29.08.2012, 12:37 | #26 | |||||
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Цитата:
Цитата:
Цитата:
Для меня стал вопрос как осуществить это в плоской памяти? Код от Пепел Феникса: Код:
Цитата:
Цитата:
|
|||||
29.08.2012, 12:47 | #27 | |||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
можно и из массива сделать дерево, причем данные останутся в массиве. Цитата:
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|||
29.08.2012, 13:01 | #28 | ||
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Цитата:
Цитата:
|
||
29.08.2012, 13:10 | #29 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
массивы тут не эффективны, допустим у нас массив на 1000 элементов.
при добавлении 1001-го, нужно перераспределить память массива. и в итоге выйдет: 1)выделяем память на 1001 элемент.(итого память занята под 2001 элемент) 2)копируем все эти 1000 элементов, а учитывая иерархичность правим все указатели(если не на индексах оная).(это время) 3)только теперь освобождаем старую память. Цитата:
берем и добавляем поле с указателем на следующий элемент на том же уровне, на предыдущий, на родителя, на первый дочерний.(или индексы вместо указателей) и все, у нас есть иерархия, но данные в массиве. еще минус массива что если элемент был удален, то мы или должны хранить флаг занятости ячейки(при добавлении надо пробегать по массиву, хотя можно ускорить конечно)) или смещать все данные(долгое удаление) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
29.08.2012, 13:13 | #30 | ||
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
Цитата:
Цитата:
|
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
принцип работы SaveDialog | Form_13 | Общие вопросы Delphi | 1 | 20.02.2012 00:24 |
принцип работы ссылки | sbcd | Свободное общение | 0 | 03.06.2011 21:50 |
принцип работы программы | sasha14486 | Общие вопросы C/C++ | 1 | 22.05.2011 12:36 |
Принцип работы WH_KEYBOARD_LL | wwe2012 | Общие вопросы C/C++ | 5 | 01.04.2011 15:46 |
Принцип работы NS-серверов | Ivan_32 | Свободное общение | 1 | 31.10.2010 03:38 |