Можно ли использовать target = «_ blank» в HTML5?

144

Я помню, как где-то читал, что в HTML5 было уже невозможно использовать target="_blank" в HTML5, но я не могу найти его сейчас.

Можно ли продолжать использовать target="_blank"?

Я знаю, что это вообще считается плохой идеей, но самым простым способом открыть новое окно для чего-то вроде PDF, а также не требует, чтобы вы полагались на JavaScript.

  • 1
    Если это плохая идея, тогда какая хорошая идея? javascript: window.open(...) ?
  • 2
    Я слышал, что многие люди жалуются на открытие новых окон, независимо от метода. У него есть ряд проблем, в том числе запутывание пользователя и испортить историю. Я думаю, именно поэтому я сказал «это вообще плохая идея», хотя я использую это повсеместно.
Показать ещё 7 комментариев
Теги:
window

7 ответов

133
Лучший ответ

Похоже, что target="_blank" все еще в порядке. Он указан как ключевое слово контекста просмотра в последний проект HTML5.

  • 48
    target="_blank" приведет к открытию нового окна каждый раз, когда пользователь щелкает ссылку. Если это действительно то, чего вы хотите (и это редко случается), подумайте об использовании target="somethingUnique" чтобы пользователь открывал только одно окно, даже если он щелкнул ссылку несколько раз. Это делает UX гораздо приятнее.
  • 4
    @BanksySan: Один из примеров, где я думаю, что target="_blank" - это хорошие кнопки обмена.
Показать ещё 2 комментария
85

Можно использовать target="_blank"; Это было устранено в XHTML, потому что таргетинг на новые окна всегда будет вызывать всплывающее предупреждение в большинстве браузеров. XHTML всегда будет показывать ошибку с атрибутом target в подтверждении.

HTML 5 вернул его, потому что мы все еще используем его. Это наш друг, и мы не можем отпустить.

Никогда не отпускай.

  • 0
    То, что вы утверждаете, действительно только для строгого HTML.
  • 0
    Для XHTML, а также для HTML.
12

Хотя target="_blank" приемлемый в HTML5, я лично стараюсь никогда не использовать его (даже для открытия PDF файлов в новом окне).

HTML должен определять значение и содержание. Спросите себя: "изменилось бы значение элемента a, если атрибут target был удален?" Если нет, код не должен идти в HTML. (На самом деле я удивлен, что W3C сохранил его... Я думаю, они действительно просто не могут отпустить.)

Браузер поведение, в частности интерактивное поведение с пользователем, должно быть реализовано на клиентских сценариях, таких как JavaScript. Поскольку вы хотите, чтобы браузер действовал определенным образом, то есть, открывая новое окно, вы должны использовать JS. Но, как вы упомянули, это поведение требует, чтобы браузер полагался на JS. (Хотя, если ваш сайт изящно или постепенно улучшается, или что-то еще, тогда все должно быть в порядке. Пользователи с отключенным JS не пропустят много.)

Говоря, , ни один из них не является правильным ответом. Где-то там существует мнение, что, как открывается ссылка, конечный пользователь должен решить конечный пользователь. Возьмите этот пример. p >

Youre surfing Wikipedia, все глубже и глубже проникая в кроличью нору. Вы видите ссылку в своем чтении.

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

Дело в том, что у вас есть собственный рабочий процесс, и вы, как и ваш браузер, должны вести себя соответственно. Вы могли бы получить довольно разочарование, если бы приняли такие решения для вас.

Сказав это, веб-разработчики должны четко указать, куда идут ссылки, какие типы и/или форматы источников они ссылаются, и что они делают. Подсказки могут быть вашим другом (если вы не используете планшет или телефон, в этом случае укажите их на мобильном сайте). Мы все знаем, сколько это отстой, чтобы быть взятым где-то, чего мы не ожидали или не сделали что-то, что мы не хотели.

  • 0
    И если кто-то был достаточно умен, чтобы создать пользовательский виджет, который позволял бы очень легко осуществлять свое Богом данное право контроля с каждой ссылкой (легко, как в подсознании), то он должен быть добавлен в браузеры, и все теги <a> могут предоставить это.
  • 0
    Этот ответ является логически и архитектурно наиболее точным, на мой взгляд. В идеальном мире авторы должны больше заботиться о правильной семантической идентификации кусков, а не о предопределении поведения кусков. В новой вселенной адаптивного контента поведение окон может зависеть от того, какая отзывчивая тема или предпочтения пользователя действуют во время запроса; исходящая семантическая «вещь» изменяется только по мере необходимости путем преобразования (DOM или regex, сервер или браузер). Таким образом, поведение окна МОЖЕТ зависеть от пользователя, а не от автора в CMS.
11

это самым простым способом открыть новое окно для чего-то вроде PDF

Это также самый простой способ раздражать пользователей, не относящихся к Windows. PDF открываются в браузерах на других платформах. Открытие нового окна также испортило историю навигации и усложняет работу на небольших платформах, таких как смартфоны.

НЕ открывайте новые окна для таких вещей, как PDF, только потому, что были повреждены старые версии Windows.

  • 10
    Знаете, что помогает, когда вы говорите людям не использовать что-то? Показаны их , что использовать, в HTML5 скачать атрибут: <a download="[file имя here]" href="file.ext"> и т.д. </a>.
3

Хотя цель по-прежнему приемлема в HTML5, она не является предпочтительной. Для ссылки на файл PDF используйте атрибут загрузить вместо целевого атрибута.

Вот пример:

<a href="files/invoice.pdf" download>Invoice</a>

Если исходное имя файла закодировано для уникального хранения файлов, вы можете указать удобное имя загрузки, присвоив значение атрибуту загрузки:

<a href="files/j24oHPqJiUR2ftK0oeNH.pdf" download="invoice.pdf">Invoice</a>

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

2

Большинство веб-разработчиков используют target="_blank" только для открытия ссылок на новой вкладке. Если вы используете target="_blank" только для открытия ссылок на новой вкладке, тогда он уязвим для злоумышленника. Когда вы открываете ссылку на новой вкладке (target="_blank"), страница, открывающаяся на новой вкладке, может получить доступ к начальной вкладке и изменить ее местоположение с помощью свойства window.opener.

Код Javascript:

window.opener.location.replace(malicious URL)

Профилактика:

rel="nofollow noopener noreferrer"
  • 0
    Я не уверен, что nofollow связан с безопасностью - это для роботов поисковых систем.
2
  • 0
    До сих пор
  • 2
    @ Гамбо Он вернулся. См. Ссылку Майка для текущей версии спецификации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню