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ę)?



dzięki za link, ale jaka jest niewielka różnica między nimi, że iframe się nie przestarzały.

1
Ponieważ ramki były od samego początku okropnym pomysłem, ale ramki iframe mają kilka uzasadnionych przypadków użycia?
GordonM

Na przepełnienie stosu: " Frames przestarzałe w HTML5, ale nie iFrames "
WBT

Odpowiedzi:


81

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.


8
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).


7

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.

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.