HTML - Historyczny lub techniczny powód target = „_ blank” z podkreśleniem?


14

Do dziś zastanawiam się, dlaczego target="_blank"tak się nie stało target="blank". Jestem pewien, że przeglądarki również to rozumieją.

Czy istnieją jakieś historyczne lub techniczne przyczyny tej decyzji / specyfikacji?


Cała targetkoncepcja, choć nadal dozwolona w HTML 5, jest ogólnie uważana za przestarzałą. w3.org/community/webed/wiki/HTML_links_-_lets_build_a_web (w 7 Frames and popups — just say nosekcji)
Jens Mühlenhoff

1
Czy ktoś może mi wyjaśnić, dlaczego to pytanie nie zostało przeniesione do StackOverflow do tej witryny? Jest to idealny wybór dla SO i bardzo słaby dla SU - według mojej opinii.
trejder

Odpowiedzi:


21

Jeśli było użyć target="blank"linku zostanie otwarty w nowym oknie / karcie. Istnieje jednak subtelna różnica. Ponowne kliknięcie linku spowoduje ponowne użycie okna, które zostało otwarte za pierwszym razem, zamiast otwierania nowego.

Wynika to z faktu, że tego targetatrybutu można użyć nie tylko do otwierania nowego okna. Ma cztery wbudowane wartości, ale umożliwia także określenie własnego celu. Jeśli spojrzysz na odpowiednią stronę W3 Schools , zobaczysz następujące opcje:

  • _blank Otwiera połączony dokument w nowym oknie lub karcie
  • _self Otwiera połączony dokument w tej samej ramce, w której został kliknięty (jest to ustawienie domyślne)
  • _parent Otwiera połączony dokument w ramce nadrzędnej
  • _top Otwiera połączony dokument w całej treści okna
  • <framename> Otwiera połączony dokument w nazwanej ramce

Wiele z tego nie ma sensu, chyba że zrozumiesz trochę na temat ramek HTML. Użycie <frameset>znacznika HTML pozwala podzielić okno przeglądarki na osobne sekcje (ramki), każda z własną stroną. Nadając ramce nazwę i używając targetatrybutu w linkach, można kontrolować, która ramka powinna wyświetlać odpowiednią treść.

Istnieją jednak dodatkowe reguły dotyczące atrybutu docelowego, które muszą stosować przeglądarki:

  • Jeśli celem jest nazwa określona przez użytkownika, musi zaczynać się od litery (bez podkreślników, cyfr itp.)
  • Jeśli celem jest nazwa określona przez użytkownika, ale żadna ramka / okno nie pasuje do tej nazwy, utwórz nową kartę / okno, używając tej nazwy. Właśnie dlatego target="blank"działa tak, jak działa.

Zasadniczo nie ma powodu, aby zmieniać obecną konwencję, ponieważ _blankjest to szczególny przypadek. Pierwotnego rodzaju ramek nie można już więcej używać, ale istnieją inne przypadki, w których można nazwać obiekty, z którymi współpracuje atrybut docelowy, np. Ramki iframe, które są pojedynczymi ramkami osadzonymi bezpośrednio na stronie. Zmiana standardu spowodowałaby uszkodzenie wielu istniejących stron bez żadnych korzyści.


7
Nie powinieneś odwoływać się do W3Schools: w3fools.com
Jens Mühlenhoff

2
Nie zgadzam się, że W3Schools nie jest najlepszy do wytycznych dotyczących projektowania stron internetowych lub że używanie linków z atrybutem target jest nieaktualne. Jednak wykorzystałem te informacje, aby konkretnie odpowiedzieć na pierwotne pytanie.
James P

1
Myślę, że powiązanie z zasobami, o których wiadomo, że są problematyczne, nie jest dobrym pomysłem. Twoja odpowiedź jest w porządku.
Jens Mühlenhoff

1
Chciałem, aby dodatkowy target="_blank"atrybut nie był potrzebny, ale zamiast tego moglibyśmy po prostu dodać znak do adresu URL, np <a href="*https://www.stackoverflow.com">Stackoverflow</a>. Gwiazdkę . To zaoszczędziłoby tyle pisania :)
Kai Noack
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.