Почему значения атрибута target="_blank" начинается с подчеркивания

Почему значения атрибута target="_blank" начинается с подчеркивания

Maksym Pohribniak

HTML-ссылки создаются с помощью элементов <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">

Спасибо за внимание!

Report Page