💬 Спрашивают в 3% собеседований
Браузер обрабатывает ссылки (теги
<a>) следующим образом:🤔 Основные этапы обработки ссылки браузером:
1️⃣ Рендеринг HTML:
➕ Когда браузер загружает HTML-документ, он разбирает его и создает DOM (Document Object Model). В этом процессе браузер встречает тег
<a> и определяет, что это ссылка.2️⃣ Наведение и щелчок по ссылке:
➕ Когда пользователь наводит курсор на ссылку, браузер может показать URL в строке состояния или всплывающем окне.
➕ При щелчке по ссылке браузер проверяет атрибуты ссылки (
href, target, и др.), чтобы определить, как обработать этот клик.3️⃣ Проверка атрибута `href`:
➕ Если
href отсутствует или равно #, браузер не будет переходить на другую страницу.➕ Если
href содержит URL, браузер начинает процесс навигации.4️⃣ Обработка атрибута `target`:
➕ Если
target установлен в _self или не указан, браузер загружает новую страницу в текущем окне.➕ Если
target установлен в _blank, браузер открывает новую страницу в новой вкладке или окне.➕ Если указано имя фрейма, браузер попытается загрузить новую страницу в указанный фрейм.
5️⃣ Выполнение возможных JavaScript обработчиков событий:
➕ Браузер проверяет наличие событий, таких как
onclick, onmousedown, onmouseup и т.д.➕ Если обработчик события вызвал
event.preventDefault(), переход на новую страницу не произойдет.6️⃣ Отправка HTTP-запроса:
➕ Браузер отправляет HTTP-запрос к серверу, если ссылка ведет на другой ресурс.
➕ Сервер обрабатывает запрос и отправляет ответ.
7️⃣ Обработка ответа от сервера:
➕ Если ответ сервера содержит HTML, браузер начнет разбор нового HTML-документа.
➕ Если ответ сервера является перенаправлением (статусы 3xx), браузер отправит новый запрос по указанному адресу.
➕ Если ответ сервера является ошибкой (статусы 4xx или 5xx), браузер отобразит страницу ошибки.
8️⃣ Загрузка ресурсов:
➕ После получения нового HTML-документа браузер загружает все связанные ресурсы (CSS, JS, изображения и т.д.).
9️⃣ Отображение новой страницы:
➕ Браузер обновляет DOM и перерисовывает страницу, отображая новый контент пользователю.
🤔 Пример работы с ссылкой
HTML:
<a href="https://example.com" target="_blank" id="myLink">Перейти на example.com</a>
JavaScript:
document.getElementById('myLink').addEventListener('click', function(event) {
event.preventDefault();
console.log('Ссылка была нажата, но переход не произошел');
// Можно выполнить дополнительную логику здесь
});🤔 Атрибуты ссылки и их значение
➕ `href`: определяет URL, на который ведет ссылка.
➕ `target`: определяет, где открыть связанный документ.
➕
_self: в текущем окне/вкладке.➕
_blank: в новом окне/вкладке.➕
_parent: в родительском фрейме.➕
_top: во всем текущем окне.➕ `rel`: определяет отношения между текущим документом и связанным документом. Полезно для SEO и безопасности (например,
rel="noopener noreferrer" для ссылок с target="_blank").🤔 Резюме
Когда вы нажимаете на ссылку, браузер проверяет её атрибуты (
href, target и другие), может выполнить JavaScript-обработчики событий, отправляет HTTP-запрос, обрабатывает ответ от сервера и отображает новую страницу.🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых