Почему значения атрибута target="_blank" начинается с подчеркивания
Maksym PohribniakHTML-ссылки создаются с помощью элементов <a>. Ссылки представляют собой связь между двумя ресурсами, одним из которых является текущий документ.
По умолчанию, при переходе по ссылке документ открывается в текущем окне или фрейме. При необходимости, это условие может быть изменено атрибутом target тега <a>. Этот атрибут может принимать следующие значения:
_blank — открывает ссылку в новой вкладке или окне. Это определяется локальными настройками пользователя, в большинстве браузеров это новая вкладка
_self — открывает ссылку в том же окне, в котором она была нажата. Это состояние по умолчанию для всех ссылок, так что это значение используется очень редко
_parent — открывает ссылку в родительском фрейме для фрейма, в котором вы находитесь. Это не популярное значение, так как теги для создания фреймов <frameset> и <frame> не поддерживаются в HTML5. Тем не менее, это значение по-прежнему можно использовать внутри тегов <iframe>.
_top — отменяет все фреймы и загружает страницу в полном окне браузера
Почему же ключевое должно начинаться с _ ?
Дело в том, что кроме этих ключевых слов данный атрибут может принимать еще и framename (имя фрейма). То есть браузер умеет открывать ссылку во фрейме с именем, указанным в значении атрибута target. Например,
<a href="http://opensite.com" target="frame1">
открывается во фрейме с именем frame1, то есть
<frame src="https://www.website.com" name="frame1">
iframe также поддерживают это значение атрибута, а framename имеет такие же ограничения на именование как и атрибут id (может начинаться только с буквы, а не с цифры или другого символа)
Если мы уберем подчеркивание и изменим значение атрибута на
target="blank", то браузер будет думать, что это имя фрейма. Он пытается открыть документ во фрейме с name=blank, и, не находя такого, открывает его в новом окне и дает ему такое имя.
Чтобы избежать этой проблемы, для ключевых слов значений было добавлено нижнее подчеркивание. Вот откуда взялось подчеркивание для значений этих атрибутов.
💡Маленький лайфхак с данным атрибутом:
Если на веб-странице необходимо сделать, чтобы все ссылки открывались в новом окне, нет необходимости добавлять во все теги <a> target="_blank". Код можно сократить, если вначале страницы добавить строку
<base target="_blank">
Спасибо за внимание!