target = “_ blank” vs. target = “_ new”


512

У чому різниця між <a target="_new">і <a target="_blank">що я повинен використовувати, якщо просто хочу відкрити посилання на новій вкладці / вікні?


73
Підсумок поточних анонсів: _newне має особливого значення. Ви могли також писати _white_little_lamb.
Альваро Гонсалес

10
@ x3ro Як це неправильно говорити, що " _new" не має особливого значення?
Альваро Гонсалес

3
@ ÁlvaroG.Vicario Я мав на увазі "Ви можете писати ... замість цього". Але, думаючи про це, я б заперечував, що "не має особливого значення" не є тим самим, що "явно відмовляє", але це, можливо, мене зриває;)
fresskoma

5
Я хотів би нагадати всім, що використання target="_blank"без rel="noopener"- це потенційна вразливість безпеки. Шукайте, rel="noopener"щоб дізнатися більше.
Flimm

Відповіді:


651

Використовувати "_blank"

Відповідно до специфікації HTML5 :

Допустиме ім'я контексту перегляду будь-який рядок, по крайней мере один символ , яка не починається з символу U + 005F LOW LINE. (Імена, що починаються з підкреслення, зарезервовані для спеціальних ключових слів.)

Допустиме ім'я контексту перегляду або ключове слово є будь-який рядок, або дійсне ім'я контексту перегляду або що є ASCII регістронезавісімого матч одного з: _blank, _self, _parent або _top «. - Джерело

Це означає, що немає такого ключового слова, як _newу HTML5, а також у HTML4 (і, отже, XHTML) . Це означає, що не буде жодної послідовної поведінки, якщо ви використовуєте це як значення для цільового атрибута.

Рекомендації з безпеки

Як зазначали у коментарях Даніель та Майкл, під час використання цільових _blankвказівок на недовірений веб-сайт слід додатково встановити rel="noopener". Це перешкоджає сайту, що відкрився, возитися з відкривачем через JavaScript. Дивіться цю публікацію для отримання додаткової інформації.


7
Якщо вилучити напівжирний текст із специфікації, ця цитата звучить заплутано круговою. Я читав це як "А valid browsing context nameабо ключове слово - це будь-який рядок, який є valid browsing context nameабо ..."
Алекс Грін,

6
@lyoshenka, @ x3ro: Я взяв на себе сміливість додати попередній абзац до цитати. Це повинно усунути плутанину.
меркатор

5
@aesede: Прочитайте специфікацію. Вони НЕ дійсні, тому що «my_custom_name» не може починатися з префікса підкреслення. Таким чином, "нове" було б добре, але "нове" - ні!
fresskoma

7
Безпечно це важливо читати mathiasbynens.github.io/rel-noopener
Даніель Ф

6
Будь ласка , зверніть увагу , додавши , що люди повинні також додати rel="noopener noreferrer"внаслідок яваскрипт атаки уразливості зtarget="_blank"
Michael

126

Використання target="_blank"вкаже браузер створити нову вкладку або вікно браузера, коли користувач натисне посилання.

Використання target="_new"технічно недійсне відповідно до технічних характеристик, але, наскільки я знаю, кожен браузер поводитиметься однаково:

  • він буде шукати вкладку чи вікно з контекстною назвою "_new"
  • якщо вкладка / вікно "_new" знайдена, то URL-адреса завантажується в неї
  • якщо його не знайдено, створюється нова вкладка / вікно з контекстною назвою "_new" і URL-адресою, завантаженою в неї

Примітка target="_new"буде поводитися точно так само, як target="new"і останній є дійсним HTML, тоді як перший недійсний HTML.

Додавши до цього певну плутанину, у HTML4 targetатрибут застарілий. У HTML5 це рішення було скасовано, і воно знову є офіційною частиною специфікації. Усі веб-переглядачі підтримують targetнезалежно від того, яку версію HTML ви використовуєте, але деякі валідатори позначать це використання як устарене, якщо ваш тип даних - HTML4.


4
Отже, якщо я маю два (або більше) посилань target="_new", вони обидва відкриються в одній вкладці, одна перезаписує іншу?
арт-соловєв

4
@ art-solopov, наскільки я знаю, так, це буде в кожному браузері. Однак "_new" - це незаконне значення для цілі, тому не робіть цього.
Абхі Беккерт

25

TL; DR
ВИКОРИСТАННЯ _пусто

Цільовий атрибут визначає, де відкрити зв'язаний документ.

USAGE: target="xyz"  [don't forget double quotes]

_blank  Opens the linked document in a new window or tab
_self   Opens the linked document in the same frame as it was clicked (this is default)
_parent     Opens the linked document in the parent frame
_top    Opens the linked document in the full body of the window 
framename   Opens the linked document in a named frame

З "_new" це не будь-яка з цих ЗНАЙДАЄТЬСЯ "Ім'я кадру", тому якщо користувач повторно натисне на це гіперпосилання, він не відкриє нову вкладку, а не оновить існуючу вкладку. Тоді як у _blank якщо користувач клацне двічі, то відкриються 2 нові вкладки.


21

Я знаю, що це старе питання, і правильну відповідь, використання _blank, згадували вже кілька разів, але використання <a target="somesite.com" target="_blank">Link</a> - це ризик для безпеки .

Він рекомендується ( виграш в продуктивності ) для використання:

<a href="somesite.com" target="_blank" rel="noopener noreferrer">Link</a>

1
Ще декілька додаткових читань про аспект ризику для безпеки: jitbit.com/alexblog/…
8bithero

14

Це, можливо, вже запитували, але:

"кожне посилання, яке вказує target =" _ new ", шукає і знаходить це вікно за назвою та відкривається в ньому.

Якщо ви використовуєте target = "_ blank", щоразу, у поточному вікні, буде створюватися абсолютно нове вікно. "

звідси: http://thedesignspace.net/MT2archives/000316.html



12

моє розуміння target = whateverбуде шукати рамку / вікно з такою назвою. Якщо його не знайти, воно відкриє нове вікно з цим ім'ям. Якщо whatever == "_new"він з’явиться так само, як якщо б ви використовували, _blankза винятком .....

Використання одного із зарезервованих імен цілі обійде фазу "дивлячись". Так, target = "_blank"на десяток посилань відкриється десяток порожніх вікон, а target = whateverна десяток посилань відкриється лише одне вікно. target = "_new"на десятці посилань може спричинити непостійну поведінку. Я не пробував це в декількох браузерах, але слід відкрити лише одне вікно.

Принаймні так я трактую правила.


9

Застереження - не забудьте завжди включати "цитати" - принаймні на Chrome, target=_blank(без лапок) НЕ ТЕБЕ як target="_blank"(з цитатами).

Останнє відкриває кожне посилання у новій вкладці / вікні. Колишня (відсутні лапки) відкриває перше посилання, яке ви натискаєте, в одній новій вкладці / вікні, а потім перезаписує ту саму вкладку / вікно кожною наступною посиланням, яке ви натискаєте (це також названо з відсутніми цитатами).


Дуже хороший момент. Я зіткнувся з цим питанням, коли не вклав _blank у лапки. Посилання, на яке я натиснув мою щойно створену вкладку "порожня", було над написанням вмісту на цій вкладці, а не відкриттям нової вкладки. Закриття _blank у лапках змушує хром кожного разу відкривати нову вкладку.
Стів Шерер

Також обов’язково використовуйте "_blank" не "_BLANK". Chrome насправді нерозумно ставиться до справи і не відкриє нову вкладку, використовуючи "_BLANK" кілька разів.
Стів Шерер

5
  • _blank, як цільове значення, щоразу породжує нове вікно,
  • _new породить лише одне нове вікно.

Крім того, кожне посилання, натиснуте на цільове значення _new, замінить сторінку, завантажену у раніше створеному вікні.

Ви можете натиснути тут Коли використовувати _blank або _new, щоб спробувати це самостійно.


Чи можете ви перерахувати, яким браузерам належить, _newяк описано?
Діма Тиснек

@qarma Така поведінка, як описано в усіх браузерах, про яких я знаю, _newне є магічним ключовим словом, це лише ім'я, якщо вікно з цим іменем існує, воно повторно використовувати його, інакше відкриється. Клацання кількох посилань на це вікно просто відкриє різні сторінки у названому вікні, а не відкриє кілька нових сторінок.
scragar

Специфікація фактично пропонує браузерам, що вони ignoreнацілені на те, що починається з підкреслення, але не є ключовими словами. Немає пропозицій щодо того, що повинен робити браузер, коли він "ігнорує" недійсне цільове ім'я. Можливості включають: (1) трактувати його як "_blank" (2) ставитись до нього як до імені вікна (як би не було незаконного підкреслення) (3) трактувати його як явно порожнє ім'я вікна (4) поводитися з ним як там не було атрибутом цілі. - Будь-який браузер міг вибрати будь-яке тлумачення.
Джессі Чісгольм

0

Цільовий атрибут посилання змушує браузер відкривати сторінку призначення у новому вікні браузера. Використання _blankяк цільового значення породжує нове вікно щоразу, коли використання _newбуде породжувати лише одне нове вікно, і кожне посилання, натиснуте на цільове значення _new, замінить сторінку, завантажену у попередньо нерегулярне вікно


0

Щоб відкрити посилання на новій вкладці / вікні, ви будете використовувати <a target="_blank">.

value _blank= цільовий контекст перегляду: новий: вкладка чи вікно залежно від налаштувань перегляду

значення _new= недійсне; немає такого значення в HTML5 для атрибута target на елементі

цільовий атрибут з усіма його значеннями для елемента: демонстрація відео


-1

Використання _New корисно під час роботи над сторінками, які є рамками. Оскільки target = "_ blank" не робить фокусу і відкриває сторінку в тому ж iframe ... target new - найкраще рішення для сторінок Iframe. Всього мої п’ять центів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.