Подключение к интернету и знакомство с веб. Просмотр web страниц выполняется программами – браузерами Почему некоторые страницы загружаются значительно медленнее других

01.08.2023

Сегодня, спустя десять лет после изобретения протокола HTTP, легшего в основу всемирной паутины, браузер представляет собой сложнейшее программное обеспечение, сочетающее в себе легкость в использовании и богатство возможностей.

Просмотр web-стpаниц осуществляется специальными программами просмотра – браузерами (browse – пролистывать, проглядывать книгу).

Если компьютер подключен к Интернету, то можно загрузить один из бpаузеpов и загрузить web-стpаницу с одного из серверов Интеpнет (при этом необходимо указать адрес сервера). А дальше активизируя ссылки можно попасть на web-стpаницу другого сервера и т. д.

Браузер не только открывает пользователю мир гипертекстовых ресурсов всемирной паутины. Он также может работать и с другими службами Сети, такими как FTP, Gopher, WAIS. Вместе с браузером на компьютер обычно устанавливается программа для пользования службами электронной почты (e-mail) и новостей (news). По сути дела, браузер является основной программой для доступа к службам Сети. Через него можно получить доступ практически к любой службе Интернет, даже если браузер не поддерживает работу с этой службой. Для этого используются специальным образом запрограммированные web-сервера, которые связывают всемирную паутину с данной службой Сети. Пример такого рода web-серверов – многочисленные бесплатные почтовые сервера с web-интерфейсом.

Сегодня существует множество программ-браузеров, созданных различными компаниями. Наибольшее распространение и признание получили такие браузеры, как Netscape Navigator и Internet Explorer. Именно эти браузеры составляют между собой основную конкуренцию, хотя стоит заметить, что эти программы во многом схожи. Это и понятно, ведь они работают по одинаковым стандартам – стандартам сети Интернет.

Навигация

Работа с браузером начинается с того, что пользователь набирает в адресной строке (Адрес ) URL того ресурса (см. рис. 6), к которому он хочет получить доступ, и нажимает клавишу Enter.

Рис. 6. Часть окна с адресной строкой и адресом

Браузер посылает запрос на указанный сервер Сети. По мере того, как с сервера приходят элементы указанной пользователем web-страницы, она постепенно появляется в рабочем окне браузера (см. рис. 7). Процесс получения элементов страницы с сервера отображается в нижней «статусной» строке браузера.

Рис. 7. Часть окна со статус строкой

Содержащиеся в полученной web-странице текстовые гиперссылки, как правило, выделяются цветом, отличным от цвета остального текста документа, и подчеркиваются. Ссылки, указывающие на ресурсы, которые пользователь еще не просматривал, и ссылки на уже посещенные ресурсы обычно имеют разный цвет. Изображения также могут функционировать как гиперссылки. Независимо от того, текстовая ссылка или графическая, если навести на нее курсор мыши, его форма изменится. Одновременно в статусной строке браузера появится адрес, на который указывает ссылка.

При нажатии на гиперссылку браузер открывает в рабочем окне ресурс, на который она указывает, при этом предыдущий ресурс из него выгружается. Браузер ведет список просматриваемых страниц и пользователь при необходимости может вернутся назад по цепочке просмотренных страниц. Для этого нужно щелкнуть мышкой на кнопке «Назад» («Back» ) в меню браузера, – и он вернется к странице, которую вы просматривали до того, как открыли текущий документ.

Каждый раз, когда вы будете нажимать на эту кнопку, браузер будет возвращаться на один документ назад в списке посещенных документов. Если вдруг вы вернулись слишком далеко назад, воспользуйтесь кнопкой «Вперед» («Forward» ) меню браузера. Она поможет вам переместиться вперед по списку документов.

Кнопка «Стоп» («Stop» ) остановит загрузку документа. Кнопка «Обновить» («Reload» ) дает возможность перезагрузить текущий документ с сервера.

Браузер в своем окне может показать лишь один документ: для показа другого документа он выгружает предыдущий. Гораздо удобнее одновременно работать в нескольких окнах браузера. Открытие нового окна осуществляется с помощью меню: Файл – Создать – Окно (или комбинацией клавиш Ctrl+N ).

Что может Интернет

Подключение к Сети

Браузер – окно в Интернет

Использование браузеров


В наш стремительный век все большее значение приобретают информация и обмен ею. Многие аналитики считают, что сейчас некоторые страны вступили в так называемую постиндустриальную эпоху, и называют ее также «информационной эпохой», когда на первом месте в жизни общества стоит информация, а не общественное производство. Так это или нет, сказать сложно, споры на эту тему оставим политикам и социологам. Ясно одно: обмен информацией сегодня приобрел большое значение. Наличие на планете огромного парка компьютеров упрощает эти процессы. Еще больше их упрощает Интернет.

Называют его по-разному. Кроме традиционного названия «Интернет» иногда используют англоязычное World Wide Web – Всемирная паутина, иногда просто говорят «Веб» или «Сеть», иногда используют жаргонизмы «Нет» или «И-нет». По своей сути Интернет – это сеть, объединяющая отдельные компьютеры и локальные компьютерные сети по всему земному шару, благодаря которой можно обмениваться информацией между этими самыми компьютерами.

Что может Интернет

Может Глобальная сеть, кстати, очень и очень многое. Начнем с того, что любая информация (текстовая, графическая, звуковая или видео) может быть представлена в цифровом виде, то есть пригодном для хранения и обработки с помощью компьютера. Интернет, как уже было сказано, позволяет компьютерам обмениваться любыми данными. Следовательно, благодаря Интернету пользователь может получать и принимать любую информацию.

Таким образом, с помощью Интернета можно делать следующее.

Отправлять друзьям, родственникам, знакомым (а также незнакомым) людям и получать от них электронные письма, которые почти такие же, как и обычные, написанные на листе бумаги, но только электронные их варианты набраны на клавиатуре компьютера. При этом скорость доставки письма – несколько секунд, максимум – минут, причем неважно, где проживает адресат: в соседней квартире или на соседнем континенте. Кстати, плата за такое письмо обычно равняется плате за проведенное в Интернете время, потраченное на отправку или получение почты. При этом не требуется никаких конвертов, марок и прочей атрибутики, присущей традиционной почте.

Общаться в режиме реального времени: вы написали сообщение – ваш собеседник его тут же получил, он вам ответил – и вы уже читаете его ответ. Обеспечивается эта возможность самыми разнообразными способами: чаты, форумы, ICQ и т. д. Обо всем этом будет рассказано в книге ниже. Пока поговорим подробнее о форумах. Став посетителем одного из форумов, можно не только принять участие в обсуждении какой-то темы, но и самому задать вопрос другим участникам, например: «Кто знает, как правильно гнать самогон?» Будьте уверены, найдется-таки знаток, который поможет отыскать ответ или сам подскажет его, главное, чтобы тематика форума была соответствующей.

Разговаривать в Интернете, как по обычному телефону, то есть с помощью голоса. Кроме того, собеседнику можно транслировать изображение с видеокамеры, подключенной к вашему компьютеру. В результате получается «видеотелефон». Плата за такую услугу, как правило, нулевая, то есть оплачивать придется только время подключения к Интернету или объем трафика. Разумеется, для этого нужно будет обзавестись как минимум микрофоном, подключаемым к компьютеру, а как максимум – еще и веб-камерой.

Знакомиться с новыми людьми на огромном количестве различных сайтов интернет-знакомств. При этом цели знакомства могут быть самыми разными: и простое общение, и знакомство в реальной жизни, и даже создание семьи. Кстати, пользователи таких сервисов про общение вне Интернета говорят «в реале», а общение в Сети иногда называют «в виртуале».

Искать (и находить!) нужную информацию: последние новости, прогноз погоды, сообщения о вакансиях или сведения, необходимые для написания рефератов, курсовых и других научных работ. К услугам пользователей Интернета многочисленные поисковые системы, которые позволяют найти в недрах Всемирной паутины именно тот кусочек информации, который в данный момент нужнее всего.

Загружать на свой компьютер различные файлы: игры, программы, рисунки, музыку и фильмы. Кроме того, можно обмениваться своими ценными файлами с другими пользователями Сети.

Совершать покупки, не выходя из дома и даже не вставая из-за своего компьютера. Достаточно зайти на сайт одного из интернет-магазинов, оформить заказ и дождаться доставки приобретенного товара.

Производить платежи. В эпоху Интернета это стало так же просто, как отсчитывать наличные в ближайшем супермаркете. Даже еще проще, ведь для этого не нужно выходить из дома. Причем платить можно необязательно за покупки. Можно просто перечислить долг другу, который в свое время выручил вас, одолжив денег, а теперь живет за несколько сотен или тысяч километров, или оказывать материальную помощь родителям. Можно оплачивать коммунальные услуги или услуги за использование того же Интернета.

Посредством Интернета деньги можно не только тратить, но и зарабатывать. Способов – великое множество. Можно создать страницу в Интернете и зарабатывать на рекламе, которая там будет публиковаться. Можно продавать свои услуги, оказание которых возможно с помощью Интернета. Например, создание сайтов, переводы текстов, написание статей и многое-многое другое.

Это отнюдь не полное перечисление возможностей Глобальной сети, однако основные моменты здесь упомянуты. В целом же с помощью Интернета можно сделать практически все то же самое, что вы делаете в обычной жизни. Только немножко больше. И быстрее. И лучше. И удобнее…

Подключение к Сети

Подключиться к Интернету вообще-то несложно. Но тут нужно учесть некоторые моменты. Прежде всего необходимо иметь следующие вещи.

Компьютер – подразумевается, что если вы читаете эту книгу и у вас есть интерес к Интернету, то и компьютер у вас имеется.

Модем – аббревиатура слов «модулятор-демодулятор» – это такое специальное устройство, которое преобразует информацию, поступающую от компьютера, в сигналы, пригодные для передачи по проводной связи (как правило, телефонной линии). Модем выполняет и обратное преобразование (сигналы из линии связи – информация для компьютера). Данное устройство входит в состав далеко не всех компьютеров, поэтому если у вас его нет, то следует позаботиться о его приобретении. В некоторых случаях он может поставляться фирмой-поставщиком услуг Интернета.

Линию связи – обычно это телефонный провод.

Желание подключиться к Интернету.

Финансы для оплаты соответствующих услуг.

Договор с провайдером (компания, оказывающая услуги по подключению к Интернету) – иногда такой договор существует в устной форме, или вообще не заключается, или действует в рамках ранее заключенного договора об оказании услуг связи.

Следует сделать оговорку. Вполне можно подключиться ко Всемирной паутине, не имея многих из вышеперечисленных вещей, например с помощью мобильного телефона. Однако в этой книге рассматриваются исключительно традиционные способы взаимодействия с Сетью, суть которых – подключение к Интернету с помощью компьютера.

Итак, допустим, у вас есть все необходимое для подключения к Сети. Дело за малым: сначала нужно создать новое подключение, для чего необходимо сделать следующее.

1. Выполнить команду Пуск > Настройка > Панель управления – откроется окно Сетевые подключения .

2. В левой части данного окна выбрать параметр Создание нового подключения – откроется окно Мастер новых подключений , в котором нужно нажать кнопку Далее , чтобы появилось следующее окно мастера.

3. Чтобы выбрать тип сетевого подключения, в данном окне необходимо установить переключатель в требуемое положение. Оставьте предлагаемый по умолчанию вариант Подключить к Интернету и нажмите кнопку Далее .

4. В открывшемся окне необходимо выбрать способ подключения к Интернету, и здесь уже возможны варианты. Вполне вероятно, что ваш провайдер будет представлен в предложенном списке поставщиков услуг Интернета или предоставит вам установочный диск. Однако рассмотрим создание подключения вручную, установив переключатель в положение Установить подключение вручную и нажав кнопку Далее , – появится следующее окно мастера.

5. Рассмотрим наиболее типичный пока способ подключения – модемный, установив в данном окне переключатель в положение Через обычный модем и нажав кнопку Далее .

6. В следующем окне в поле Имя поставщика услуг следует указать название интернет-провайдера, можно написать любое слово, оно не имеет значения. Однако нужно учесть, что указанным вами словом будет называться созданное подключение. Написав имя провайдера, нажмите кнопку Далее .

7. В поле Номер телефона необходимо ввести номер, по которому вы будете дозваниваться до провайдера. Данный номер должен предоставить сам провайдер при заключении договора с ним. Введя номер и нажав кнопку Далее , укажите имя пользователя (логин), а также пароль для доступа к Интернету, которые также должны быть предоставлены интернет-провайдером. Нажатие кнопки Далее откроет завершающее окно Мастера новых подключений .

8. В последнем окне мастера не нужны никакие специальные настройки. Можно лишь установить флажок Добавить ярлык подключения на рабочий стол , чтобы в дальнейшем облегчить подключение к Интернету: достаточно будет дважды щелкнуть на значке подключения на Рабочем столе .

Теперь можно осваивать Глобальную сеть. Чтобы подключиться к Интернету, следует выполнить команду меню Пуск > Панель управления > Сетевые подключения и выбрать требуемое подключение. Двойной щелчок кнопкой мыши на значке подключения на Рабочем столе приведет к тому же результату и откроет окно подключения (рис. 1.1).

Рис. 1.1. Окно подключения к Интернету


В данном окне необходимо нажать кнопку Вызов и дождаться, пока модем наберет номер и установит соединение.

Чтобы отключиться от Интернета, нужно щелкнуть правой кнопкой мыши на значке подключения

в области уведомлений (рядом с часами) и во всплывающем контекстном меню выбрать пункт Разъединить .

Браузер – окно в Интернет

Подключиться к Интернету – только полдела. Для путешествий по Глобальной сети понадобится браузер – программа, позволяющая совершать просмотр веб-страниц, переход по ним, их сохранение и пр. Например, в состав операционных систем семейства Windows входит встроенный браузер Internet Explorer (рис. 1.2), который сегодня является самым популярным в силу распространенности операционной системы Windows. Чтобы запустить Internet Explorer, нужно выполнить команду Пуск > Все программы > Internet Explorer .


Рис. 1.2. Браузер Internet Explorer


Кроме браузера Internet Explorer существуют и другие популярные и заслуживающие внимания браузеры, такие как Mozilla Firefox и Opera.

Все программы для навигации в Интернете обладают рядом общих черт, а также имеют свои отличия от конкурентов. Кроме того, каждый браузер имеет свои достоинства и недостатки. Чтобы немного прояснить ситуацию, приведем основные плюсы и минусы каждой из упомянутых программ.

Internet Explorer

Достоинства:

Не нужно искать и устанавливать этот браузер, он уже установлен вместе с операционной системой;

Множество сайтов оптимизировано именно под Internet Explorer, в других браузерах они некорректно отображаются или вовсе отказываются работать, требуя просматривать сайт с использованием Internet Explorer;

В последней, седьмой версии этого браузера использован новый модный и красивый интерфейс, а также позаимствованы некоторые полезные функции других браузеров.

Недостатки:

Широкая распространенность браузера привела к тому, что множество вредоносных программ используют различные уязвимые места Internet Explorer; как следствие, безопасность работы в Интернете с использованием этого браузера оставляет желать лучшего;

Более низкая скорость работы по сравнению с конкурентами;

Отсутствие многостраничного режима просмотра, имеющегося в Firefox и Opera. Правда, в последней версии Internet Explorer этот недостаток устранен, но большинство поклонников самого распространенного браузера пока используют его предыдущую, шестую версию.

Достоинства:

Поддержка мультистраничного режима;

Поддержка различных платформ, то есть браузер Mozilla Firefox (http://www.mozilla-europe.org/ru/products/firefox/ ) (рис. 1.3) может работать не только с Windows, но и с другими операционными системами;


Рис. 1.3. Браузер Mozilla Firefox


Поддержка плагинов и тем оформления, существующих в огромных количествах;

Блокировка нежелательных всплывающих окон;

Наличие строки поиска, что позволяет искать необходимую информацию в Интернете прямо из браузера, не заходя на сайт поисковой системы.

Недостатки:

Довольно высокая требовательность к ресурсам компьютера;

Не очень удобный менеджер закачек, что, впрочем, решается установкой дополнений;

Как и у всех альтернативных браузеров, у Mozilla Firefox некорректное отображение веб-страниц, оптимизированных под Internet Explorer.

Достоинства:

Достаточно удобный интерфейс браузера (http://opera.com/ ) (рис. 1.4), не перегруженный элементами управления и в то же время оснащенный всем необходимым;


Рис. 1.4. Браузер Opera


Как и в Mozilla Firefox, в Opera блокируются нежелательные всплывающие окна, а также есть поддержка многостраничного режима и строка поиска;

Возможность масштабирования веб-страниц;

Поддержка виджетов – небольших программных модулей, порой достаточно интересных, иногда – совершенно бесполезных.

Недостатки:

Отсутствие встроенной справки – справочная информация загружается с сайта программы;

Отсутствие поддержки плагинов;

Отсутствие поддержки ActiveX – технологии, позволяющей приложениям взаимодействовать между собой; этот недостаток одновременно является и достоинством, так как использование именно этой технологии в Internet Explorer сделало его достаточно уязвимым для злоумышленников.

Сказать однозначно, какой браузер лучше, а какой хуже, нельзя. Каким из них пользоваться, каждый должен решать для себя самостоятельно, а для этого нужно попробовать в работе все браузеры.

Кроме вышеперечисленных популярных программ для просмотра веб-страниц есть и другие, менее распространенные:

Netscape Navigator – основан на коде Mozilla Firefox;

Maxthon – по сути, программная оболочка для Internet Explorer;

Safari – основан на коде Konqueror;

Konqueror – средство управления файлами в операционных системах семейства Linux, выполняющий также роль браузера;

Galeon – еще один браузер для Linux, характеризующийся простотой и взявший в качестве девиза слова: the web, only the web – веб и только веб;

Epiphany – проект, в свое время отделившийся от Galeon и поэтому имеющий с ним много общего;

Kazehakase – японская разработка для Linux;

Charon – браузер для экзотической операционной системы Inferno;

Arachne – полноэкранный графический браузер для операционных систем, совместимых с MC-DOS;

K-Meleon – браузер для операционной системы Windows, пытающийся составлять конкуренцию трем популярным браузерам.

Использование браузеров

Как уже упоминалось, основное предназначение браузера – просмотр веб-страниц, поэтому стоит отдельно поговорить об особенностях навигации в Интернете с использованием браузеров. Начнем с основных элементов управления, без которых нельзя представить ни одну программу навигации в Сети, взяв для примера Internet Explorer. Во всех остальных браузерах описываемые действия совершаются схожим образом, если это не будет оговорено отдельно.

Чтобы начать путешествие по просторам Сети, нужно ввести адрес интересующего сайта в строке адреса (рис. 1.5).

Рис. 1.5. Меню, панель инструментов и строка поиска в браузере Internet Explorer


Адресная строка браузера находится под панелью инструментов. Строго говоря, адрес сайта, как правило, начинается с сочетания http:// , однако если это сочетание не написать, то браузер сам добавит его к введенному пользователем адресу. Указав интересующий адрес, нужно нажать клавишу Enter на клавиатуре или кнопку Переход на панели инструментов (в браузере Opera это кнопка Пуск , в Mozilla Firefox – кнопка со стрелкой). Браузер сразу начнет загрузку запрашиваемой страницы.

Совет

Браузер запоминает все запрашиваемые адреса, и в дальнейшем для перехода на страницу, адрес которой вводился ранее, достаточно выбрать его в раскрывающемся списке адресной строки, вместо того чтобы вводить адрес каждый раз заново.

Когда страница загрузится, можно искать на ней нужную информацию или воспользоваться ссылками. Ссылки, как правило, выделены цветом, отличным от цвета основного текста страницы. При наведении на ссылку указателя мыши он приобретает вид руки с вытянутым указательным пальцем, а сама ссылка меняет цвет и обычно становится подчеркнутой (рис. 1.6).


Примечание

Указатель может принимать и другую форму, а ссылка может не выделяться цветом и подчеркиванием – тут все зависит от настроек компьютера и конкретного веб-сайта.

Если щелкнуть кнопкой мыши на ссылке, то откроется интересующая страница, на которой, в свою очередь, также можно нажимать интересующую ссылку и т. д. В связи с этим стоит сказать о назначении еще некоторых элементов управления браузеров. Это кнопки Назад и Вперед (в Mozilla Firefox это На предыдущую страницу и На следующую страницу соответственно). Кнопка Назад возвращает на страницу, с которой пользователь пришел по ссылке на текущую. Использовать данную кнопку можно много раз подряд, вплоть до возврата на страницу, с которой начиналось путешествие по Интернету. У кнопки Вперед – обратная задача: она вернет пользователя на страницу, на которой перед этим была нажата кнопка Назад .

Комбинация клавиш Alt+ Назад, а сочетание клавиш Alt+ > – возможностям кнопки Вперед . Кроме того, вместо кнопки Назад можно использовать клавишу Backspace .

Упомянем также еще о некоторых элементах управления в браузерах. Это кнопки Обновить и Остановить (в Mozilla Firefox они называются Обновить текущую страницу и Остановить загрузку страницы , а в Opera эти функции выполняет одна кнопка, которая в зависимости от ситуации называется Обновить или Остановить ).

Кнопка Остановить прерывает дальнейшую загрузку страницы, что может пригодиться, когда загружается большая веб-страница и это занимает достаточно длительное время, а вся интересующая информация на этой странице уже загрузилась. Такой подход позволяет сэкономить трафик (объем переданной и полученной информации), что особенно полезно, если услуги Интернета оплачиваются не за время, проведенное в Сети, а за количество полученной/переданной информации.

Кнопка Обновить используется при просмотре страниц, информация на которых часто изменяется, например на форумах, чатах, сайтах знакомств, новостных сайтах. Пока пользователь просматривает страницу, ее содержимое могло измениться, например появилось новое сообщение. Нажатие кнопки Обновить инициирует повторную загрузку страницы с уже изменившимися сведениями на ней.

Умение пользоваться вышеперечисленными элементами управления – вполне достаточное для начала условие, чтобы бродить по просторам Интернета, но этим мы не ограничимся.

Дополнительные возможности браузеров

Разумеется, возможности веб-браузеров не заканчиваются просмотром сайтов и переходом со страницы на страницу. Программы для навигации в Интернете могут гораздо больше, о чем сейчас и поговорим. При этом если это не оговорено отдельно, то описываемые возможности присущи всем рассматриваемым браузерам.

Сохранение страниц

Практически любой современный браузер позволяет сохранять открытые веб-страницы на жесткий диск компьютера. Это может пригодиться, если в Интернете найдена какая-то интересная информация, которую можно будет использовать в дальнейшем, не подключаясь к Сети. Кроме того, для дальнейшей работы с этой информацией может потребоваться другой компьютер, который и вовсе не подключен к Интернету. Например, на работе есть компьютер с выходом в Интернет, а дома пока такого достижения цивилизации нет или пользователь посещает Сеть из интернет-кафе, компьютерного клуба и т. п.

Сохранить страницу, загруженную из Сети, так же просто, как сохранить, скажем, документ, созданный в текстовом редакторе, или любой другой файл. Для сохранения страницы в Internet Explorer нужно выполнить команду Файл > Сохранить как , указать, где именно сохранить нужный файл, и нажать кнопку Сохранить .

При сохранении веб-страниц существуют некоторые особенности, о которых стоит упомянуть. В частности, большое значение имеет формат сохранения. По умолчанию браузеры, как правило, предлагают сохранить страницу в формате HTML или HTM, что не всегда удобно, так как рисунки, содержащиеся на странице, будут сохранены в отдельной папке. В свою очередь, это усложняет процесс копирования и переноса сохраненной информации на другой компьютер.

Гораздо удобнее воспользоваться форматом MHT, позволяющим сохранить все оформление страницы вместе с рисунками в одном файле. Для этого при сохранении в раскрывающемся списке Тип файла нужно выбрать пункт Веб-архив, один файл (*.mht) . Таким образом, на винчестере будет файл, содержащий всю информацию и оформление с открытой веб-страницы. Согласитесь, что работать с одним файлом в дальнейшем будет значительно удобнее, чем с несколькими.

Возможность сохранения веб-страницы в один файл предоставляет также браузер Opera. Mozilla Firefox такого делать не умеет.

Журнал работы

Еще одна полезная возможность браузера – просмотр журнала работы (рис. 1.7). В Opera, в отличие от двух других рассматриваемых здесь браузеров, журнал работы называется История .

Рис. 1.7. Просмотр журнала в браузере Internet Explorer


Обратиться к журналу бывает полезно, если вы помните, что посещали вчера (позавчера, на прошлой неделе и т. д.) какой-то интересный ресурс, но не можете вспомнить его адрес. При просмотре журнала наверняка найдется требуемый адрес.

Удалить из журнала запись о посещенной странице можно, щелкнув на ней правой кнопкой мыши и выбрав в контекстном меню пункт Удалить .

Управление закладками

Для удобной организации работы в Интернете полезно использовать закладки. Чтобы не искать каждый раз адреса часто посещаемых страниц в журнале и не вводить эти адреса вручную, целесообразно добавить адреса наиболее интересных веб-ресурсов в закладки (в Internet Explorer это Избранное ). В дальнейшем, чтобы попасть на нужный сайт, достаточно будет выбрать его в созданном списке закладок.

Совет

Для быстрого добавления открытой страницы в список закладок удобно использовать правую кнопку мыши.

Для работы с закладками в Opera и Firefox существует менеджер закладок, который вызывается командой Закладки > Управление закладками . В браузере Internet Explorer управлять закладками можно в окне Упорядочить избранное , открываемом командой Избранное > Упорядочить избранное .

Работа с этими инструментами интуитивно понятна, поэтому подробно останавливаться на ней не будем.

Особенности браузера Mozilla Firefox

Помимо общих для всех браузеров возможностей Mozilla Firefox обладает некоторыми особенностями, о которых следует упомянуть.

Расширения – добавляют новые возможности этому браузеру. Они могут добавить все, что угодно: от кнопки на панели управления до совершенно новой функциональной возможности. Расширения позволяют настраивать приложение в соответствии с персональными запросами каждого пользователя. Например, они помогают блокировать нежелательные всплывающие окна, рекламу, более эффективно искать информацию в Интернете и загружать файлы.

Темы – изменяют внешний вид Mozilla Firefox. Они позволяют менять вид и интерфейс браузера, настраивая их в соответствии со вкусом пользователя. Тема может изменять внешний вид кнопок или полностью поменять внешний вид Mozilla Firefox.

Темы и расширения в данном браузере обобщенно называются Дополнения . агрузить и установить их можно с сайта Mozilla Firefox или с сайтов сторонних разработчиков.

Особенности браузера Opera

Браузер Opera также обладает своими особенностями и дополнительными возможностями.

Встроенный почтовый клиент – программа для работы с электронной почтой. Подробно о работе с электронной корреспонденцией см. в гл. 4. Здесь отмечу лишь, что Opera имеет встроенный почтовый клиент, возможности которого, правда, далеки от возможностей специализированных программ, о для новичка их вполне достаточно.

Управление мышью. Помимо выполнения стандартных функций (щелчки на элементах управления и ссылках), мышь в браузере Opera можно использовать и нетрадиционно. Удерживая правую кнопку мыши нажатой и перемещая ее определенным образом, можно выполнять некоторые часто используемые команды браузера, например обновление страницы, возврат на предыдущую страницу, закрытие текущей и т. д.

Управление голосом – довольно нетрадиционный способ взаимодействия человека и компьютера. Opera позволяет выполнять большинство команд, росто произнося их в микрофон. Разумеется, для этого нужен сам микрофон, подключенный к звуковой карте компьютера. Удобно, конечно, однако Opera понимает только англоязычные команды.

Масштабирование веб-страниц – уникальная функция, характерная только для браузера Opera. Например, если интернет-страница не помещается по ширине на экране, то браузер может сам перестроить ее структуру так, что ширины экрана хватит для полноценного отображения содержимого страницы. Кроме того, доступно масштабирование страницы в пределах 20–1000 %.

Быстрый набор – некое подобие закладок, но выполненное более удобно и наглядно и работающее независимо от самих закладок. Функция Быстрый набор (рис. 1.8) появилась в Opera начиная с версии 9.2. При запуске браузера появляется окно с девятью большими кнопками, каждой из которых можно назначить вызов той или иной страницы, при этом на кнопке появится миниатюрное изображение этой страницы.


Рис. 1.8. Быстрый набор в браузере Opera


Виджеты (рис. 1.9) – некое подобие расширений в Mozilla Firefox, только менее функциональное. Виджеты позволяют, например, показывать погоду, транслировать изображение с веб-камер, осуществлять поиск и др.


Рис. 1.9. Пример виджета в браузере Opera, трансляция с веб-камеры


В данной главе было рассмотрено понятие «Интернет», его возможности, способ подключения к Сети, а также основные и некоторые дополнительные функции браузеров. Однако это лишь небольшая часть того, что может Всемирная паутина.

Здравствуйте уважаемые начинающие веб-мастера.

Ни для кого не секрет, что работа с сайтом ведётся в браузере.

Это настолько обыденно, что обычно веб-мастера, в том что касается браузера, заостряют внимание только на кроссбраузерности свойств языков программирования.

Однако браузер — основной инструмент компьютера, имеющий свои настройки, дополнительные модули и различные возможности, ощутимо облегчающие труд веб-мастера.

Это только на первый взгляд браузер прост, как дважды два.

В действительности же у него, как и всякой солидной программы, много опций и нюансов в их настройке, о чём и пойдёт речь в этом курсе.

Из собственного опыта: не зная о свойствах кеша браузера Chrome, я одно время долго не мог понять, почему в WordPress у меня не обновлялись изображения при их замене — в результате тормоз в работе.

А вопрос-то выеденного яйца не стоил, да если-б сразу знать.

Почему Chrome. Потому, что не кривя душой — это самый продвинутый браузер на сегодняшний день.

Созданный в Google он отвечает абсолютно всем требованиям как в декстопной, так и в мобильных версиях, и имеет множество модулей, которые можно как подключать, так и отключать, тем самым облегчая и ускоряя работу.

Кроме того Chrome плотно интегрирован во все сервисы Google, что является огромным плюсом при работе с сайтом, а именно его анализом и продвижением.

Установка и основные настройки браузера

Набираем в поисковой строке Скачать Chrome, выбираем нужную опцию, для мобил или для компьютера, нужную ОС и нажимаем Скачать.

Появится окно с условиями и двумя чекбоксами с галочками по умолчанию.

Галочки можно убрать, а можно и оставить. Я бы оставил первую и убрал вторую, уже на этом этапе облегчая браузер.

Установка произойдёт стандартно, как у всех программ, после чего откроется окно, в котором вам предложат войти в Chrome.

Вообще-то браузер уже готов к работе и можно никуда не входить, а просто начать использовать его по назначению, но это не наш путь, так как нам нужно получить к нему полный доступ.

И не только для этого. Аккаунт Google это и Google Analytiсs — аналитика пользовательских показателей сайта, и Search Console — аналитика тех. характеристик сайта и PageSpeed Insights — аналитика мобильных версий.

Создание аккаунта сотни раз описано в интернете, так что рассматривать его тоже не будем.

В процессе создания аккаунта у вас появится логин и адрес электронной почты @gmail.com, которые и нужно будет использовать для входа в браузер.

Возможно Chrome у вас уже установлен и давно с успехом работает.

В таком случае для входа вам нужно щёлкнуть по трём точкам в конце поисковой строки, в открывшемся меню выбрать Настройки, и в самом верху выбрать Войти в Chrome.

Вход выполнен, зачем это было нужно рассмотрим по ходу курса, а так как пока мы в настройках, пройдёмся по тому что доступно и без входа.

Кому-то возможно это и пригодится.

1. При запуске открывать.

Здесь можно выбрать то, что будет открывать браузер при запуске.

Это может быть

а) Новая вкладка — пустая страница поисковика.

б) Ранее открытые вкладки — те страницы, которые были открыты в тот момент, когда вы закрыли браузер.

в) Заданные страницы — вы можете добавить адрес страницы, которая будет открываться при запуске браузера.

2. Внешний вид.

Здесь можно добавить фоновую картинку и Всегда показывать панель закладок. Закладки будут показываться под строкой поиска.

Здесь выбирается поисковик, который вам больше по душе.

В следующем пункте Браузер по умолчанию, ничего разрешать и выбирать не нужно, так как мы и так работаем с Chrome, а значит по умолчанию стоит он.

Вообще-то, если Вы хотите постоянно пользоваться другим браузером, а Chrome держать про запас, то укажите тот, который будет открываться при запуске.

4. Пользователи. Здесь может заинтересовать пункт Импорт закладок.

Если у вас ранее стоял другой браузер, то наверняка в нём собралось какое-то количество закладок, которые вам необходимо сохранить.

Для этого нажмите Импортировать закладки и настройки и выберите браузер, из которого нужно перенести закладки.

Панель закладок, в которой тоже очень много интересных моментов, разберём в следующей статье, когда будем говорить об интерфейсе Ghrome/

Чекбоксы в этом пункте пока оставляем пустыми.

В этой статье рассмотрим некоторые настройки из него, которые можно сделать сразу, а за остальными вернёмся в следующих статьях, по мере получения дополнительных знаний.

1. Личные данные. Здесь пока включим только подсказки для ускорения ввода адресов и загрузки страниц.

2. Пароли и формы. Оставляем обе галочки. Первая позволит на писать постоянно адрес, имя и т.п. в формах, а с помощью второй у вас всегда будет выбор, сохранить пароль для сайта в браузере или нет.

Я, например, никогда не сохраняю в браузере пароли сайтов, где есть моя конфиденциальная информация.

3. Вид страницы. Настраивается размер и вид шрифта.

Выбираем то, что приятнее нашему глазу и нажимаем Готово.

Сеть пока пропускаем.

4. Языки. Ставим галочку Предлагать перевод и смотрим Изменить языковые настройки.

Если нажать Добавить, то вы сможете выбрать язык из огромного предлагаемого списка и просматривать интернет на удобном для вас языке.

5. Скачанные файлы. Здесь показано куда будет загружен скачанный файл. Это необходимо для того, что-бы не искать файл после скачивания по всему компьютеру.

По умолчанию в Chrome определена папка Загрузки, но можно выбрать любую другую папку компьютера, если нажать Изменить.

На этом с первичными настройками закончим.

В следующей статье начнём работать с интерфейсом браузера. Там очень много нюансов и сюрпризов от разработчиков.

А здесь, думаю, будет не лишним список горячих клавиш.

Ctrl + N - новое окно.

Ctrl + T - новая вкладка.

Ctrl + Shift + N - новое окно в режиме инкогнито.

Ctrl + клик левой кнопки мыши.

Ctrl + Shift + T - восстановление последней закрытой вкладки (до 10 вкладок).

Ctrl + W - закрытие активной вкладки или всплывающего окна.

Ctrl + Tab - переключение между вкладками.

F5 или Ctrl + R - обновление страницы.

Esc - отмена загрузки страницы.

Ctrl + F - поиск текста на открытой странице.

Ctrl + D - сохранение закладки для текущей страницы.

F11 - Клавиша входа и выхода из полноэкранного режима.

Ctrl + плюс и Ctrl + минус - изменение масштаба страницы.

Ctrl + 0 - стандартный масштаб страницы.

Home - переход в начало страницы.

End - переход в конец страницы.

How the web works provides a simplified view of what happens when you view a webpage in a web browser on your computer or phone.

This theory is not essential to writing web code in the short term, but before long you"ll really start to benefit from understanding what"s happening in the background.

Clients and servers

Computers connected to the web are called clients and servers . A simplified diagram of how they interact might look like this:

  • Clients are the typical web user"s internet-connected devices (for example, your computer connected to your Wi-Fi, or your phone connected to your mobile network) and web-accessing software available on those devices (usually a web browser like Firefox or Chrome).
  • Servers are computers that store webpages, sites, or apps. When a client device wants to access a webpage, a copy of the webpage is downloaded from the server onto the client machine to be displayed in the user"s web browser.
The other parts of the toolbox

The client and server we"ve described above don"t tell the whole story. There are many other parts involved, and we"ll describe them below.

For now, let"s imagine that the web is a road. On one end of the road is the client, which is like your house. On the other end of the road is the server, which is a shop you want to buy something from.

In addition to the client and the server, we also need to say hello to:

  • Your internet connection : Allows you to send and receive data on the web. It"s basically like the street between your house and the shop.
  • TCP/IP : Transmission Control Protocol and Internet Protocol are communication protocols that define how data should travel across the web. This is like the transport mechanisms that let you place an order, go to the shop, and buy your goods. In our example, this is like a car or a bike (or however else you might get around).
  • DNS : Domain Name Servers are like an address book for websites. When you type a web address in your browser, the browser looks at the DNS to find the website"s real address before it can retrieve the website. The browser needs to find out which server the website lives on, so it can send HTTP messages to the right place (see below). This is like looking up the address of the shop so you can access it.
  • HTTP : Hypertext Transfer Protocol is an application protocol that defines a language for clients and servers to speak to each other. This is like the language you use to order your goods.
  • Component files : A website is made up of many different files, which are like the different parts of the goods you buy from the shop. These files come in two main types:
    • Code files : Websites are built primarily from HTML, CSS, and JavaScript, though you"ll meet other technologies a bit later.
    • Assets : This is a collective name for all the other stuff that makes up a website, such as images, music, video, Word documents, and PDFs.
So what happens, exactly?

When you type a web address into your browser (for our analogy that"s like walking to the shop):

  • The browser goes to the DNS server, and finds the real address of the server that the website lives on (you find the address of the shop).
  • The browser sends an HTTP request message to the server, asking it to send a copy of the website to the client (you go to the shop and order your goods). This message, and all other data sent between the client and the server, is sent across your internet connection using TCP/IP.
  • If the server approves the client"s request, the server sends the client a "200 OK" message, which means "Of course you can look at that website! Here it is", and then starts sending the website"s files to the browser as a series of small chunks called data packets (the shop gives you your goods, and you bring them back to your house).
  • The browser assembles the small chunks into a complete website and displays it to you (the goods arrive at your door - new shiny stuff, awesome!).
  • DNS explained

    Real web addresses aren"t the nice, memorable strings you type into your address bar to find your favorite websites. They are special numbers that look like this: 63.245.215.20 .

    Packets explained

    Earlier we used the term "packets" to describe the format in which the data is sent from server to client. What do we mean here? Basically, when data is sent across the web, it is sent as thousands of small chunks, so that many different web users can download the same website at the same time. If websites were sent as single big chunks, only one user could download one at a time, which obviously would make the web very inefficient and not much fun to use.

    Your browser may not support the functionality in this article.

    ForEach.call(document.querySelectorAll("header .date a"), function(elem, i) { elem.textContent += " (" + ["author","editor"][i] + ")"; });

    Предисловие

    Это подробное руководство по внутренним механизмам работы систем WebKit и Gecko стало результатом обширных исследований, проведенных израильской веб-программисткой Тали Гарсиэль. Она в течение нескольких лет отслеживала всю публикуемую информацию о том, как устроены браузеры (см. раздел ) , и посвятила много времени анализу их исходного кода. Вот что пишет сама Тали:

    Когда на 90% компьютеров был установлен IE, приходилось мириться с тем, что это загадочный "черный ящик", однако теперь, когда более половины пользователей выбирает браузеры с открытым исходным кодом, пришло время разобраться, что скрывается у них внутри, в миллионах строк программного кода на C++... Тали опубликовала результаты исследования на своем сайте , однако мы считаем, что они заслуживают внимания более широкой аудитории, поэтому размещаем их здесь с некоторыми сокращениями.

    Веб-разработчик, знакомый с внутренним механизмом работы браузеров, принимает более квалифицированные решения и понимает, почему следует выбрать те или иные средства . Это достаточно объемный документ, однако мы рекомендуем читать его как можно внимательнее и гарантируем, что вы не пожалеете об этом. Пол Айриш, Chrome Developer Relations

    Введение

    Веб-браузеры, пожалуй, являются самыми распространенными приложениями. В этом учебнике я объясняю, как они работают. Мы подробно рассмотрим, что происходит с момента, когда вы набираете в адресной строке google.ru , до появления страницы Google на экране.

    Какие браузеры мы рассмотрим

    На сегодняшний день существует пять основных браузеров: Internet Explorer, Firefox, Safari, Chrome и Opera. В примерах используются браузеры с открытым исходным кодом: Firefox, Chrome и Safari (код открыт частично). Согласно статистике использования браузеров на сайте StatCounter , на август 2011 года браузеры Firefox, Safari и Chrome были установлены в общей сложности на 60% устройств. Таким образом, браузеры с открытым исходным кодом имеют на сегодняшний день весьма сильные позиции.

    Основные функции браузера

    Основное предназначение браузера – отображать веб-ресурсы. Для этого на сервер отправляется запрос, а результат выводится в окне браузера. Под ресурсами в основном подразумеваются HTML-документы, однако это также может быть PDF-файл, картинка или иное содержание. Расположение ресурса определяется с помощью URI (унифицированного идентификатора ресурсов).

    То, каким образом браузер обрабатывает и отображает HTML-файлы, определено спецификациями HTML и CSS. Они разрабатываются Консорциумом W3C , который внедряет стандарты для Интернета.
    Многие годы браузеры отвечали лишь части спецификаций, и для них создавались отдельные расширения. Для веб-разработчиков это означало серьезные проблемы с совместимостью. Сегодня большинство браузеров в большей или меньшей степени отвечает всем спецификациям.

    Пользовательские интерфейсы разных браузеров имеют много общего. Основные элементы интерфейса браузера перечислены ниже.

    • Адресная строка для ввода URI
    • Кнопки навигации "Назад" и "Вперед"
    • Закладки
    • Кнопки обновления и остановки загрузки страницы
    • Кнопка "Домой" для перехода на главную страницу

    Как ни странно, спецификации, которая бы определяла стандарты пользовательского интерфейса браузера, не существует. Современные интерфейсы являются результатом многолетней эволюции, а также того, что разработчики частично копируют друг друга. В спецификации HTML5 не указано, что именно должен содержать интерфейс браузера, однако перечислены некоторые основные элементы. К ним относится адресная строка, строка состояния и панель инструментов. Разумеется, существуют и специфические функции, такие как менеджер загрузок в Firefox.

    Структура верхнего уровня

    Ниже перечислены основные компоненты браузера ().

  • Пользовательский интерфейс – включает адресную строку, кнопки "Назад" и "Вперед", меню закладок и т. д. К нему относятся все элементы, кроме окна, в котором отображается запрашиваемая страница.
  • Механизм браузера – управляет взаимодействием интерфейса и модуля отображения.
  • Модуль отображения – отвечает за вывод запрошенного содержания на экран. Например, если запрашивается HTML-документ, модуль отображения выполняет синтаксический анализ кода HTML и CSS и выводит результат на экран.
  • Сетевые компоненты – предназначены для выполнения сетевых вызовов, таких как HTTP-запросы. Их интерфейс не зависит от типа платформы, для каждого из которых есть собственные реализации.
  • Исполнительная часть пользовательского интерфейса – используется для отрисовки основных виджетов, таких как окна и поля со списками. Ее универсальный интерфейс также не зависит от типа платформы. Исполнительная часть всегда применяет методы пользовательского интерфейса конкретной операционной системы.
  • Интерпретатор JavaScript – используется для синтаксического анализа и выполнения кода JavaScript.
  • Хранилище данных – необходимо для сохраняемости процессов. Браузер сохраняет на жесткий диск данные различных типов, например файлы cookie. В новой спецификации HTML (HTML5) имеется определение термина "веб-база данных": это полноценная (хотя и облегченная) браузерная база данных.
  • Рисунок . Основные компоненты браузера.

    Следует отметить, что Chrome, в отличие от большинства браузеров, использует несколько экземпляров модуля отображения, по одному в каждой вкладке, которые представляют собой отдельные процессы.

    Модуль отображения

    Как можно догадаться по названию, модуль отображения отвечает за вывод запрошенного содержания на экране браузера.

    По умолчанию он способен отображать HTML- и XML-документы, а также картинки. Специальные подключаемые модули (расширения для браузеров) делают возможным отображение другого содержания, например PDF-файлов. Однако эта глава посвящена основным функциям: отображению HTML-документов и картинок, отформатированных с помощью стилей CSS.

    Модули отображения

    В интересующих нас браузерах (Firefox, Chrome и Safari) используются два модуля отображения. В Firefox применяется Gecko – собственная разработка Mozilla, а в Safari и Chrome используется WebKit.

    WebKit представляет собой модуль отображения с открытым исходным кодом, который был изначально разработан для платформы Linux и адаптирован компанией Apple для Mac OS и Windows. Подробные сведения можно найти на сайте webkit.org .

    Основная схема работы

    Модуль отображения получает содержание запрошенного документа по протоколу сетевого уровня, обычно фрагментами по 8 КБ.

    Схема дальнейшей работы модуля отображения выглядит приведенным ниже образом.

    Рисунок . Схема работы модуля отображения.

    Модуль отображения выполняет синтаксический анализ HTML-документа и переводит теги в узлы в дереве содержания. Информация о стилях извлекается как из внешних CSS-файлов, так и из элементов style. Эта информация и инструкции по отображению в HTML-файле используются для создания еще одного дерева – .

    Оно содержит прямоугольники с визуальными атрибутами, такими как цвет и размер. Прямоугольники располагаются в том порядке, в каком они должны быть выведены на экран.

    После создания дерева отображения начинается элементов, в ходе которой каждому узлу присваиваются координаты точки на экране, где он должен появиться. Затем выполняется , при которой узлы дерева отображения последовательно отрисовываются с помощью исполнительной части пользовательского интерфейса.

    Важно понимать, что это последовательный процесс. Для удобства пользователя модуль отображения старается вывести содержание на экран как можно скорее, поэтому создание дерева отображения и компоновка могут начаться еще до завершения синтаксического анализа кода HTML. Одни части документа анализируются и выводятся на экран, в то время как другие только передаются по сети.

    Примеры работы Рисунок . Схема работы модуля отображения WebKit. Рисунок . Схема работы модуля отображения Mozilla Gecko ().

    Как видно из рисунков 3 и 4, в WebKit и Gecko используется разная терминология, однако схемы их работы практически идентичны.

    В Gecko дерево визуально отформатированных элементов называется деревом фреймов (frame tree), в котором каждый элемент является фреймом. В WebKit используется дерево отображения (render tree), состоящие из объектов отображения (render objects). Размещение элементов в WebKit называется компоновкой, или версткой (layout), а в Gecko – обтеканием (reflow). Объединение узлов DOM и визуальных атрибутов для создания дерева отображения называется в WebKit совмещением (attachment). Небольшое отличие Gecko, не имеющее отношения к семантике, состоит в том, что между HTML-файлом и деревом DOM находится еще один уровень. Он называется буфером содержания (content sink) и служит для формирования элементов DOM. Теперь поговорим о каждом этапе работы подробнее.

    Синтаксический анализ: общие сведения

    Так как синтаксический анализ является важным этапом работы модуля отображения, рассмотрим его подробнее. Начнем с краткого введения.

    Под синтаксическим анализом документа подразумевается его преобразование в пригодную для чтения и выполнения структуру. Результатом синтаксического анализа, как правило, является дерево узлов, представляющих структуру документа. Оно называется деревом синтаксического анализа, или просто синтаксическим деревом.

    Например, в результате синтаксического анализа выражения 2 + 3 – 1 может получиться такое дерево:

    Рисунок . Узел дерева для математического выражения. Грамматика

    Синтаксический анализ работает на основе определенных правил, которые определяются языком (форматом) документа. Для каждого формата существуют грамматические правила, состоящие из словаря и синтаксиса. Они образуют т. н. . Естественные языки не подчиняются правилам бесконтекстной грамматики, поэтому стандартные техники синтаксического анализа для них не годятся.

    Синтаксический и лексический анализаторы

    Вместе с синтаксическим применяется лексический анализ.

    Лексический анализ представляет собой разделение информации на токены, или лексемы. Токены образуют словарь того или иного языка и являются конструктивными элементами для создания документов. В естественном языке токенами бы были все слова, которые можно найти в словарях.

    Смысл синтаксического анализа состоит в применении синтаксических правил языка.

    Анализ документа обычно выполняется двумя компонентами: лексическим анализатором , разбирающим входную последовательность символов на действительные токены, и синтаксическим анализатором , анализирующим структуру документа согласно синтаксическим правилам данного языка и формирующим синтаксическое дерево. Анализатор игнорирует неинформативные символы, такие как пробелы и переносы строк.

    Рисунок . Переход от исходного документа к синтаксическому дереву.

    Синтаксический анализ является итеративным процессом. Синтаксический анализатор обычно запрашивает у лексического новый токен и проверяет его на предмет соответствия какому-либо из синтаксических правил. Если удается установить соответствие, для токена создается новый узел в синтаксическом дереве, а анализатор запрашивает следующий токен.

    Если токен не соответствует ни одному правилу, синтаксический анализатор откладывает его и запрашивает следующие токены. Так продолжается до тех пор, пока не будет найдено правило, которому бы отвечали все отложенные токены. Если найти такое правило не удается, анализатор создает исключение. Это означает, что документ содержит синтаксические ошибки и не может быть обработан полностью.

    Перевод

    Синтаксическое дерево не всегда бывает окончательным результатом. Синтаксический анализ часто используется в процессе перевода входного документа в нужный формат. Примером может служить компиляция. Компилятор, который переводит исходный код в машинный, сначала разбирает его и формирует синтаксическое дерево, а лишь потом создает на основе этого дерева документ с машинным кодом.

    Рисунок . Этапы компиляции. Пример синтаксического анализа

    На рисунке 5 показано синтаксическое дерево, построенное на основе математического выражения. Определим элементарный математический язык и рассмотрим процесс синтаксического анализа.

    Словарь: наш язык может содержать целые числа, знаки "плюс" и "минус".

    Синтаксис

  • Структурными элементами языка являются выражения, операнды и операторы.
  • Язык может содержать любое количество выражений.
  • Выражение – это последовательность, состоящая из операнда, оператора и еще одного операнда.
  • Оператор – это токен "плюс" или "минус".
  • Операнд – это токен целого числа или выражение.
  • Рассмотрим входную последовательность символов 2 + 3 – 1 .
    Первый элемент, отвечающий правилу, – 2 (согласно правилу №5, это операнд). Второй такой элемент – 2 + 3 (последовательность, состоящая из операнда, оператора и еще одного операнда, определена правилом №3). Следующее соответствие мы найдем в самом конце: последовательность 2 + 3 – 1 является выражением. Так как 2+3 – это операнд, мы получаем последовательность, состоящую из операнда, оператора и еще одного операнда, что соответствует определению выражения. Строка 2 + + не содержит соответствий правилам, поэтому была бы расценена как недействительная.

    Формальное определение словаря и синтаксиса

    Язык из примера выше можно было бы определить так:

    INTEGER:0|* PLUS: + MINUS: - Как видите, целые числа определены регулярным выражением.

    Синтаксис обычно описывается в формате BNF . Язык из примера выше можно описать так:

    Expression:= term operation term operation:= PLUS | MINUS term:= INTEGER | expression

    Как уже говорилось, язык можно обрабатывать с помощью стандартных синтаксических анализаторов, если его грамматика бесконтекстна , то есть может быть полностью выражена в формате BNF. Формальное определение бесконтекстной грамматики можно найти в этой статье Википедии .

    Типы синтаксических анализаторов

    Синтаксические анализаторы бывают двух типов: нисходящие и восходящие. Первые выполняют анализ сверху вниз, а вторые – снизу вверх. Нисходящие анализаторы разбирают структуру верхнего уровня и ищут соответствия синтаксическим правилам. Восходящие анализаторы сначала обрабатывают входную последовательность символов и постепенно выявляют в ней синтаксические правила, начиная с правил нижнего и заканчивая правилами верхнего уровня.

    Теперь посмотрим, как эти два типа анализаторов справились бы с нашим примером.

    Нисходящий анализатор начал бы с правила верхнего уровня и определил бы, что 2 + 3 –·это выражение. Затем он определил бы, что 2 + 3 – 1 также является выражением (в процессе определения выражений выявляются и соответствия другим правилам, однако первым всегда рассматривается правило верхнего уровня).

    Восходящий анализатор обрабатывал бы последовательность символов, пока не нашел бы подходящее правило, которым можно заменить обнаруженный фрагмент, и так до конца последовательности. Выражения с частичным соответствием при этом помещаются в стек анализатора.

    При работе такого анализатора входная последовательность символов сдвигается вправо (представьте курсор, который помещен в начало последовательности и в ходе анализа сдвигается вправо) и постепенно сводится к синтаксическим правилам. Автоматическое создание синтаксических анализаторов

    Существуют специальные приложения для создания синтаксических анализаторов, которые называются генераторами. Достаточно загрузить в генератор грамматику языка (словарный запас и синтаксические правила), и он автоматически создаст анализатор. Для создания синтаксического анализатора необходимо глубокое понимание принципов его работы, и сделать это вручную не так-то просто, поэтому генераторы бывают весьма полезны.

    DOM

    Полученное синтаксическое дерево состоит из элементов DOM и узлов атрибутов. DOM – объектная модель документа (Document Object Model) – служит для представления HTML-документа и интерфейса элементов HTML таким внешним объектам, как код JavaScript.
    В корне дерева находится объект Document .

    Модель DOM практически идентична разметке. Рассмотрим пример разметки:

    Hello World

    Дерево DOM для этой разметки выглядит так: Рисунок . Дерево DOM для разметки из примера.

    Под словами "дерево содержит узлы DOM" подразумевается, что дерево состоит из элементов, которые реализуют один из интерфейсов DOM. В браузерах применяются специфические реализации, обладающие дополнительными атрибутами для внутреннего использования.

    Алгоритм синтаксического анализа

    Как уже говорилось в предыдущих разделах, синтаксический анализ кода HTML невозможно выполнить с помощью стандартных нисходящих или восходящих анализаторов.

    Ниже перечислены причины этого.

  • Язык имеет "щадящий" характер.
  • В браузерах заложены механизмы обработки некоторых частых ошибок в коде HTML.
  • Цикл синтаксического анализа характеризуется возможностью повторного вхождения. Исходный документ обычно не меняется в процессе анализа, однако в случае HTML теги скрипта, содержащие document.write , могут добавлять новые токены, поэтому исходный код может меняться.
  • Так как стандартные анализаторы не подходят для HTML, браузеры создают собственные анализаторы.

    Алгоритм синтаксического анализа подробно описан в спецификации HTML5 . Он состоит из двух этапов: лексического анализа и построения дерева.

    В ходе лексического анализа входная последовательность символов разбивается на токены. К токенам HTML относятся открывающие и закрывающие теги, а также названия и значения атрибутов.

    Лексический анализатор обнаруживает токен, передает его конструктору деревьев и переходит к следующему символу в поиске дальнейших токенов, и так до окончания входной последовательности.

    Рисунок . Этапы синтаксического анализа кода HTML (источник: спецификация HTML5). Алгоритм лексического анализа

    Результатом работы алгоритма является токен HTML. Алгоритм выражен в виде автомата с конечным числом состояний. В каждом состоянии обрабатывается один или несколько символов входной последовательности, на основе которых определяется следующее состояние. Оно зависит от этапа лексического анализа и этапа формирования дерева, то есть обработка одного и того же символа может привести к разным результатам (разным состояниям) в зависимости от текущего состояния. Алгоритм достаточно сложен, чтобы подробно описывать его здесь, поэтому рассмотрим упрощенный пример, который поможет нам лучше понять принцип его работы.

    Выполним лексический анализ простого кода HTML:

    Hello world

    Исходное состояние – "данные". Когда анализатор обнаруживает символ < , состояние меняется на "открытый тег" . Если далее обнаруживается буква (a–z), создается токен открывающего тега, а состояние меняется на "название тега" . Оно сохраняется, пока не будет обнаружен символ > . Символы по одному добавляются к названию нового токена. В нашем случае получается токен html .

    При обнаружении символа > токен считается готовым и анализатор возвращается в состояние "данные" . Тег обрабатывается точно так же. Таким образом, анализатор уже сгенерировал теги html и body и вернулся в состояние "данные" . Обнаружение буквы H во фразе Hello world ведет к генерации токена символа. То же происходит с остальными буквами, пока анализатор не дойдет до символа < в теге . Для каждого символа фразы Hello world создается свой токен.

    Затем анализатор снова возвращается в состояние "открытый тег" . Обнаружение символа / ведет к созданию токена закрывающего тега и переходу в состояние "название тега" . Оно сохраняется, пока не будет обнаружен символ > . В этот момент генерируется токен нового тега, а анализатор снова возвращается в состояние "данные" . Последовательность символов обрабатывается, как описано выше.

    Рисунок . Лексический анализ входной последовательности символов. Алгоритм построения дерева

    При создании синтаксического анализатора формируется объект Document. На этапе построения дерево DOM, в корне которого находится этот объект, изменяется и к нему добавляются новые элементы. Каждый узел, генерируемый лексическим анализатором, обрабатывается конструктором деревьев. Для каждого токена создается свой элемент DOM, определенный спецификацией. Элементы добавляются не только в дерево DOM, но и в стек открытых элементов, который служит для исправления неправильно вложенных или незакрытых тегов. Алгоритм также выражается в виде автомата с конечным числом состояний, которые называются "способами включения" (insertion mode).

    Рассмотрим этапы создания дерева для следующего фрагмента кода:

    Hello world

    В начале этапа построения дерева у нас есть последовательность токенов, полученная в результате лексического анализа. Первое состояние называется исходным . При получении токена html состояние меняется на "до html" , после чего происходит повторная обработка токена в этом состоянии. В результате создается элемент HTMLHtmlElement, который добавляется к корневому объекту Document.

    Состояние меняется на "до head" . Анализатор обнаруживает токен body. Хотя в нашем коде нет тега head, элемент HTMLHeadElement будет автоматически создан и добавлен в дерево.

    Состояние меняется на "внутри head" , затем на "после head" . Токен body обрабатывается еще раз, создается элемент HTMLBodyElement, который добавляется в дерево, и состояние меняется на "внутри body" .

    Теперь пришла очередь токенов строки Hello world. Обнаружение первого из них ведет к созданию и вставке узла Text, к которому затем добавляются остальные символы.

    При получении закрывающего токена body состояние меняется на "после body" . Когда анализатор доходит до закрывающего тега html, состояние меняется на "после после body" . При получении токена конца файла анализ завершается.

    Рисунок . Построение дерева для кода HTML из примера. Действия после синтаксического анализа

    На этом этапе браузер помечает документ как интерактивный и начинает анализ отложенных скриптов, которые необходимо выполнить после завершения анализа документа. Состояние документа затем меняется на "готово", и вызывается событие load.

    Рассмотрим несколько примеров.
    Лексическая грамматика (словарь) определяется регулярными выражениями для каждого токена:

    Comment \/\*[^*]*\*+([^/*][^*]*\*+)*\/ num +|*"."+ nonascii [\200-\377] nmstart [_a-z]|{nonascii}|{escape} nmchar [_a-z0-9-]|{nonascii}|{escape} name {nmchar}+ ident {nmstart}{nmchar}*

    Ident – это идентификатор, который используется как название класса. Name – это элемент id, для ссылки на него используется символ решетки (#).

    Синтаксические правила описаны в формате BNF.

    Ruleset: selector [ "," S* selector ]* "{" S* declaration [ ";" S* declaration ]* "}" S* ; selector: simple_selector [ combinator selector | S+ [ combinator? selector ]? ]? ; simple_selector: element_name [ HASH | class | attrib | pseudo ]* | [ HASH | class | attrib | pseudo ]+ ; class: "." IDENT ; element_name: IDENT | "*" ; attrib: "[" S* IDENT S* [ [ "=" | INCLUDES | DASHMATCH ] S* [ IDENT | STRING ] S* ] "]" ; pseudo: ":" [ IDENT | FUNCTION S* ")" ] ; Набор правил (ruleset) представляет собой описанную ниже структуру. div.error , a.error { color:red; font-weight:bold; } Элементы div.error и a.error – это селекторы. Действующие правила данного набора заключены в фигурные скобки. Формально эта структура определяется так: ruleset: selector [ "," S* selector ]* "{" S* declaration [ ";" S* declaration ]* "}" S* ; Это означает, что набор правил действует как селектор или как несколько селекторов, разделенных запятыми и пробелами (S означает пробел). Набор правил содержит одно или несколько объявлений, разделенных точкой с запятой. Они заключены в фигурные скобки. Определения понятий "объявление" и "селектор" будут даны ниже.

    Синтаксический анализатор CSS в WebKit

    В WebKit для автоматического создания синтаксических анализаторов CSS используются генераторы . Как уже говорилось, Bison служит для создания восходящих анализаторов, при работе которых входная последовательность символов сдвигается вправо. В Firefox используется нисходящий анализатор, разработанный организацией Mozilla. В обоих случаях файл CSS разбирается на объекты StyleSheet, содержащие правила CSS. Объект правил CSS содержит селектор и объявление, а также другие объекты, характерные для грамматики CSS.

    Рисунок . Синтаксический анализ CSS. Порядок обработки скриптов и таблиц стилей Скрипты

    Веб-документы придерживаются синхронной модели. Предполагается, что скрипты будут анализироваться и исполняться сразу же, как только анализатор обнаружит тег . Синтаксический анализ документа откладывается до завершения выполнения скрипта. Если речь идет о внешнем скрипте, сначала необходимо запросить сетевые ресурсы. Это также делается синхронно, а анализ откладывается до получения ресурсов. Такая модель использовалась много лет и даже занесена в спецификации HTML 4 и 5. Разработчик мог пометить скрипт тегом defer, чтобы синтаксический анализ документа можно было выполнять до завершения выполнения скрипта. В HTML5 появилась возможность пометить скрипт как асинхронный (asynchronous), чтобы он анализировался и выполнялся в другом потоке.

    Ориентировочный синтаксический анализ

    Этот механизм оптимизации используется и в WebKit, и в Firefox. При выполнении скриптов остальные части документа анализируются в другом потоке, чтобы оценить необходимые ресурсы и загрузить их из сети. Таким образом, ресурсы загружаются в параллельных потоках, что повышает общую скорость обработки. Обратите внимание: ориентировочный анализатор не изменяет дерево DOM (это работа основного анализатора), а лишь обрабатывает ссылки на внешние ресурсы, такие как внешние скрипты, таблицы стилей и картинки.

    Таблицы стилей

    Таблицы стилей основаны на другой модели. Так как они не вносят изменений в дерево DOM, теоретически останавливать анализ документа, чтобы дождаться их обработки, бессмысленно. Однако скрипты могут запрашивать данные о стилях на этапе синтаксического анализа документа. Если стиль еще не загружен и не проанализирован, скрипт может получить неверную информацию. Разумеется, это повлекло бы за собой целый ряд проблем. Если Firefox обнаруживает таблицу стилей, которая еще не загружена и не проанализирована, то все скрипты останавливаются. В WebKit они останавливаются только в случае, если пытаются извлечь свойства стилей, которые могут быть определены в незагруженных таблицах.

    Построение дерева отображения

    Во время построения дерева DOM браузер создает еще одну структуру – дерево отображения. В нем визуальные элементы размещаются в том порядке, в каком их необходимо вывести на экран. Это визуальное представление документа. Дерево отображения служит для того, чтобы отрисовка содержания выполнялась в правильном порядке.

    В Firefox элемент дерева отображения называется "фреймом" (frame). В WebKit используется термин "объект отображения" (render object).
    Каждый объект отображения располагает данными об отрисовке самого себя и своих дочерних элементов.
    Класс RenderObject – основной класс объектов отображения в WebKit – определен следующим образом:

    Class RenderObject{ virtual void layout(); virtual void paint(PaintInfo); virtual void rect repaintRect(); Node* node; //the DOM node RenderStyle* style; // the computed style RenderLayer* containgLayer; //the containing z-index layer }

    Каждый объект отображения представляет собой прямоугольную область, соответствующую окну CSS узла, как описано в спецификации CSS2. Он содержит геометрические данные, такие как ширина, высота и положение.
    Тип окна зависит от атрибута display объекта style, назначенного данному узлу (см. раздел ). Ниже представлен код, который используется в WebKit, чтобы определить, какой тип объекта отображения необходимо создать для узла DOM, на основе атрибута свойства display.

    RenderObject* RenderObject::createObject(Node* node, RenderStyle* style) { Document* doc = node->document(); RenderArena* arena = doc->renderArena(); ... RenderObject* o = 0; switch (style->display()) { case NONE: break; case INLINE: o = new (arena) RenderInline(node); break; case BLOCK: o = new (arena) RenderBlock(node); break; case INLINE_BLOCK: o = new (arena) RenderBlock(node); break; case LIST_ITEM: o = new (arena) RenderListItem(node); break; ... } return o; } Учитывается и тип элемента: например, для элементов управления формами и таблиц используются специальные фреймы.
    В WebKit, если элемент пытается создать специальный объект отображения, метод createRenderer будет переопределен. Объекты отображения указывают на объекты style, содержащие негеометрическую информацию.

    Как дерево отображения связано с деревом DOM Объекты обработки соответствуют элементам DOM, но не идентичны им. Невизуальные элементы DOM не включаются в дерево отображения (примером может служить элемент head). Кроме того, в дерево не включаются элементы, у которых для свойства display задан атрибут none (элементы с атрибутом hidden включаются).

    Существуют и такие элементы DOM, которым соответствует сразу несколько визуальных объектов. Обычно это элементы со сложной структурой, которые невозможно описать одним-единственным прямоугольником. Например, элементу select соответствуют три визуальных объекта: один для области отображения, другой для раскрывающегося списка, третий для кнопки. Кроме того, если текст не вмещается на одну строку и разбивается на фрагменты, новые строки добавляются как самостоятельные объекты отображения.
    Еще одним примером, где используется несколько объектов отображения, является некорректно написанный код HTML. Согласно спецификации CSS, строчный элемент может содержать либо только блочные, либо только строчные элементы. Если же содержание смешанное, то в качестве оболочки для строчных объектов создаются анонимные блочные объекты.

    Некоторым объектам отображения соответствует узел DOM, но их положения в дереве не совпадают. Плавающие элементы и элементы с абсолютными координатами исключаются из общего процесса, помещаются в отдельную часть дерева и затем отображаются в стандартном фрейме, хотя на самом деле должны отображаться во фрейме-заполнителе.

    Рисунок . Дерево отображения и соответствующее ему дерево DOM (). Viewport (область просмотра) – это главный контейнер. В WebKit он представлен объектом RenderView. Процесс построения дерева

    В Firefox визуальное представление регистрируется как слушатель обновлений DOM. Создание фреймов делегируется конструктору FrameConstructor , который определяет стили (см. ) и создает фрейм.

    В WebKit процесс определения стиля и создания объекта отображения называется совмещением (attachment). Каждый узел DOM имеет метод attach. Совмещение выполняется синхронно; при добавлении нового узла в дерево DOM для него вызывается метод attach.

    В результате обработки тегов html и body создается корневой объект дерева отображения. В спецификации CSS он называется контейнером – блоком верхнего уровня, в котором содержатся все остальные блоки. Его размеры формируют область просмотра, то есть часть окна браузера, в которой будет показано содержание. В Firefox она называется ViewPortFrame , а в WebKit – RenderView . Это объект отображения, на который указывает документ. Остальное дерево строится посредством добавления в него узлов DOM.

    Подробные сведения о модели обработки приведены в спецификации CSS2 .

    Вычисление стилей

    Чтобы построить дерево отображения, необходимо рассчитать визуальные свойства каждого объекта. Для этого вычисляются свойства стиля каждого элемента.

    Стиль определяется различными таблицами стилей, строчными элементами style и визуальными свойствами в документе HTML (такими как bgcolor). Последние переводятся в свойства CSS.

    Таблицы стилей могут быть предоставлены браузером, разработчиком веб-страницы или пользователем, который может выбрать в браузере предпочитаемый стиль (например, в Firefox это можно сделать, поместив таблицу стилей в папку Firefox Profile).

    С вычислением стилей связан ряд сложностей.

  • Данные стилей содержат множество свойств и бывают очень объемны, что может вести к проблемам с памятью.
  • Рассмотрим пример со следующими правилами стилей:

    P.error {color:red} #messageDiv {height:50px} div {margin:5px} Первое правило будет помещено в карту классов, второе – в карту идентификаторов, а третье – в карту тегов.
    Рассмотрим следующий код HTML:

    an error occurred

    this is a message

    Сначала найдем правила для элемента p. В карте классов содержится ключ error, по которому находим правило p.error. Правила, соответствующие элементу div, содержатся в карте идентификаторов (по ключу id) и в карте тегов. Осталось только определить, какие из правил, найденных по ключам, являются подходящими.
    Предположим, правило для элемента div таково:

    Table div {margin:5px} Мы в любом случае извлекли бы его из карты тегов, так как ключом является крайний правый селектор, однако оно не подошло бы для этого элемента div, потому что для него не существует родительской таблицы.

    Такая оптимизация используется и в WebKit, и в Firefox.

    Применение правил в порядке приоритета

    Свойства объекта style отвечают всем визуальным атрибутам (всем атрибутам CSS, но на более универсальном уровне). Если свойство не определяется ни одним из подходящих правил, в некоторых случаях оно может быть унаследовано от родительского объекта style. В других случаях используется значение по умолчанию.

    Сложности начинаются, если существует более одного определения, и тогда, чтобы разрешить конфликт, требуется установить порядок приоритета.

    Порядок приоритета таблиц стилей Объявление свойства объекта style может содержаться сразу в нескольких таблицах стилей, иногда по нескольку раз в одной таблице. В таком случае очень важно установить верный порядок применения правил. Такой порядок называется каскадным. В спецификации CSS2 указан следующий порядок приоритета (по возрастанию).
  • Объявления браузера
  • Обычные объявления пользователя
  • Обычные объявления автора
  • Важные объявления автора
  • Важные объявления пользователя
  • Объявления браузера имеют самый низкий приоритет, а объявления пользователя важнее объявлений автора, только если имеют пометку!important. Объявления с одинаковым приоритетом сортируются по , а затем по порядку, в котором были определены. Визуальные атрибуты HTML переводятся в соответствующие объявления CSS и обрабатываются как правила автора с низким приоритетом.

    Специфичность

    Специфичность селектора определена в спецификации CSS2 описанным ниже образом.

    • Если объявление содержится в атрибуте style, а не в правиле с селектором, выбирается значение 1, в противном случае – 0 (= a).
    • Количество атрибутов ID внутри селектора (= b).
    • Количество других атрибутов и псевдоклассов внутри селектора (= c).
    • Количество названий элементов и псевдоэлементов внутри селектора (= d).
    Объединение этих значений в последовательность a-b-c-d (в системе счисления с большим основанием) и определяет специфичность.

    Основание системы счисления определяется самым большим числом в любой из категорий.
    Например, если a=14, можно использовать шестнадцатеричную систему. Если a=17 (что маловероятно), потребуется система счисления по основанию 17. Такая ситуация может возникнуть, если имеется селектор такого типа: html body div div p... Но вряд ли внутри селектора будет 17 тегов.

    Ниже приведено несколько примеров.

    * {} /* a=0 b=0 c=0 d=0 -> specificity = 0,0,0,0 */ li {} /* a=0 b=0 c=0 d=1 -> specificity = 0,0,0,1 */ li:first-line {} /* a=0 b=0 c=0 d=2 -> specificity = 0,0,0,2 */ ul li {} /* a=0 b=0 c=0 d=2 -> specificity = 0,0,0,2 */ ul ol+li {} /* a=0 b=0 c=0 d=3 -> specificity = 0,0,0,3 */ h1 + *{} /* a=0 b=0 c=1 d=1 -> specificity = 0,0,1,1 */ ul ol li.red {} /* a=0 b=0 c=1 d=3 -> specificity = 0,0,1,3 */ li.red.level {} /* a=0 b=0 c=2 d=1 -> specificity = 0,0,2,1 */ #x34y {} /* a=0 b=1 c=0 d=0 -> specificity = 0,1,0,0 */ style="" /* a=1 b=0 c=0 d=0 -> specificity = 1,0,0,0 */

    Сортировка правил

    После сопоставления правил они сортируются согласно приоритету. В WebKit для коротких списков используется сортировка простыми обменами, а для длинных – сортировка слиянием. При сортировке WebKit переопределяет для правил оператор >:

    Static bool operator >(CSSRuleData& r1, CSSRuleData& r2) { int spec1 = r1.selector()->specificity(); int spec2 = r2.selector()->specificity(); return (spec1 == spec2) : r1.position() > r2.position() : spec1 > spec2; }

    Многоэтапное применение правил

    В WebKit используется специальный флаг, который указывает, загружены ли все таблицы стилей верхнего уровня (включая @imports). Если совмещение уже началось, а таблица стилей еще не загружена целиком, используются заполнители, а в документе появляются соответствующие пометки. После завершения загрузки таблицы заполнители пересчитываются.

    Компоновка

    Когда только что созданный объект отображения включается в дерево, он не имеет ни размера, ни положения. Расчет этих значений называется компоновкой (layout или reflow).

    В HTML используется поточная модель компоновки, то есть в большинстве случае геометрические данные можно рассчитать за один проход. Элементы, встречающиеся в потоке позднее, не влияют на геометрию уже обработанных элементов, поэтому компоновку можно выполнять слева направо и сверху вниз. Существуют исключения: например, для компоновки таблиц HTML может потребоваться более одного цикла ().

    Система координат рассчитывается на основе корневого фрейма. Используются верхняя и левая координаты.

    Компоновка выполняется в несколько циклов. Она начинается с корневого объекта отображения, соответствующего элементу в HTML-документе. Затем обрабатывается иерархия фреймов (или отдельные ее части), и геометрическая информация рассчитывается для объектов отображения, которым она необходима.

    Корневой объект отображения имеет координаты (0; 0), а его размеры соответствуют области просмотра (видимой части окна браузера).

    Любой объект отображения может при необходимости вызвать метод layout или reflow для своих дочерних элементов.

    Система "грязных битов"

    Чтобы не выполнять перекомпоновку при каждом изменении, браузеры используют так называемую систему "грязных битов". Измененный объект отображения и его дочерние элементы помечаются как "грязные", то есть требующие перекомпоновки.

    Используется два флага: dirty и children are dirty. Флаг children are dirty означает, что перекомпоновка требуется не самому объекту отображения, а одному или нескольким из его дочерних объектов.

    Глобальная и инкрементная компоновка

    Если компоновка выполняется для всего дерева отображения, она называется глобальной. Ее могут вызывать перечисленные ниже события.

  • Глобальное изменение стиля, который используется во всех объектах отображения, например изменение шрифта.
  • Изменение размеров экрана.
  • При инкрементной компоновке изменяются только "грязные" объекты отображения (при этом может потребоваться перекомпоновка некоторых других объектов).
    Инкрементная компоновка выполняется асинхронно и начинается при обнаружении "грязных" объектов отображения. Пример: после получения содержания из сети и его добавления в дерево DOM в дереве отображения появляется новый объект.

    Рисунок . Инкрементная компоновка, при которой обрабатываются только "грязные" объекты отображения и их дочерние элементы (). Синхронная и асинхронная компоновка Инкрементная компоновка выполняется асинхронно. В Firefox команды инкрементной компоновки помещаются в очередь, а затем планировщик вызывает их все вместе. В WebKit выполнение инкрементной компоновки также откладывается, чтобы обработать целое дерево за один цикл и перекомпоновать все "грязные" объекты отображения.
    Скрипты, запрашивающие данные о стилях, такие как offsetHeight, могут привести к синхронному выполнению инкрементной компоновки.
    Глобальная компоновка обычно выполняется синхронно.
    Иногда компоновка выполняется в обратном вызове после исходной компоновки, потому что меняются значения некоторых атрибутов, таких как положение прокрутки. Оптимизация Если компоновка вызвана событием resize или изменением положения (но не размера) объекта отображения, размеры объекта извлекаются из кэша и не рассчитываются заново.
    Если меняется только часть дерева, перекомпоновка всего дерева не выполняется. Это происходит, если изменение носит локальный характер и не влияет на окружающие объекты, например при вводе текста в текстовые поля (в остальных случаях ввод каждого символа вызывает перекомпоновку всего дерева). Процесс компоновки

    Компоновка обычно выполняется по описанной ниже схеме.

  • Родительский объект отображения определяет собственную ширину.
  • Родительский объект отображения обрабатывает дочерние элементы:
  • определяет положение дочернего объекта отображения (задает его координаты x и y);
  • вызывает компоновку дочернего элемента (если он помечен как "грязный", если выполняется глобальная перекомпоновка и т. д.), в результате чего рассчитывается его высота.
  • На основе суммарной высоты дочерних элементов, а также высоты полей и отступов рассчитывается высота родительского объекта отображения: она требуется его собственному родительскому объекту.
  • Биты больше не помечаются как "грязные".
  • В Firefox в качестве параметра компоновки используется объект nsHTMLReflowState. Помимо прочих значений, он определяет ширину родительского элемента.
    В результате компоновки в Firefox создается объект nsHTMLReflowMetrics, содержащий значение высоты объекта отображения.

    Расчет ширины

    Ширина объекта отображения рассчитывается на основе ширины контейнера, свойства width объекта отображения, размеров полей и рамок.
    Рассмотрим, как вычисляется ширина следующего элемента div:

    В WebKit она будет рассчитана так (метод calcWidth класса RenderBox).

    • Ширина контейнера представляет собой большее из значений availableWidth и 0. В данном случае значение свойства availableWidth равно значению contentWidth, которое рассчитывается следующим образом: clientWidth() - paddingLeft() - paddingRight() Значения свойств clientWidth и clientHeight соответствуют внутренним размерам объекта, исключая рамку и полосу прокрутки.
    • Ширина элементов определяется атрибутом width объекта style. Ее абсолютное значение рассчитывается на основе процентной доли от ширины контейнера.
    • Добавляются горизонтальные рамки и отступы.
    До этого момента мы занимались расчетом предпочтительной ширины. Теперь рассчитаем ее минимальное и максимальное значение.
    Если предпочтительная ширина превышает максимальную, то используется значение максимальной, а если она меньше минимальной (самого маленького неделимого объекта) – значение минимальной ширины.

    Эти данные хранятся в кэше на случай, если потребуется перекомпоновка без изменения ширины.

    Перенос строк

    Если в процессе компоновки объект отображения обнаруживает, что необходим перенос строки, компоновка останавливается, а родительскому элементу передается запрос на перенос строки. Родительский элемент создает дополнительные объекты отображения и выполняет их компоновку.

    Отрисовка

    На этапе отрисовки для каждого объекта отображения по очереди вызывается метод paint и их содержание выводится на экран. Для отрисовки используется компонент инфраструктуры пользовательского интерфейса.

    Глобальная и инкрементная отрисовка При глобальной отрисовке все дерево отрисовывается целиком, а при инкрементной – только отдельные объекты отображения, не влияющие на остальные части дерева. Измененный объект отображения помечает свой прямоугольник как недействительный. Операционная система расценивает его как "грязную" область и вызывает событие paint. Области при этом объединяются, чтобы отрисовку можно было выполнить сразу для всех. В браузере Chrome отрисовка выполняется несколько сложнее, так как объект отображения находится вне главного процесса: Chrome в некоторой степени имитирует поведение операционной системы. Компонент визуального представления прослушивает эти события и делегирует сообщение корневому объекту отображения. Все объекты дерева по очереди проверяются, пока не будет найден нужный. Затем выполняется отрисовка его самого и, как правило, его дочерних элементов. Порядок отрисовки Порядок отрисовки определен в спецификации CSS2 . Фактически он соответствует порядку помещения элементов в . Порядок отрисовки играет важную роль, так как стеки отрисовываются задом наперед. Порядок добавления блочных объектов в стек таков:
  • Цвет фона
  • Фоновое изображение
  • Рамка
  • Дочерние объекты
  • Внешние границы
  • Список отображения Firefox В Firefox на основе анализа дерева отображения создается список отображения для отрисовываемого прямоугольника. В нем содержатся объекты отображения этого прямоугольника, расположенные в нужном порядке (сначала фон, потом рамки и т. д.). Благодаря этому для повторной отрисовки фона, фоновых изображений, рамок и т. д. достаточно пройти дерево все один раз.

    В Firefox процесс оптимизирован за счет того, что элементы, которые будут скрыты (например, под непрозрачными элементами), не добавляются.

    Хранилище прямоугольников в WebKit Перед повторной отрисовкой старый прямоугольник сохраняется в WebKit как растровое изображение, а затем отрисовываются только различия между старым и новым прямоугольником. Динамические изменения При наступлении изменений браузеры стараются не выполнять лишних операций. Например, при изменении цвета одного элемента остальные не отрисовываются заново. При изменении положения элемента выполняется повторная компоновка и отрисовка его самого, его дочерних элементов и, возможно, других объектов того же уровня. При добавлении узла DOM выполняется его повторная компоновка и отрисовка. Серьезные изменения, такие как увеличение размера шрифта элемента html, ведут к очистке кэша и повторной компоновке и отрисовке целого дерева. Потоки модуля отображения Модуль отображения работает с одним потоком: в нем выполняется почти все, кроме сетевых операций. В Firefox и Safari это основной поток браузера, в Chrome – основной процесс вкладки.
    Сетевые операции могут выполняться в нескольких параллельных потоках. Количество параллельных соединений ограничено и обычно составляет от 2 до 6 (например, в Firefox 3 их используется 6). Цикл событий Основной поток браузера представляет собой цикл событий – бесконечный цикл, который поддерживает рабочие процессы. Он ожидает отправки событий (таких как layout и paint), чтобы их обработать. Так выглядит код Firefox для основного цикла событий: while (!mExiting) NS_ProcessNextEvent(thread); Визуальная модель CSS2 Холст Другие языки

    Эта страница переведена на японский. Дважды!