Waarom zijn frames verwijderd in HTML5, maar niet in iFrames? Er is tenslotte bijna geen verschil tussen de twee. In veel gevallen zou het gebruik van een van beide dezelfde uitvoer geven (excuseer me als ik het mis heb)?

Reacties

Antwoord

Er zijn een aantal misvattingen in uw bericht. Ten eerste, de frame en frameset -elementen zijn niet verouderd in HTML5, ze zijn “re verouderd (dwz ze “zijn volledig verwijderd).

Ten tweede, de frame en

-elementen zijn niet hetzelfde als het iframe -element, en ze geven ook niet dezelfde uitvoer:

  • Het frameset -element vervangt het body-element in paginas als een manier om een ander documentmodel voor webpaginas op te nemen: ze zijn slecht voor de bruikbaarheid en toegankelijkheid, en voor wat ze bedoeld hebben te bereiken zijn volledig vervangen door CSS en alomtegenwoordige server-side ontwikkeling.

  • Het iframe -element, aan de andere kant, doet vervangt niet de hoofdtekst van een pagina. Het fungeert als een middel om een nieuwe browse-context op te nemen die is ingesloten in een inhoudsblok. Het heeft niet dezelfde bruikbaarheid of toegankelijkheidsproblemen als het frameset-model en wordt bijna overal gebruikt waar een ingebedde browsercontext nodig is (widgets zijn het meest productieve voorbeeld). 1

De iframe in HTML5 neemt ook extra functies over doordat het sandboxing , waardoor het bovenliggende document kan beslissen wat erin wordt uitgevoerd. Dit zorgt voor een zekere mate van beveiliging voor het bovenliggende document (en bezoekers van het bovenliggende document) bij het insluiten van niet-vertrouwde inhoud.


Opmerkingen

Opmerking 1: het object -element overlapt enigszins met het iframe -element, maar het heeft een ander inhoudsmodel (dat voornamelijk bedoeld is voor plug-ins), heeft zijn eigen set waarschuwingen en “niet de sandbox-attributen die het iframe -element heeft.

Reacties

  • Waarom zijn frameset-elementen slecht voor " bruikbaarheid " en " toegankelijkheid " maar iframe-elementen zijn ' t?
  • @meriton De frameset bouwt een pagina op uit meerdere documenten die allemaal met dezelfde prioriteit: dit veroorzaakt uitdagingen voor schermlezers die niet weten op welk document ze op een bepaald moment moeten focussen. I frame-elementen daarentegen zijn gewoon ingebed in een enkele pagina: het ' is niet anders dan een ingesloten afbeelding.
  • Uitdagingen voor schermlezers: De blinde mensen met wie ik heb gesproken, hebben allemaal gezegd dat ze de navigatie liever in een apart frame vastzetten (niet iFrame) omdat ze het kunnen negeren en het alleen kunnen laten voorlezen wanneer ze dat willen. De echte boosdoener voor schermlezers is Javascript en AJAX, waardoor paginas volledig onbruikbaar zijn voor huidige schermlezers (nou ja, mijn informatie is ongeveer 10 maanden oud). Mijn persoonlijke ervaring met schermlezers ondersteunt dit.
  • Ik ' heb me afgevraagd of veel van ' s vaak vereiste toegankelijkheidsverklaringen zijn ' niet te laat voor een update. Bedankt voor het verschil van mening hierover.
  • @GlenPeterson hetzelfde effect zonder frame-element kan worden bereikt door CSS te gebruiken om het blokelement vast te zetten in de viewport. Dat is HOE het moet worden gedaan als u dat soort navigatie wilt. Het is logischer.

Answer

Framesets worden vaak gebruikt op een manier waarbij ze het fundamentele principe van het web – dat elk document een enkele URL heeft. Dit leidt tot problemen met linken, bladwijzers, zoekmachines enz.

Het typische gebruik van een frameset is een frame bovenaan met een logo of koptekst, een frame aan de zijkant met een menu en een inhoudsframe. Maar zoekmachines indexeren individuele paginas, dus wanneer u een pagina in Google vindt, zou deze rechtstreeks naar de inhoudspagina linken zonder de frameset, zodat u de navigatie kwijtraakt.Het probleem met links en bladwijzers is dat u normaal gesproken een bepaalde inhoudspagina binnen de frameset wilt linken of bookmarken, zonder de frameset zelf te verliezen. Het is geen gemakkelijke manier om dat te doen.

De reden dat framesets in de eerste plaats populair werden, was omdat ze een statisch geplaatste koptekst en menu met een scrollend inhoudsgebied toestonden. Maar dat kan tegenwoordig veel gemakkelijker worden bereikt met CSS. Bovendien lieten frames je toe om gemeenschappelijke elementen zoals logos en menus op meerdere paginas te gebruiken zonder enige server-side codering. Dit was een voordeel in een tijd waarin codering aan de serverzijde vervelend en foutgevoelig was (bijv. CGI-scripts), en veel hosts “server-side scripting helemaal niet toelieten. Tegenwoordig met Content Management Systemen (CMS) en betere server-side platforms, wordt dit veel beter afgehandeld aan de serverkant.

Dus eigenlijk zijn er geen voordelen aan het gebruik van een frameset, alleen veel problemen.

IFrames can op dezelfde manier worden gebruikt als framesets werden gebruikt, en in dat geval leiden ze ook tot dezelfde problemen. Maar er zijn ook veel legitieme toepassingen van iframes die niet tot dezelfde problemen leiden.

Answer

Frames (frameset) fungeren als document. Het wordt verwijderd omdat het de structuur en navigatie van HTML-documenten doorbreekt. Bijv. je hebt links in het ene frame, inhoud in het andere, je kunt “geen link openen vanaf de pagina in een nieuw venster, je kunt niet linken naar een specifieke subpagina, enz.

Aan de andere kant hand-iframes zullen niets breken als ze correct worden gebruikt, omdat ze bedoeld zijn om inhoud te sandboxen (bijv. advertenties).

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *