HTML - Историческая или техническая причина для target = «_ blank» с подчеркиванием?


14

До сегодняшнего дня мне интересно, почему target="_blank"не стало target="blank". Я уверен, что браузеры также могут это понять.

Существуют ли какие-либо исторические или технические причины для этого решения / спецификации?


Вся targetконцепция, хотя и разрешенная в HTML 5, в целом считается устаревшей. w3.org/community/webed/wiki/HTML_links_-_lets_build_a_web7 Frames and popups — just say noразделе)
Йенс Мюленхофф

1
Может кто-нибудь объяснить мне, почему этот вопрос не был перенесен в StackOverflow на этот сайт? На мой взгляд, это идеальный выбор для SO и очень слабый для SU.
Трейдер

Ответы:


21

Если вы должны были использовать target="blank"вашу ссылку будет открываться в новом окне / окне. Тем не менее, есть небольшая разница. Повторное нажатие на ссылку приведет к повторному использованию окна, которое было открыто в первый раз, вместо открытия нового.

Это потому, что targetатрибут может быть использован не только для открытия нового окна. Он имеет четыре встроенных значения, но также позволяет вам указать свою цель. Если вы посмотрите на соответствующую страницу W3 Schools, она показывает следующие опции:

  • _blank Открывает связанный документ в новом окне или вкладке
  • _self Открывает связанный документ в том же фрейме, в котором он был нажат (по умолчанию)
  • _parent Открывает связанный документ в родительском фрейме
  • _top Открывает связанный документ в полном теле окна
  • <framename> Открывает связанный документ в именованном фрейме

Многое из этого не имеет смысла, если вы не понимаете немного о фреймах HTML. Использование HTML- <frameset>тега позволяет разбить окно браузера на отдельные разделы (фреймы), каждый со своей страницей. Задавая имя фрейма и используя targetатрибут в ссылках, можно контролировать, какой фрейм должен отображать соответствующий контент.

Но есть некоторые дополнительные правила для целевого атрибута, которые должны применять браузеры:

  • Если целью является указанное пользователем имя, оно должно начинаться с буквы (без подчеркивания, цифр и т. Д.)
  • Если целью является указанное пользователем имя, но ни одно из фреймов / окон не соответствует этому имени, то создайте новую вкладку / окно с этим именем. Вот почему target="blank"работает так, как работает.

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


7
Вам не следует обращаться к W3Schools: w3fools.com
Jens Mühlenhoff

2
Я не согласен с тем, что W3Schools не подходит для рекомендаций по веб-дизайну или что использование ссылок с целевым атрибутом устарело. Тем не менее, я использовал информацию, чтобы конкретно ответить на оригинальный вопрос.
Джеймс П

1
Я думаю, что связывание с ресурсами, о которых известно, что это проблематично, не очень хорошая идея. Вы отвечаете просто отлично.
Йенс Мюленхофф

1
Я хотел, чтобы дополнительный target="_blank"атрибут не понадобился, но вместо этого мы могли бы просто добавить в URL знак, например, звездочку <a href="*https://www.stackoverflow.com">Stackoverflow</a>. Это сэкономило бы столько печатания :)
Кай Ноак,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.