Dlaczego ramki były przestarzałe w HTML5, ale nie iFrames?
67
Dlaczego ramki były przestarzałe w HTML5, ale nie iFrames? W końcu nie ma prawie żadnej różnicy między nimi. W wielu przypadkach użycie jednego z nich dałoby to samo wyjście (wybacz mi, jeśli się mylę)?
W twoim poście jest kilka nieporozumień. Po pierwsze, elementy framei framesetnie są przestarzałe w HTML5, są przestarzałe (tj. Zostały całkowicie usunięte).
Po drugie, elementy framei framesetnie są tym samym co iframeelement, ani nie dają tego samego wyniku:
framesetElementem zastępuje element ciała w stron jako sposób włączenia innego modelu dokumentu dla stron internetowych: są złe dla użyteczności i dostępności, a co zamierzają osiągnąć zostały całkowicie zastąpione przez CSS i wszechobecnego rozwoju po stronie serwera.
Z iframedrugiej strony element nie zastępuje treści strony. Działa jako sposób na włączenie nowego kontekstu przeglądania osadzonego w bloku treści. Nie ma takich samych problemów z użytecznością lub dostępnością jak model zestawu ramek i jest używany prawie wszędzie tam, gdzie trzeba uwzględnić osadzony kontekst przeglądania (widgety są najbardziej płodnym przykładem). 1
iframeW HTML5 odbywa się również na dodatkowe funkcje, w które może być piaskownicy , pozwalając dokument nadrzędny zdecydować, co zostanie wykonany w nim. Pozwala to na pewien stopień bezpieczeństwa dokumentu nadrzędnego (i osób odwiedzających dokument nadrzędny) podczas osadzania niezaufanej treści.
Notatki
Uwaga 1:object elementem nieco pokrywa się z iframeelementu, ale ma inny model zawartości (który przeznaczony jest głównie dla wtyczek), ma swój własny zestaw zastrzeżeń i nie ma podziału na piaskownice atrybuty iframeelement ma.
Dlaczego elementy zestawu ramek źle wpływają na „użyteczność” i „dostępność”, a elementy iframe nie?
meriton - podczas strajku
18
@meriton Zestaw ramek tworzy stronę z wielu dokumentów o tym samym priorytecie: powoduje to problemy dla czytników ekranu , którzy nie wiedzą, na którym dokumencie należy się skupić w danym momencie. Z drugiej strony elementy iframe są po prostu osadzone na jednej stronie: nie różni się niczym od osadzenia obrazu.
9
Wyzwania dla czytników ekranu: niewidomi, z którymi rozmawiałem, wszyscy powiedzieli, że wolą, aby nawigacja tkwiła w osobnej ramce (nie w ramce iFrame), ponieważ mogą ją zignorować i czytać im tylko wtedy, kiedy chcą. Prawdziwym winowajcą czytników ekranu jest JavaScript i AJAX, co sprawia, że strony są całkowicie bezużyteczne w obecnych czytnikach ekranu (cóż, moje informacje mają około 10 miesięcy). Obsługuje to moje osobiste doświadczenie z czytnikami ekranu.
GlenPeterson
4
Zastanawiałem się, czy wiele aktualizacji z 2005 r. Często wymagało zapewnienia dostępności. Dzięki za sprzeciw w tej sprawie.
Erik Reppen
1
@GlenPeterson ten sam efekt bez elementu ramki można uzyskać, używając CSS, aby element bloku był stały w okienku ekranu. W JAKI sposób należy to zrobić, jeśli chcesz tego rodzaju nawigację. To ma więcej sensu.
netrox
8
Ramki (zestaw ramek) działają jak dokument. Jest usunięty, ponieważ psuje strukturę dokumentów HTML i nawigację. Na przykład. masz linki w jednej ramce, treść w drugiej, nie możesz otworzyć linku ze strony w nowym oknie, nie możesz linkować do konkretnej podstrony itp.
Z drugiej strony, iframe niczego nie zepsują, jeśli zostaną użyte poprawnie, ponieważ mają na celu zawartość w piaskownicy (np. Reklamy).
Zestawy ramek są często używane w taki sposób, że łamią podstawową zasadę sieci - każdy dokument ma jeden adres URL. Prowadzi to do problemów z linkowaniem, zakładkami, wyszukiwarkami itp.
Typowe zastosowanie zestawu ramek to ramka u góry z logo lub nagłówkiem, ramka z boku z menu i ramka zawartości. Ale wyszukiwarki indeksują poszczególne strony, więc gdy znajdziesz jakąś stronę w Google, będzie ona prowadzić bezpośrednio do strony treści bez zestawu ramek, więc stracisz nawigację. Problem z linkami i zakładkami polega na tym, że zazwyczaj chcesz połączyć lub utworzyć zakładkę do określonej strony treści w zestawie ramek, bez utraty samego zestawu ramek. Nie jest to łatwy sposób.
Powodem, dla którego zestawy ramek stały się popularne, było to, że umożliwiały statycznie pozycjonowany nagłówek i menu z przewijanym obszarem zawartości. Ale można to dziś osiągnąć znacznie łatwiej dzięki CSS. Ponadto ramki umożliwiają używanie wspólnych elementów, takich jak logo i menu na wielu stronach, bez konieczności kodowania po stronie serwera. Było to zaletą w czasach, gdy kodowanie po stronie serwera było uciążliwe i podatne na błędy (tj. Skrypty CGI), a wiele hostów w ogóle nie zezwalało na skrypty po stronie serwera. Obecnie w przypadku systemów zarządzania treścią (CMS) i lepszych platform po stronie serwera jest to o wiele lepiej obsługiwane po stronie serwera.
Zasadniczo nie ma korzyści z używania zestawu ramek, po prostu wiele problemów.
Ramek IFrame można używać w taki sam sposób, jak zestawów ramek, i w takim przypadku prowadzą one do tych samych problemów. Ale istnieje również wiele uzasadnionych zastosowań ramek iframe, które nie prowadzą do tych samych problemów.
Odpowiedzi:
W twoim poście jest kilka nieporozumień. Po pierwsze, elementy
frame
iframeset
nie są przestarzałe w HTML5, są przestarzałe (tj. Zostały całkowicie usunięte).Po drugie, elementy
frame
iframeset
nie są tym samym coiframe
element, ani nie dają tego samego wyniku:frameset
Elementem zastępuje element ciała w stron jako sposób włączenia innego modelu dokumentu dla stron internetowych: są złe dla użyteczności i dostępności, a co zamierzają osiągnąć zostały całkowicie zastąpione przez CSS i wszechobecnego rozwoju po stronie serwera.Z
iframe
drugiej strony element nie zastępuje treści strony. Działa jako sposób na włączenie nowego kontekstu przeglądania osadzonego w bloku treści. Nie ma takich samych problemów z użytecznością lub dostępnością jak model zestawu ramek i jest używany prawie wszędzie tam, gdzie trzeba uwzględnić osadzony kontekst przeglądania (widgety są najbardziej płodnym przykładem). 1iframe
W HTML5 odbywa się również na dodatkowe funkcje, w które może być piaskownicy , pozwalając dokument nadrzędny zdecydować, co zostanie wykonany w nim. Pozwala to na pewien stopień bezpieczeństwa dokumentu nadrzędnego (i osób odwiedzających dokument nadrzędny) podczas osadzania niezaufanej treści.Notatki
Uwaga 1:
object
elementem nieco pokrywa się ziframe
elementu, ale ma inny model zawartości (który przeznaczony jest głównie dla wtyczek), ma swój własny zestaw zastrzeżeń i nie ma podziału na piaskownice atrybutyiframe
element ma.źródło
Ramki (zestaw ramek) działają jak dokument. Jest usunięty, ponieważ psuje strukturę dokumentów HTML i nawigację. Na przykład. masz linki w jednej ramce, treść w drugiej, nie możesz otworzyć linku ze strony w nowym oknie, nie możesz linkować do konkretnej podstrony itp.
Z drugiej strony, iframe niczego nie zepsują, jeśli zostaną użyte poprawnie, ponieważ mają na celu zawartość w piaskownicy (np. Reklamy).
źródło
Zestawy ramek są często używane w taki sposób, że łamią podstawową zasadę sieci - każdy dokument ma jeden adres URL. Prowadzi to do problemów z linkowaniem, zakładkami, wyszukiwarkami itp.
Typowe zastosowanie zestawu ramek to ramka u góry z logo lub nagłówkiem, ramka z boku z menu i ramka zawartości. Ale wyszukiwarki indeksują poszczególne strony, więc gdy znajdziesz jakąś stronę w Google, będzie ona prowadzić bezpośrednio do strony treści bez zestawu ramek, więc stracisz nawigację. Problem z linkami i zakładkami polega na tym, że zazwyczaj chcesz połączyć lub utworzyć zakładkę do określonej strony treści w zestawie ramek, bez utraty samego zestawu ramek. Nie jest to łatwy sposób.
Powodem, dla którego zestawy ramek stały się popularne, było to, że umożliwiały statycznie pozycjonowany nagłówek i menu z przewijanym obszarem zawartości. Ale można to dziś osiągnąć znacznie łatwiej dzięki CSS. Ponadto ramki umożliwiają używanie wspólnych elementów, takich jak logo i menu na wielu stronach, bez konieczności kodowania po stronie serwera. Było to zaletą w czasach, gdy kodowanie po stronie serwera było uciążliwe i podatne na błędy (tj. Skrypty CGI), a wiele hostów w ogóle nie zezwalało na skrypty po stronie serwera. Obecnie w przypadku systemów zarządzania treścią (CMS) i lepszych platform po stronie serwera jest to o wiele lepiej obsługiwane po stronie serwera.
Zasadniczo nie ma korzyści z używania zestawu ramek, po prostu wiele problemów.
Ramek IFrame można używać w taki sam sposób, jak zestawów ramek, i w takim przypadku prowadzą one do tych samych problemów. Ale istnieje również wiele uzasadnionych zastosowań ramek iframe, które nie prowadzą do tych samych problemów.
źródło