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

165

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

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

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

Дэррил Хейн
источник
5
В общем, если вы хотите открыть внешний сайт со своего сайта, то, по моему мнению, лучше открыть новое окно (которое, вероятно, является новой вкладкой для большинства браузеров в наши дни).
hobbes3
7
@ hobbes3, пожалуйста, перестань путать мою навигацию и мою историю. Я - тот, кто просматривает, и я сам решаю, должна ли ссылка открываться в новой (средний щелчок) или в той же (щелчок левой) вкладке. Когда я сталкиваюсь с сайтом, заставляющим меня следовать его «законной передовой практике», открывая каждую ссылку в новых вкладках, я быстро и с удовольствием ухожу.
Albireo
9
@Albireo, это только мое мнение, и некоторые популярные веб-сервисы также включают ту же идею. Например, если щелкнуть ссылку в вашей почте в Gmail, откроется новое окно по умолчанию.
hobbes3
12
@ Albireo, вы предполагаете, что пользователь всегда такой же продвинутый и технически подкованный, как и вы.
Майк Кэмпбелл
3
Есть причина, почему targetи соавт. существует. Иногда они необходимы. Динамически генерируемая страница с сохранением состояния JS, например, где iframe менее желателен, чем новая вкладка (например, просмотр PDF, как указано в OP). Или когда защищенный сайт (например, банк) отправляет вас на внешнюю ссылку, но не позволяет использовать кнопку возврата из-за истечения срока действия контента. Как и все вещи, этот атрибут HTML не является «плохой идеей» для использования, но его следует использовать с осторожностью и осторожностью, как с любой библиотекой, классом, функцией и свойством во всем программировании.
s.co.tt

Ответы:

159

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

Майк
источник
54
target="_blank"приведет к открытию нового окна каждый раз, когда пользователь нажимает на ссылку. Если это действительно то, чего вы хотите (и это редко случается), подумайте об использовании, target="somethingUnique"чтобы пользователь открывал только одно окно, даже если он щелкнул ссылку несколько раз. Это делает UX гораздо приятнее.
BanksySan
4
@BanksySan: Одним из примеров, где я думаю, что target="_blank"это хорошо, являются кнопки обмена.
Мартин Тома
Если я читаю длинную статью и есть ссылка на некоторую связанную информацию на другом сайте (или на том же сайте). Я часто хочу прыгать туда-сюда между ними, не теряя своего места в оригинальной статье. target = "_ blank" идеально подходит для этого. Покинуть страницу и поочередно перезагрузить каждую страницу (часто теряя свое место на любой странице), нет. Да, я знаю, что могу щелкнуть правой кнопкой мыши ссылку и открыть ее в новой вкладке, но я не хочу, потому что это нарушит мою концентрацию, и я подозреваю, что большинство веб-пользователей не знают как.
Боб Рэй
Целевой атрибут имеет много преимуществ. Я не собираюсь это обсуждать. Рекламодатели всплывающих окон разрушили его цель, но сегодня, когда так много сервисов работают в стороне от опыта просмотра, многие люди не хотят покидать текущую статью или вкладку, но по-прежнему взаимодействуют с загруженным PDF или видео. Используя _blank, убедитесь, что вы позволяете пользователю заполнять пустую вкладку - не переопределяйте текущий заполненный контент, если вы обслуживаете много ссылок в одном сеансе / сайте. Уникальные имена просто запутаны в аудио-списке с 90 песнями ... Viva la target, viva la _blank ...
Йонас Лундман
91

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

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

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

Грэхем
источник
То, что вы утверждаете, действительно только для строгого HTML.
qwertzman
Для XHTML, а также для HTML.
MEMark
15

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Javascript код:

window.opener.location.replace(malicious URL)

Предупреждение:

rel="nofollow noopener noreferrer"
Вамши Кришна
источник
Я не уверен, что nofollow связан с безопасностью - это для роботов поисковых систем.
Дэррил Хейн
4

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

Вот пример:

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

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

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

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

kojow7
источник
0

Вы можете сделать это следующим образом с jquery, это откроет его в новом окне:

<input type="button" id="idboton" value="google" name="boton" /> 

<script type="text/javascript">
    $('#idboton').click(function(){
        window.open('https://www.google.com.co');
    });

</script>
Йохан Стивен Эрнандес Осорио
источник
Почему бы не добавить форму вокруг кнопки с target = "_ blank". Похоже, это будет проще и избавит от необходимости JS.
Дэррил Хейн
-1

Я думаю, что атрибут target для <link>элемента устарел , но <a>, возможно, поэтому вы слышали, что он больше не должен использоваться.

Эрик Би
источник