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.
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 :)
target
koncepcja, choć nadal dozwolona w HTML 5, jest ogólnie uważana za przestarzałą. w3.org/community/webed/wiki/HTML_links_-_lets_build_a_web (w7 Frames and popups — just say no
sekcji)Odpowiedzi:
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
target
atrybutu 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 ramceWiele 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ąctarget
atrybutu 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:
target="blank"
działa tak, jak działa.Zasadniczo nie ma powodu, aby zmieniać obecną konwencję, ponieważ
_blank
jest 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.źródło
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 :)