Может кто-нибудь объяснить мне, почему этот вопрос не был перенесен в StackOverflow на этот сайт? На мой взгляд, это идеальный выбор для SO и очень слабый для SU.
Трейдер
Ответы:
21
Если вы должны были использовать target="blank"вашу ссылку будет открываться в новом окне / окне. Тем не менее, есть небольшая разница. Повторное нажатие на ссылку приведет к повторному использованию окна, которое было открыто в первый раз, вместо открытия нового.
Это потому, что targetатрибут может быть использован не только для открытия нового окна. Он имеет четыре встроенных значения, но также позволяет вам указать свою цель. Если вы посмотрите на соответствующую страницу W3 Schools, она показывает следующие опции:
_blank Открывает связанный документ в новом окне или вкладке
_self Открывает связанный документ в том же фрейме, в котором он был нажат (по умолчанию)
_parent Открывает связанный документ в родительском фрейме
_top Открывает связанный документ в полном теле окна
<framename> Открывает связанный документ в именованном фрейме
Многое из этого не имеет смысла, если вы не понимаете немного о фреймах HTML. Использование HTML- <frameset>тега позволяет разбить окно браузера на отдельные разделы (фреймы), каждый со своей страницей. Задавая имя фрейма и используя targetатрибут в ссылках, можно контролировать, какой фрейм должен отображать соответствующий контент.
Но есть некоторые дополнительные правила для целевого атрибута, которые должны применять браузеры:
Если целью является указанное пользователем имя, оно должно начинаться с буквы (без подчеркивания, цифр и т. Д.)
Если целью является указанное пользователем имя, но ни одно из фреймов / окон не соответствует этому имени, то создайте новую вкладку / окно с этим именем. Вот почему target="blank"работает так, как работает.
По сути, нет причин менять текущее соглашение, поскольку _blankэто особый случай. Исходный тип фреймов может больше не использоваться, но есть другие случаи, когда вы можете иметь именованные объекты, с которыми работает целевой атрибут, например, фреймы, которые представляют собой отдельные фреймы, встроенные непосредственно в страницу. Изменение стандарта сломало бы многие существующие страницы без какой-либо выгоды.
Вам не следует обращаться к W3Schools: w3fools.com
Jens Mühlenhoff
2
Я не согласен с тем, что W3Schools не подходит для рекомендаций по веб-дизайну или что использование ссылок с целевым атрибутом устарело. Тем не менее, я использовал информацию, чтобы конкретно ответить на оригинальный вопрос.
Джеймс П
1
Я думаю, что связывание с ресурсами, о которых известно, что это проблематично, не очень хорошая идея. Вы отвечаете просто отлично.
Йенс Мюленхофф
1
Я хотел, чтобы дополнительный target="_blank"атрибут не понадобился, но вместо этого мы могли бы просто добавить в URL знак, например, звездочку <a href="*https://www.stackoverflow.com">Stackoverflow</a>. Это сэкономило бы столько печатания :)
target
концепция, хотя и разрешенная в HTML 5, в целом считается устаревшей. w3.org/community/webed/wiki/HTML_links_-_lets_build_a_web (в7 Frames and popups — just say no
разделе)Ответы:
Если вы должны были использовать
target="blank"
вашу ссылку будет открываться в новом окне / окне. Тем не менее, есть небольшая разница. Повторное нажатие на ссылку приведет к повторному использованию окна, которое было открыто в первый раз, вместо открытия нового.Это потому, что
target
атрибут может быть использован не только для открытия нового окна. Он имеет четыре встроенных значения, но также позволяет вам указать свою цель. Если вы посмотрите на соответствующую страницу W3 Schools, она показывает следующие опции:_blank
Открывает связанный документ в новом окне или вкладке_self
Открывает связанный документ в том же фрейме, в котором он был нажат (по умолчанию)_parent
Открывает связанный документ в родительском фрейме_top
Открывает связанный документ в полном теле окна<framename>
Открывает связанный документ в именованном фреймеМногое из этого не имеет смысла, если вы не понимаете немного о фреймах HTML. Использование HTML-
<frameset>
тега позволяет разбить окно браузера на отдельные разделы (фреймы), каждый со своей страницей. Задавая имя фрейма и используяtarget
атрибут в ссылках, можно контролировать, какой фрейм должен отображать соответствующий контент.Но есть некоторые дополнительные правила для целевого атрибута, которые должны применять браузеры:
target="blank"
работает так, как работает.По сути, нет причин менять текущее соглашение, поскольку
_blank
это особый случай. Исходный тип фреймов может больше не использоваться, но есть другие случаи, когда вы можете иметь именованные объекты, с которыми работает целевой атрибут, например, фреймы, которые представляют собой отдельные фреймы, встроенные непосредственно в страницу. Изменение стандарта сломало бы многие существующие страницы без какой-либо выгоды.источник
target="_blank"
атрибут не понадобился, но вместо этого мы могли бы просто добавить в URL знак, например, звездочку<a href="*https://www.stackoverflow.com">Stackoverflow</a>
. Это сэкономило бы столько печатания :)