Por que os quadros foram descontinuados no HTML5, mas não os iFrames?
67
Por que os quadros foram descontinuados no HTML5, mas não os iFrames? Afinal, quase não há diferença entre os dois. Em muitos casos, usar um deles daria a mesma saída (me perdoe se eu estiver errado)?
Há alguns conceitos errados em sua postagem. Primeiro, os elementos framee framesetnão são preteridos no HTML5, eles são obsoletos (ou seja, foram removidos completamente).
Segundo, os elementos framee framesetnão são a mesma coisa que o iframeelemento, nem fornecem a mesma saída:
O framesetelemento substitui o elemento body nas páginas como um meio de incluir um modelo de documento diferente para as páginas da Web: elas são ruins para usabilidade e acessibilidade e o que pretendiam realizar foi completamente substituído pelo CSS e pelo onipresente desenvolvimento do lado do servidor.
O iframeelemento, por outro lado, não substitui o corpo de uma página. Ele atua como um meio de incluir um novo contexto de navegação incorporado em um bloco de conteúdo. Ele não sofre dos mesmos problemas de usabilidade ou acessibilidade que o modelo de conjunto de quadros e é usado em quase qualquer lugar que seja necessário incluir um contexto de navegação incorporado (os widgets são o exemplo mais prolífico). 1
O iframeHTML5 também possui recursos adicionais, pois pode ser protegido por uma caixa de areia , permitindo que o documento pai decida o que é executado dentro dele. Isso permite alguma medida de segurança para o documento pai (e visitantes do documento pai) ao incorporar conteúdo não confiável.
Notas
Nota 1: o objectelemento se sobrepõe um pouco ao iframeelemento, mas possui um modelo de conteúdo diferente (destinado principalmente a plug-ins), tem seu próprio conjunto de advertências e não possui os atributos de sandbox do iframeelemento.
Por que os elementos do conjunto de quadros são ruins para "usabilidade" e "acessibilidade", mas os elementos iframe não são?
meriton - em greve
18
@meriton O conjunto de quadros constrói uma página com vários documentos, todos com a mesma prioridade: isso causa desafios para os leitores de tela que não sabem em qual documento focar em um momento específico. Os elementos iframe, por outro lado, são simplesmente incorporados em uma única página: não é diferente de ter uma imagem incorporada.
9
Desafios para os leitores de tela: As pessoas cegas com quem falei disseram que preferem que a navegação fique presa em um quadro separado (não no iFrame) porque podem ignorá-lo e fazer com que seja lida para eles quando quiserem. O verdadeiro culpado para os leitores de tela é Javascript e AJAX, que tornam as páginas completamente inutilizáveis com os leitores de tela atuais (bem, minhas informações têm cerca de 10 meses). Minha experiência pessoal com leitores de tela suporta isso.
GlenPeterson
4
Fiquei me perguntando se muitas das afirmações de acessibilidade frequentemente solicitadas em 2005 não estavam atrasadas para uma atualização. Obrigado pela dissidência.
Erik Reppen
11
@GlenPeterson, o mesmo efeito sem o elemento frame pode ser alcançado usando CSS para tornar o elemento block corrigido na viewport. É assim que deve ser feito se você deseja esse tipo de navegação. Faz mais sentido.
Netrox
8
Quadros (conjunto de quadros) atua como documento. Ele foi removido porque quebra a estrutura e a navegação dos documentos HTML. Por exemplo. você tem links em um quadro, conteúdo no outro, não é possível abrir o link da página em uma nova janela, não é possível vincular a uma subpágina específica etc.
Por outro lado, os iframes não quebram nada se usados corretamente, porque são destinados ao conteúdo da caixa de areia (por exemplo, anúncios).
Os conjuntos de quadros geralmente são usados de uma maneira que violam o princípio fundamental da Web - que cada documento tenha um único URL. Isso leva a problemas com links, favoritos, mecanismos de pesquisa etc.
O uso típico de um conjunto de quadros seria um quadro na parte superior com um logotipo ou cabeçalho, um quadro ao lado com um menu e um quadro de conteúdo. Mas os mecanismos de pesquisa indexam páginas individuais; portanto, quando você encontra alguma página no Google, ela é vinculada diretamente à página de conteúdo sem o conjunto de quadros, para que você perca a navegação. O problema com links e marcadores é que você normalmente deseja vincular ou marcar uma página de conteúdo específica dentro do conjunto de quadros, sem perder o próprio conjunto de quadros. Não é uma maneira fácil de fazer isso.
A razão pela qual os conjuntos de quadros se tornaram populares em primeiro lugar foi porque eles permitiram um cabeçalho e menu posicionados estaticamente com uma área de conteúdo de rolagem. Mas isso pode ser conseguido muito mais facilmente com o CSS hoje. Além disso, os quadros permitiam o uso de elementos comuns, como logotipos e menus, em várias páginas, sem o uso de nenhuma codificação no servidor. Essa era uma vantagem em um momento em que a codificação do servidor era entediante e propensa a erros (por exemplo, scripts CGI), e muitos hosts não permitiam nenhum script do lado do servidor. Hoje, com sistemas de gerenciamento de conteúdo (CMS) e melhores plataformas do lado do servidor, isso é muito melhor tratado no lado do servidor.
Então, basicamente, não há vantagens em usar um conjunto de quadros, apenas muitos problemas.
Os IFrames podem ser usados da mesma maneira que os conjuntos de quadros e, nesse caso, também levam aos mesmos problemas. Mas também existem muitos usos legítimos de iframes que não levam aos mesmos problemas.
Respostas:
Há alguns conceitos errados em sua postagem. Primeiro, os elementos
frame
eframeset
não são preteridos no HTML5, eles são obsoletos (ou seja, foram removidos completamente).Segundo, os elementos
frame
eframeset
não são a mesma coisa que oiframe
elemento, nem fornecem a mesma saída:O
frameset
elemento substitui o elemento body nas páginas como um meio de incluir um modelo de documento diferente para as páginas da Web: elas são ruins para usabilidade e acessibilidade e o que pretendiam realizar foi completamente substituído pelo CSS e pelo onipresente desenvolvimento do lado do servidor.O
iframe
elemento, por outro lado, não substitui o corpo de uma página. Ele atua como um meio de incluir um novo contexto de navegação incorporado em um bloco de conteúdo. Ele não sofre dos mesmos problemas de usabilidade ou acessibilidade que o modelo de conjunto de quadros e é usado em quase qualquer lugar que seja necessário incluir um contexto de navegação incorporado (os widgets são o exemplo mais prolífico). 1O
iframe
HTML5 também possui recursos adicionais, pois pode ser protegido por uma caixa de areia , permitindo que o documento pai decida o que é executado dentro dele. Isso permite alguma medida de segurança para o documento pai (e visitantes do documento pai) ao incorporar conteúdo não confiável.Notas
Nota 1: o
object
elemento se sobrepõe um pouco aoiframe
elemento, mas possui um modelo de conteúdo diferente (destinado principalmente a plug-ins), tem seu próprio conjunto de advertências e não possui os atributos de sandbox doiframe
elemento.fonte
Quadros (conjunto de quadros) atua como documento. Ele foi removido porque quebra a estrutura e a navegação dos documentos HTML. Por exemplo. você tem links em um quadro, conteúdo no outro, não é possível abrir o link da página em uma nova janela, não é possível vincular a uma subpágina específica etc.
Por outro lado, os iframes não quebram nada se usados corretamente, porque são destinados ao conteúdo da caixa de areia (por exemplo, anúncios).
fonte
Os conjuntos de quadros geralmente são usados de uma maneira que violam o princípio fundamental da Web - que cada documento tenha um único URL. Isso leva a problemas com links, favoritos, mecanismos de pesquisa etc.
O uso típico de um conjunto de quadros seria um quadro na parte superior com um logotipo ou cabeçalho, um quadro ao lado com um menu e um quadro de conteúdo. Mas os mecanismos de pesquisa indexam páginas individuais; portanto, quando você encontra alguma página no Google, ela é vinculada diretamente à página de conteúdo sem o conjunto de quadros, para que você perca a navegação. O problema com links e marcadores é que você normalmente deseja vincular ou marcar uma página de conteúdo específica dentro do conjunto de quadros, sem perder o próprio conjunto de quadros. Não é uma maneira fácil de fazer isso.
A razão pela qual os conjuntos de quadros se tornaram populares em primeiro lugar foi porque eles permitiram um cabeçalho e menu posicionados estaticamente com uma área de conteúdo de rolagem. Mas isso pode ser conseguido muito mais facilmente com o CSS hoje. Além disso, os quadros permitiam o uso de elementos comuns, como logotipos e menus, em várias páginas, sem o uso de nenhuma codificação no servidor. Essa era uma vantagem em um momento em que a codificação do servidor era entediante e propensa a erros (por exemplo, scripts CGI), e muitos hosts não permitiam nenhum script do lado do servidor. Hoje, com sistemas de gerenciamento de conteúdo (CMS) e melhores plataformas do lado do servidor, isso é muito melhor tratado no lado do servidor.
Então, basicamente, não há vantagens em usar um conjunto de quadros, apenas muitos problemas.
Os IFrames podem ser usados da mesma maneira que os conjuntos de quadros e, nesse caso, também levam aos mesmos problemas. Mas também existem muitos usos legítimos de iframes que não levam aos mesmos problemas.
fonte