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.
javascript
html
window
Darryl Hein
źródło
źródło
target
et 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.Odpowiedzi:
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 .źródło
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.target="_blank"
to jest dobre, są przyciski udostępniania.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.
źródło
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
a
zmianie elementu, jeżelitarget
atrybut 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.
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.
źródło
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.
źródło
Większość programistów internetowych używa
target="_blank"
tylko do otwierania linków w nowej karcie. Jeśli używasztarget="_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.opener
właściwości.Kod JavaScript:
Zapobieganie:
źródło
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:
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:
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 .
źródło
To na pewno!
http://www.w3.org/TR/2010/WD-html5-20100624/text-level-semantics.html#the-a-element
źródło
Możesz to zrobić w następujący sposób za pomocą jquery, spowoduje to otwarcie go w nowym oknie:
źródło
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.źródło