Чи добре використовувати target = "_ blank" у HTML5?


165

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

Чи добре продовжувати користуватися target="_blank"?

Я знаю, що це взагалі вважається поганою ідеєю, але найпростішим способом відкрити нове вікно для чогось типу PDF, а також не потрібно покладатися на JavaScript.


5
Ну, загалом, якщо ви хочете відкрити зовнішній сайт зі свого сайту, то, на мою думку, відкриття нового вікна (яке, мабуть, є новою вкладкою у більшості браузерів сьогодні).
hobbes3

7
@ hobbes3, будь ласка, перестаньте псувати мою навігацію та мою історію. Я переглядаю саме мене, і саме я вирішую, чи слід відкрити посилання на новій (середній клацання) або на тій же вкладці (клацання лівою кнопкою миші). Коли я натрапляю на веб-сайт, який змушує мене дотримуватися його "законної найкращої практики", відкриваючи кожне посилання на нових вкладках, я негайно та із задоволенням залишу.
Альбірео

9
@Albireo, це лише моя думка, і деякі популярні веб-сервіси містять ту саму ідею. Наприклад, натискання на посилання в пошті в Gmail відкриває нове вікно за замовчуванням.
hobbes3

12
@Albireo ви припускаєте, що користувач завжди такий же просунутий і технологічний, як і ви.
Майк Кемпбелл

3
Є причина, чому targetспівавтори та ін. існують. Іноді вони є необхідністю. Динамічно генерована сторінка з видатним JS, наприклад, де кадр менш бажаний, ніж нова вкладка (наприклад, перегляд PDF, як заявляється в ОП). Або коли захищений веб-сайт (наприклад, банк) надсилає вас до зовнішнього посилання, але не дозволяє використовувати кнопку "назад" через закінчення терміну дії контенту. Як і всі речі, цей атрибут 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 ...
Jonas Lundman

91

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

HTML 5 повернув його назад, оскільки ми все ще використовуємо його. Це наш друг, і ми не можемо відпустити його.

Ніколи не відпускати.


Те, що ви заявляєте, дійсне лише для суворого HTML.
qwertzman

Як для XHTML, так і для HTML.
ПАМ'ЯТ

15

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

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

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

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

Ви займаєтесь серфінгом у Вікіпедії, заглиблюючись у глибину нору кролика. Ви натрапляєте на посилання у своєму читанні.

Скажімо, ви хочете дуже швидко переглядати пов’язану сторінку перед поверненням. Ви можете відкрити його на новій вкладці, а потім закрити, коли закінчите (адже натискання кнопки «назад» та очікування перезавантаження сторінки займе занадто довго). Або що робити, якщо це виглядає цікаво, і ви хочете зберегти його на потім? Можливо, вам слід відкрити його на новій вкладці тла та продовжувати читати поточну сторінку. Або, можливо, ви вирішили прочитати цю сторінку, тому просто перейдете за посиланням на поточній вкладці.

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

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


І якщо хтось виявився достатньо розумним, щоб створити віджет користувача, який дозволив би дуже легко здійснювати своє дане Богом право управління з кожним посиланням (легко, як підсвідомо), то його слід додавати до браузерів та всіх тегів <a> забезпечити це.
Марк Голдфайн

На мою думку, ця відповідь є логічно та архітектурно найбільш точною. В ідеальному світі авторів слід більше турбуватися про правильну семантичну ідентифікацію шматочків, а менше - про заздалегідь визначеність поведінки. У всесвіті адаптивного контенту, що розвивається, поведінка вікон може залежати від того, яка чуйна тема чи переваги користувача діють під час запиту; вихідна смислова "річ" змінюється лише в міру необхідності шляхом перетворення (DOM або регулярний вираз, сервер або браузер). Таким чином, поведінка вікон МОЖЕ бути відповідно до користувача, а не автора в CMS.
Донський день

12

це найпростішим способом відкрити нове вікно для чогось типу PDF

Це також найпростіший спосіб дратувати користувачів, які не є Windows. PDF відкривається просто чудово в браузерах на інших платформах. Відкриття нового вікна також зіпсує історію навігації та ускладнює справу на менших платформах, таких як смартфони.

НЕ відкривайте нові вікна для таких речей, як PDF, лише тому, що старіші версії Windows були зламані.


11
Знайте, що допомагає, коли ви говорите людям щось не використовувати? Показуючи їм, що потрібно використовувати, атрибут завантаження HTML5: <a download=" evidencefile name hereSense" href="file.ext"> тощо </a> .
Іван

5

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

Код Javascript:

window.opener.location.replace(malicious URL)

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

rel="nofollow noopener noreferrer"

Я не впевнений, що відсутність стосується безпеки - це для ботів пошукових систем.
Дарріл Хайн

4

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

Ось приклад:

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

Якщо оригінальне ім'я файлу кодується для унікального зберігання файлів, ви можете вказати зручне ім'я для завантаження, призначивши значення атрибуту завантаження:

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

Майте на увазі, що хоча більшість сучасних браузерів підтримують цю функцію, деякі можуть не робити. Дивіться caniuse.com для отримання додаткової інформації.



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

Я думаю, що цільовий атрибут застарілий для <link>елемента, ні <a>, ймовірно, саме тому ви чули, що його більше не слід використовувати.

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