Czy można używać target = „_ blank” w HTML5?

165

Pamiętam, że czytałem gdzieś, że w HTML5 nie można już używać target="_blank"w HTML5, ale nie mogę go teraz znaleźć.

Czy można nadal używać target="_blank"?

Wiem, że jest to ogólnie uważane za zły pomysł, ale to najłatwiejszy sposób, aby otworzyć nowe okno dla czegoś takiego jak PDF, a także nie wymaga polegania na JavaScript.

Darryl Hein
źródło
5
Ogólnie rzecz biorąc, jeśli chcesz otworzyć zewnętrzną witrynę ze swojej witryny, to moim zdaniem lepszym pomysłem jest otwarcie nowego okna (które prawdopodobnie jest obecnie nową kartą w większości przeglądarek).
hobbes3
7
@ hobbes3, proszę przestań mieszać w mojej nawigacji i historii. To ja przeglądam i to ja decyduję, czy łącze powinno się otwierać w nowej (kliknięcie środkowym przyciskiem) czy na tej samej karcie (kliknięcie lewym przyciskiem myszy). Kiedy natknę się na stronę internetową, która zmusza mnie do przestrzegania jej „słusznej najlepszej praktyki”, otwierając każdy link w nowych kartach, szybko i chętnie ją opuszczę.
Albireo
9
@Albireo, to tylko moja opinia, a niektóre popularne serwisy internetowe również zawierają ten sam pomysł. Na przykład kliknięcie linku w poczcie w Gmailu powoduje domyślnie otwarcie nowego okna.
hobbes3
12
@Albireo, zakładasz, że użytkownik jest zawsze tak zaawansowany i obeznany z technologią, jak Ty.
Mike Campbell
3
Jest powód, dla którego targetet al. istnieć. Czasami są koniecznością. Dynamicznie generowana strona ze stanowym JS, na przykład, gdzie ramka iframe jest mniej pożądana niż nowa karta (np. Przeglądanie pliku PDF, jak stwierdza OP). Lub gdy bezpieczna witryna (taka jak bank) odsyła Cię do zewnętrznego łącza, ale nie pozwala na użycie przycisku Wstecz z powodu wygaśnięcia zawartości. Jak wszystko, ten atrybut HTML nie jest "złym pomysłem" w użyciu, ale powinien być używany z przemyśleniem i ostrożnością, jak w przypadku każdej biblioteki, klasy, funkcji i właściwości w całym programowaniu.
s.co.tt

Odpowiedzi:

159

Wygląda na target="_blank"to, że nadal jest w porządku. Jest wymieniony jako słowo kluczowe kontekstu przeglądania w najnowszej wersji roboczej HTML5 .

mikrofon
źródło
54
target="_blank"spowoduje otwieranie nowego okna za każdym razem, gdy użytkownik kliknie łącze. Chyba że naprawdę chcesz (a rzadko się to zdarza), rozważ użycie, target="somethingUnique"aby użytkownik mógł otworzyć tylko jedno okno, nawet jeśli kliknie łącze kilka razy. To sprawia, że ​​UX jest o wiele przyjemniejszy.
BanksySan
4
@BanksySan: Jednym z przykładów, w których uważam, że target="_blank"to jest dobre, są przyciski udostępniania.
Martin Thoma,
Jeśli czytam długi artykuł i istnieje odniesienie do niektórych powiązanych informacji w innej witrynie (lub tej samej witrynie). Często chcę przeskakiwać między nimi i nie tracić miejsca w oryginalnym artykule. target = "_ blank" jest do tego idealne. Opuszczenie strony i konieczność ponownego ładowania każdej strony na przemian (często tracąc miejsce na którejkolwiek ze stron) nie jest. Tak, wiem, że mogę kliknąć link prawym przyciskiem myszy i otworzyć go w nowej karcie, ale nie chcę, bo to przerwie moją koncentrację i podejrzewam, że większość internautów nie wie jak.
Bob Ray
Atrybut target ma wiele zalet. Nie zamierzam tego zaprzeczać. Reklamodawcy wyskakujący zniszczyli jego cel, ale dziś, gdy tak wiele usług działa poza przeglądaniem, wiele osób nie chce opuszczać bieżącego artykułu lub karty, ale nadal wchodzi w interakcję z ciężkim pobieranym plikiem PDF lub wideo. Używając _blank, upewnij się, że pozwolisz użytkownikowi wypełnić pustą kartę - nie nadpisuj aktualnej zawartości, jeśli udostępniasz wiele linków w tej samej sesji / witrynie. Unikalne nazwy są po prostu chaotyczne na liście audio zawierającej 90 piosenek .... Viva la target, viva la _blank ...
Jonas Lundman
91

Jest w porządku target="_blank"; Zostało to wyeliminowane w XHTML, ponieważ kierowanie na nowe okna zawsze spowoduje wyświetlenie wyskakującego powiadomienia w większości przeglądarek. XHTML zawsze pokaże błąd z atrybutem target w walidacji.

HTML 5 przywrócił go, ponieważ nadal go używamy. To nasz przyjaciel i nie możemy odpuścić.

Nigdy nie puszczaj.

Graham
źródło
To, co twierdzisz, dotyczy tylko ścisłego HTML.
qwertzman
Dla XHTML, jak również dla HTML.
MEMark
15

Chociaż target="_blank"jest akceptowalny w HTML5 , osobiście staram się go nigdy nie używać (nawet do otwierania plików PDF w nowym oknie).

HTML powinien definiować znaczenie i treść . Zadaj sobie pytanie, „miałby sens o azmianie elementu, jeżeli targetatrybut zostały usunięte?”Jeśli nie, kod nie powinien trafiać do HTML. (Właściwie jestem zaskoczony, że W3C go zachowało… Myślę, że naprawdę nie mogą odpuścić.)

Zachowanie przeglądarki , a konkretnie zachowanie interaktywne z użytkownikiem , powinno być implementowane za pomocą języków skryptowych po stronie klienta, takich jak JavaScript. Ponieważ chcesz, aby przeglądarka zachowywała się w określony sposób, tj. Otwierając nowe okno, powinieneś użyć JS. Ale jak wspomniałeś, to zachowanie wymaga, aby przeglądarka polegała na JS. (Chociaż jeśli Twoja witryna degraduje się z wdziękiem lub stopniowo się poprawia, czy cokolwiek innego , to nadal powinno być w porządku. Użytkownicy z wyłączonym JS nie przegapią zbyt wiele.)

To powiedziawszy, żadna z tych odpowiedzi nie jest właściwą. Gdzieś tam jest opinia, że ostateczną decyzję o tym , jak otwiera się łącze, powinien ostatecznie zdecydować użytkownik . Weźmy ten przykład.

Surfujesz po Wikipedii, coraz głębiej i głębiej w króliczą nory. W czytaniu trafiasz na link.

Załóżmy, że chcesz szybko przejrzeć linkowaną stronę przed powrotem. Możesz otworzyć go w nowej karcie, a po zakończeniu zamknąć (ponieważ naciśnięcie przycisku „Wstecz” i oczekiwanie na ponowne załadowanie strony trwa zbyt długo). A co, jeśli wygląda interesująco i chcesz go zachować na później? Może powinieneś zamiast tego otworzyć go w nowej karcie w tle i czytać dalej bieżącą stronę. A może zdecydujesz, że skończyłeś czytać tę stronę, więc po prostu skorzystaj z łącza w bieżącej karcie.

Chodzi o to, że masz własny przepływ pracy i chcesz, aby Twoja przeglądarka zachowywała się odpowiednio. Możesz być bardzo sfrustrowany, jeśli podjął takie decyzje za Ciebie.

Mając to na uwadze, twórcy stron internetowych powinni absolutnie jasno określić, gdzie prowadzą ich linki, do jakich typów i / lub formatów źródeł się odwołują i co robią. Etykietki narzędzi mogą być Twoim znajomym (chyba że używasz tabletu lub telefonu; w takim przypadku określ je w witrynie mobilnej). Wszyscy wiemy, jak bardzo to jest do bani, być zabranym w miejsce, którego się nie spodziewaliśmy lub zrobić coś, czego nie chcieliśmy.

chharvey
źródło
A jeśli ktokolwiek był na tyle sprytny, aby zaprojektować widżet użytkownika, który pozwoliłby bardzo łatwo korzystać z otrzymanego od Boga prawa do kontroli z każdym łączem (łatwo, jak podświadomie), to powinien zostać dodany do przeglądarek i wszystkie znaczniki <a> mogą Zapewnić to.
Mark Goldfain
Ta odpowiedź jest moim zdaniem najbardziej trafna logicznie i architektonicznie. W idealnym świecie autorzy powinni bardziej troszczyć się o właściwą semantyczną identyfikację fragmentów, a mniej o z góry ustalanie zachowania fragmentów. W wyłaniającym się uniwersum treści adaptacyjnych zachowanie okien może zależeć od tego, który motyw responsywny lub preferencje użytkownika obowiązują w czasie żądania; wychodząca „rzecz” semantyczna jest modyfikowana tylko wtedy, gdy jest to konieczne, poprzez transformację (DOM lub wyrażenie regularne, serwer lub przeglądarka). W ten sposób zachowanie okien MOŻE zależeć od użytkownika, a nie od autora w CMS.
Don Day
12

to najłatwiejszy sposób, aby otworzyć nowe okno dla czegoś takiego jak PDF

Jest to również najłatwiejszy sposób na zirytowanie użytkowników spoza systemu Windows. PDF otwiera się dobrze w przeglądarkach na innych platformach. Otwarcie nowego okna psuje również historię nawigacji i komplikuje sprawę na mniejszych platformach, takich jak smartfony.

NIE otwieraj nowych okien dla rzeczy takich jak PDF tylko dlatego, że starsze wersje systemu Windows zostały uszkodzone.

Homer
źródło
11
Wiesz, co pomaga, gdy mówisz ludziom, żeby czegoś nie używali? Pokazuje im, co do użycia, HTML5 atrybut pobrania: <a download="[file nazwa here]" href="file.ext"> itp </a> .
John
5

Większość programistów internetowych używa target="_blank"tylko do otwierania linków w nowej karcie. Jeśli używasz target="_blank"tylko do otwierania łączy w nowej karcie, jest ona narażona na atakującego. Po otwarciu łącza w nowej karcie ( target="_blank") strona otwierana w nowej karcie może uzyskać dostęp do początkowej karty i zmienić jej położenie za pomocą window.openerwłaściwości.

Kod JavaScript:

window.opener.location.replace(malicious URL)

Zapobieganie:

rel="nofollow noopener noreferrer"
Vamshi Krishna
źródło
Nie jestem pewien, czy nofollow jest związane z bezpieczeństwem - dotyczy botów wyszukiwarek.
Darryl Hein
4

Chociaż cel jest nadal akceptowalny w HTML5, nie jest preferowany. Aby utworzyć łącze do pliku PDF, pobierz plik atrybutu zamiast atrybutu docelowego.

Oto przykład:

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

Jeśli oryginalna nazwa pliku jest zakodowana w celu unikatowego przechowywania plików, możesz określić przyjazną dla użytkownika nazwę pobierania, przypisując wartość do atrybutu pobierania:

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

Należy pamiętać, że chociaż większość nowoczesnych przeglądarek obsługuje tę funkcję, niektóre mogą nie. Więcej informacji można znaleźć na caniuse.com .

kojow7
źródło
0

Możesz to zrobić w następujący sposób za pomocą jquery, spowoduje to otwarcie go w nowym oknie:

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

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

</script>
Johan Stiven Hernandez Osorio
źródło
Dlaczego nie dodać formularza wokół przycisku z target = "_ blank". Wydaje się, że byłoby to łatwiejsze i wyeliminowałoby potrzebę JS.
Darryl Hein
-1

Myślę, że atrybut target jest przestarzały dla <link>elementu, a nie <a>, prawdopodobnie dlatego słyszałeś, że nie powinien już być używany.

Erik Bi
źródło