Estas páginas foram substituídas. Por favor, dirija-se para o novo endereço www.gomes-mota.nome.pt/joao/www/nr.
Mantém-se esta versão para efeitos de arquivo.
Frames: as mal amadas |
mais links | ||
---|---|---|---|
INTERNET: NOTAS e REFLEXÕES |
|||
|
|||
Ao contrário da maioria dos especialistas, entre as quais Jakob Nielsen, um reputado crítico de web design, penso que as frames são uma técnica muito útil e, em certos casos, ainda sem alternativas competitivas. Esta nota teria sido mais pertinente em 1998, numa época em que a maioria das páginas na Web eram construídas (codificadas) "à mão". Em finais de 2001, a maioria das páginas empresariais e institucionais - que já representam a larga maioria dos conteúdos disponíveis na Web - são construídas automaticamente a partir de bases de dados, eliminando boa parte da motivação para o uso de frames. O uso de frames justificava-se como uma forma de atingir determinados objectivos a baixos custos e sem intervenções do lado do servidor onde estavam alojadas as páginas. A partir do momento em que a presença de uma entidade na Web justifica o investimento em software de geração automática de páginas e em servidores dedicados, as vantagens das frames reduzem-se, como se tenta ilustrar no gráfico abaixo, onde se cruza o orçamento disponível com as competências dos web designers:
Os criadores mais inexperientes devem abster-se de usar frames pois não sabem evitar as armadilhas mais evidentes (cf. Jakob Nielsen). Noto com satisfação que a maioria dos sítios que usam frames já corrigiram estes erros de principiante. A partir do momento em que o autor já tem conhecimentos médios mas ainda não tem orçamento, as frames tornam-se muito úteis, especialmente nos casos que veremos abaixo. Isto é indicado pelo pico maior na Figura 1. Para um nível de experiência médio, mas com um orçamento superior, torna-se compensador aprender tecnologias activas (CGI, ASP, PHP, etc.) que permitem criar páginas dinamicamente, reduzindo o interesse do uso de frames na generalidade dos casos. Para os autores com boas competências de HTML, as frames continuam a ser interessantes em aplicações de nicho e só são substituíveis por enormes orçamentos. Estas aplicações estão representadas no segundo pico da Figura 1. Finalmente, há casos pontuais onde nenhum orçamento consegue substituir com vantagem o uso de frames. Note-se que além do custo de criação e manutenção dos sítios há que considerar o custo de acesso, medido em tempo de espera e carregamento e, possivelmente, em bytes transmitidos. Ao aumentar a importância relativa do custo de utilização, o uso de frames pode tornar-se vantajoso, mesmo em casos em que o orçamento não constrangeria outras soluções.
|
|||
Origem e compatibilidade das framesAs tags de As frames são reconhecidas pela esmagadora maioria dos browsers para computadores pessoais e para televisão. Contudo, encontrei já algumas versões de browsers para computadores de bolso (Personal Digital Assistant) que não reconhecem frames, bem como os browsers auditivos ou em formato de texto. Mais à frente apresentarei soluções que minimizam os problemas de compatibilidade, permitindo o acesso à informação aos utilizadores desses browsers.
|
|||
Exemplos simples de utilização de framesComeçarei pela ilustração de casos de utilização simples de frames, acessíveis aos autores com conhecimentos médios de HTML (representando o maior pico do gráfico da Figura 1). 1. Uma barra de navegação sempre visívelEsta é a utilização mais antiga e mais frequente das frames. Quando as frames surgiram em 1995 (Netscape 2.0) muitas páginas HTML eram textos muito longos com algumas imagens. Ao fim de vários scrolls, era reconfortante ter sempre visível uma barra de navegação, normalmente do lado esquerdo.
A barra de navegação contém os ponteiros (links) para os vários documentos e alguma informação de autoria (entidade responsável, logotipo, e-mail, morada e telefone, etc.). No limite, este modelo foi usado para indicar as várias secções dentro de um único documento. Creio que esta utilização é negativa, pois dificulta o acesso à página de conteúdo ao ocultar o endereço e aumenta o número de ligações ao servidor - uma por cada ligação - sem vantagens significativas. É preferível o sistema de índice na própria página como uso nesta nota. 2. Uma barra de navegação independente das páginas de conteúdosQuando um sítio na Web é criado e mantido por várias pessoas com experiência limitada e ainda menores recursos (tempo e orçamento), é por vezes difícil garantir que todos usem um mesmo template (modelo) de página e que as barras de navegação das páginas já publicadas são actualizadas à medida que o sítio evolui. Nestes casos, uma solução eficaz, garantindo a continuidade da navegação com um esforço (custo) mínimo, é incluir em cada página um ponteiro (link) para a página de entrada (homepage) e uma barra de navegação apresentada numa frame separada. O desenho das páginas do sítio será semelhante ao da Figura 2, podendo variar a posição da barra de navegação. Entre 1997 e 1999 foram populares alguns esquemas de frames (framesets) mais complexos, com várias barras de navegação, frames com informação de copyright no rodapé, hierarquias de frames em vários níveis, além de inúmeras variações. Contudo, à medida que o design web se foi institucionalizando, a maioria dos sítios convergiu para modelos mais simples e mais universais (no sentido de serem acessíveis pelo maior número de pessoas). Hoje o esquema de frames mais frequente é o original (Figura 2): duas frames, navegação à esquerda e conteúdo à direita.
Quando a razão entre a informação e a navegação é pequena (medida em número de bytes a transmitir) torna-se muito ineficiente enviar a cada página uma nova barra de navegação. Aumenta-se o tempo de espera do utilizador e o custo (telefone ou largura de banda). Nestes casos, é preferível enviar a barra de navegação uma única vez e apresentá-la numa frame própria e enviar as páginas de informação noutra frame. Um exemplo clássico deste tipo de páginas são os fóruns, onde os utilizadores contribuem com perguntas e respostas curtas. Sem frames, a informação nova representará em média uma pequena parcela (tipicamente inferior a 10%) do número de bytes transmitidos. Com frames, a informação é nova claramente preponderante e pode chegar aos 90% do total de bytes transmitidos. 3. Acesso simultâneo a dois documentosPara comparar dois documentos ou para usar um documento em apoio de outro é muito eficaz usar frames. Dois exemplos clássicos desta utilização são a análise de textos e os dicionários.
No caso dos dicionários especializados ou glossários a aplicação faz-se da forma seguinte: o autor de um texto criará numa página separada um glossário onde incluirá a definição das palavras ou expressões relevantes. O documento principal é apresentado numa frame maior (ver Figura 4). Ao longo do texto, o autor indicará com uma ligação (link) todos os termos que constarem do glossário. Sempre que o leitor tiver uma dúvida sobre um desses termos, activa a ligação (clicando sobre a palavra, por exemplo), surgindo a definição na frame inferior.
4. Exemplo: uma pequena empresa de pesca (ou uma escola)A possibilidade de comparar dois ou mais documentos na mesma janela permite conceber formas intuitivas e eloquentes de apresentar informação. Tal como um gráfico consegue traduzir a informação de um texto ou de uma tabela de forma imediata e clarividente, a apresentação simultânea de múltiplos documentos torna evidentes alguns aspectos da informação enquanto revela aspectos antes obscuros. Por exemplo, imagine-se uma pequena empresa de pesca (ou uma escola). Recorrendo a uma estrutura do tipo da Figura 3 é possível apresentar um tipo de dados numa das frames enquanto se apresentam dados comparativos na outra. Torna-se imediato seguir as capturas das várias espécies de pescado para meses homólogos em anos diferentes (ou as notas de uma turma a cada disciplina nos vários períodos lectivos), comparar o desempenho dos vários barcos (ou das várias turmas), analisar as capturas por espécie (ou as classificações por disciplina), etc.. Para obter estes resultados basta registar as tabelas e gerar os gráficos para as várias variáveis, guardá-los em páginas HTML clássicas e chamá-las manualmente. Tudo isto é feito sem JavaScript, sem bases de dados, sem CGI e pode ser realizado por pessoas com competências médias de HTML. Se os autores tiverem conhecimentos sólidos de JavaScript, podem automatizar algumas tarefas e tornar a apresentação mais agradável, mas ainda assim, trata-se da mesma informação guardada num servidor estático. Finalmente, se os recursos humanos e financeiros possibilitarem soluções activas, os dados são armazenados numa base de dados e as páginas são criadas por medida a partir de queries (perguntas, métodos). Esta solução torna obsoleto o uso de frames , msa dificilmente estará ao alcance de uma pequena empresa (ou de uma escola). Mais uma vez se ilustra que o interesse potencial das frames depende sobretudo das competências dos autores e dos recursos disponíveis para a criação dos sítios na Internet e/ou intranets.
|
|||
Erros típicos no uso de framesAté 1998, a comunidade de internautas era formada sobretudo por utilizadores especialistas, mormente universitários e militares, que aprenderam a usar extensivamente as potencialidades dos browsers. Estes utilizadores compreendem a tecnologia subjacente e sabem reagir quando acontece algo fora do comum. Sabem igualmente tirar partido dos browsers, abrindo ligações (links) em novas janelas, adaptando o tamanho das janelas (resize), abrindo frames em janelas separadas, trocando os esquemas de cores e fontes (style sheets), etc.. Embora estes utilizadores frustrem frequentemente o objectivo dos web designers , em contrapartida são muito tolerantes a falhas. A partir dessa data, a vulgarização da Web trouxe para a comunidade dos internautas uma maioria de pessoas alheia à tecnologia da Web. Por um lado, estes visitantes são mais dóceis, no sentido em que fazem menos experiências e se acomodam mais facilmente às exigências dos web designers, por outro, ficam confundidos quando algo corre mal. Foi nesta data que se generalizou a mensagem:
Quem não cumprisse as especificações, era enviado para o sítio da empresa criadora do browser requerido para fazer o download da última versão, ou era porventura convidado a comprar um novo monitor, e o problema considerava-se resolvido! Infelizmente a realidade nem sempre se adapta às exigências dos web designers e muitos utilizadores continuam a aceder à Web com sistemas antigos, limitados e diferentes dos requeridos. No início, houve problemas com a deficiente implementação das frames, que hoje estão resolvidos na maior parte das plataformas. Sobram algumas plataformas que simplesmente não implementam as frames. Como as frames violam o paradigma dos documentos formatados em páginas ligadas, qualquer erro no uso das frames pode dificultar, senão impedir, o acesso aos sítios por parte dos visitantes menos experimentados ou com recursos informáticos mais modestos. Indico abaixo quais os erros mais graves e mais frequentes e apresento sugestões para os evitar. 1. Assumir o uso de framesEste é o erro mais comum. Se o web designer partir do princípio que o todos os visitantes visualizam a página com frames e não incluir menus de navegação nas páginas de conteúdo, os utilizadores sentir-se-ão perdidos se acederem ao sítio por uma das páginas de conteúdo. Isso sucede sobretudo quando o visitante é encaminhado por um motor de busca mas também a partir de uma página impressa ou uma indicação de um amigo, entre outros. Quando se usa uma frame como menu (ou barra) de navegação deve sempre incluir-se um menu de navegação em cada documento, bem como uma ligação à página de entrada (homepage). O ideal seria que este menu fosse idêntico ao da frame, mas um menu com as secções principais é aceitável. Quando se usam frames para relacionar documentos deve-se indicar no cabeçalho ou no rodapé que existem outros documentos associados, sugerindo o uso do frameset ou, em alternativa, janelas múltiplas com nomes diferentes. Esta opção é automática: se existir um frameset com as frames nomeadas, elas são usadas, caso contrário, as frames são transformadas em janelas autónomas, perdendo-se a formatação gráfica numa janela única. 2. Obrigar ao uso de framesEste erro é ainda pior do que o anterior. De acordo com a vontade dos seus criadores, há sítios que só podem ser percorridos com frames. Este efeito pode ser obtido de duas maneiras: ou usando JavaScript para detectar a ausência de frames e forçar o carregamento automático do frameset ou omitindo quaisquer meios de navegação que obriguem o utilizador a procurar a página de entrada (homepage) e a partir daí carregar o frameset com a frame de navegação. Se não user frames, o utilizador obtém páginas incompreensíveis e/ou erros de JavaScript. Há browsers que não implementam frames, há utilizadores que não gostam de frames e há écrans demasiado pequenos para o uso confortável de frames. Por isso, é inaceitável obrigar os utilizadores ao uso de frames. A solução é não utilizar estes esquemas que forçam o utilizador contra a sua vontade. Admito, uma excepção, contudo - talvez porque a utilize nas minhas páginas :-) Em alguns sítios onde o aspecto gráfico é primordial (albuns de fotografias, jogos, exposições virtuais) julgo ser aceitável requerer o uso de frames para criar um efeito cénico ou visual, tal como faço na lanterna em DHTML (neste exemplo seria possível não usar frames mas o código resultaria mais complexo e de resultados imprevisíveis em algumas plataformas/browsers). No álbum de fotografias da Bélgica (Bienvenue em Belgique) forço mesmo o uso de frames, pois caso contrário perderia o efeito visual dos menus suprimíveis. 3. Usar frames com SCROLL=NO ou RESIZE=NOÉ comummente aceite pelos web designers que os elementos mais feios de um frameset são as barras de scroll. Acresce que muitas das aplicações das frames pressupõem um ajuste rigoroso entre frames (acertado ao pixel) e transições invisíveis entre frames. Para atingir estes objectivos, muitos são os web designers que incluem a especificação SCROLL=NO e/ou RESIZE=NO nos seus framesets. Para os utilizadores com monitores de reduzidas dimensões esta especificação pode impedir o acesso a elementos essenciais das páginas HTML. Para ultrapassar este problema basta abrir a frame numa nova janela mas a maioria dos utilizadores que o enfrentam não sabem fazê-lo. Cabe ao web designer experimentar o seu trabalho em várias plataformas e vários browsers, com ênfase nos monitores pequenos, tendo o cuidado de verificar que nenhum elemento essencial fica oculto. Por outro lado deve também garantir que as frames auxiliares (navegação, glossário, etc..) ocupam apenas o espaço indispensável, deixando para as frames principais o máximo de espaço para maior conforto de leitura.
|
|||
Minimizando as limitações das framesCientes dos riscos potenciais das frames, os seus criadores incluiram a tag A primeira solução para ultrapassar às limitações das frames seria criar em todas as páginas uma versão sem frames, usando A segunda solução seria criar um sítio alternativo sem frames, acessível a partir da primeira página onde estaria explicitamente indicado (como faço nas minhas páginas de 2000) ou implicitamente indicado entre tags A terceira solução seria implementar as medidas mitigadoras propostas acima. Além das soluções alternativas às frames, há problemas com a própria implementação das frames que modificam e dificultam a operação dos browsers. A impressão era uma das limitações das frames, entretanto resolvida pelos criadores dos principais browsers. Hoje já é possível imprimir as frames em folhas separadas ou imprimir um frameset completo numa única folha. Infelizmente, há ainda muitos utilizadores que não conhecem as várias possibilidades e outros que não reconhecem quando estão na presença de frames, o que dá origem a resultados inesperados e incompreendidos. Outro problema das frames, este ainda por resolver completamente, é a definição de bookmarks (favorites). Quando um utilizador pretende guardar um endereço (URL), pretende que a página com o frameset lhe apareça exactamente igual quando voltar a este endereço, isto é, deseja que cada uma das frames seja aquela que se lhe apresentara anteriormente. No entanto, tal não sucede na maioria dos casos. O endereço que aparece disponível para guardar é o da entrada do sítio ou de um frameset no estado inicial. Aliás, alguns web designers preferem esta solução, forçando os utilizadores a re-entrarem pela "porta principal" do sítio a cada nova visita. Em alguns casos simples - por exemplo, quando só há uma frame de conteúdo e outra para navegação - o utilizador pode ultrapassar facilmente este problema abrindo a frame de conteúdo numa nova janela e guardando esse endereço. É também possível aos web designers tornear este problema com JavaScript, inscrevendo no endereço as variáveis que indiquem o conteúdo de cada uma das frames. Todavia, este processo não funciona sem JavaScript, torna o endereço ininteligível e exige uma codificação aturada do frameset e de cada uma das páginas. Ainda outro problema das frames, que atormenta os web designers desde o início: como mudar duas ou mais frames simultaneamente? A solução está encontrada desde 1997 e passa de novo pela codificação com JavaScript. Usando O último problema das frames que quero apresentar é o problema do botão de back (retroceder). Este botão é uma das funções mais usadas num browser e nele se baseia parte da confiança que os utilizadores usam para navegar na Net: não há riscos em seguir uma ligação (link) pois carregando em back (retroceder), é sempre possível voltar à página anterior. O botão de back permite reconstruir a história linear da sessão de navegação. A introdução de frames quebra o percurso linear ao lançar vários caminhos divergentes. Para este problema não há soluções elegantes. A melhor forma de voltar atrás é consultar a história da sessão numa janela própria e identificar a página já visitada que corresponde ao ponto onde se deseja regressar.
|
|||
Utilização avançada de framesAlém das utilizações atrás descrita para as frames, outras há que abrem novas possibilidades e que são ainda impossíveis de realizar sem frames ou, quando o são, requerem sítios activos e orçamentos muito maiores. Estas aplicações recorrem na sua maioria ao JavaScript e destinam-se aos web designers com bons conhecimentos de programação e alguma experiência. Por outro lado, são sítios menos convencionais - de nicho, diria - e podem confundir alguns utilizadores principiantes ou aqueles que usam browsers sem frames. O seu uso deve ser prudente e em alguns casos acompanhado de uma página mais simples que explica a funcionalidade implementada e justifica a necessidade do uso de frames. 1. Comparação de múltiplos documentosEsta aplicação já foi brevemente aflorada atrás: se se compararem dois documentos usando frames e JavaScript, é possível mantê-los sincronizados, isto é, quando se segue um link numa das frames, a frame do documento de comparação é também actualizada mantendo o paralelismo. Este efeito pode ser obtido com event handlers, usando onScroll e onClick. Numa versão mais simples pode ser feito usando anchors nos dois documentos, 2. Efeitos visuaisNeste campo, costuma dizer-se que o limite é a imaginação. Uma das aplicações mais simples é enquadrar uma frame funcional por quatro frames não funcionais. Este efeito reproduz um palco teatral e permite exibir uma frame de tamanho fixo centrada em écrans de dimensão variável. Esta técnica é de uso generalizado. Nas minhas páginas, uso-a na lanterna em DHTML e também no álbum de fotografias Bienvenue em Belgique. Além desta forma, é possível criar inúmeras aplicações, alterando o tamanho das frames com o ponteiro (cursor do rato) ou por JavaScript, jogando com framesets em cascata (nested frames) ou criando novas páginas em resultado de código JavaScript. As hipóteses estão condicionadas apenas por quatro regras:
Um exemplo básico deste princípio é apresentado no exemplo das cortinas de correr. As duas frames podem ser deslizadas na horizontal, revelando uma terceira frame por trás. Um exemplo mais elaborado, combina um enquadramento com frames não funcionais com uma frame central funcional; esta última encerra um segundo frameset, onde se pode fazer um puzzle com dois pavões. Este segundo exemplo requer uma janela de dimensão superior a 640x480 pixels. Estes dois exemplos não usam JavaScript e ilustram as potencialidades de um uso criativo e experiente das frames. 3. Armazenamento de variáveisO armazenamento de variáveis é um dos principais problemas da criação de sítios complexos e que guardem memória das actividades passadas. Na primeira década da Web, quatro tipos de soluções diferentes foram encontradas:
Além destas quatro soluções, é possível guardar informações no frameset. Estas aplicações dirigem-se aos dados a guardar dentro de uma sessão, tal como se passa informação no URL. Não fica guardado no disco, não obriga a ligações extra ao servidor e não exige um servidor especial ou uma tecnologia activa. Como funciona? Em cada frame, as variáveis da própria página podem ser acedidas por Usei esta opção na versão de 1999 do sítio do Laboratório de Robótica Móvel. O utilizador entra no sítio por um frameset, com barra de navegação à esquerda. Nesta barra, o utilizador pode escolher entre os três idiomas disponíveis: Português, Inglês e Francês. As páginas principais estão nos três idiomas mas como o sítio é mantido por diversas pessoas, nem todas as páginas estão repetidas nos três idiomas. Aliás, a página das publicações que é a página mais importante e uma das mais citadas e visitadas é única com navegação trilingue. Quando um utilizador acede a uma página que existe no seu idioma por omissão, recebe a página nesse idioma. Se não existir essa versão, recebe a página num idioma mais genérico (normalmente o inglês). Se continuar a navegar pelas páginas num idioma estranho mas chegar a uma página que existe no seu idioma de omissão, então o browser reencaminha-o automaticamente para essa versão. Além desta utilização um pouco elaborada, esta técnica serve para guardar variáveis secretas de jogos, resultados e outras informações que não desejamos que sejam "arranjadas" pelo utilizador. Servem também para guardar as preferências dos utilizadores e escolha anteriores (por exemplo ler um artigo completo ou apenas o resumo, a distância percorrida num percurso com várias etapas, etc.). São aplicações simples mas que expandem a capacidade do HTML ao tornar possível a comunicação transparente e imediata entre páginas diferentes.
4. Hierarquização da informaçãoA utilização hierárquica de frames é uma ideia conceptual que nunca vi implementada a fundo num sítio "a sério". Trata-se do seguinte: ao contrário de um jornal ou uma televisão em que a extensão do espaço de visualização é conhecida a priori, numa página web, o espaço varia muito entre utilizadores. Além do mais, é razoável postular que os utilizadores com maiores espaços de visualização dispõem de maior largura de banda (os computadores maiores estão nas mesas, ligados a redes locais ou a cable modems enquanto os pequenos portáteis, telemóveis e handhelds dependem de uma ligação mais lenta ou mais cara. Baseado neste princípio, é possível criar páginas em que a primeira frame seja vista por todos, a segunda seja vista na maioria dos terminais e as seguintes seráo vistas apenas naqueles que têm espaço (e largura de banda) para isso. No caso da homepage de um jornal electrónico, a primeira frame conteria os cabeçalhos das notícias, a segunda os leads e os primeiros parágrafos do corpo e a terceira conteria fotografias, ilustrações, secções de valor acrescentado, etc.. Para reduzir o esforço de download, usar-se-ia JavaScript para medir o tamanho da janela e a classe de cada utilizador seria guardada no frameset. A cada novo link, bastaria consultar este valor para saber quanta informação se deve descarregar do servidor e onde se deve apresentá-la. Testei com sucesso uma versão incipiente deste princípio nas minhas páginas de 2000: nas páginas de Portugal e de fotografia, a frame do lado direito está vazia para resoluções inferiores a 1024x768. Para resoluções superiores, estas páginas oferecem um "extra": um poema de António Gedeão e uma fotografia do Elevador de Santa Justa em Lisboa, respectivamente. Se puder, experimente aceder a esssas páginas, primeiro com uma janela pequena e depois maximizando o tamanho da janela.
|
|||
ConclusõesAs frames foram uma promessa que nunca se cumpriu. Não por causa das suas limitações e inconvenientes que com o tempo foram minimizados, mas porque deixaram de ser necessárias à maioria das aplicações quando se generalizaram os sítios activos em que as páginas são criadas por medida. Hoje são algo de marginal na cultura da Web e por isso são olhadas com desconfiança. Todavia, mantém o seu interesse em aplicações específicas e podem mesmo ser a solução com melhor relação custo/benefício. Infelizmente, a massificação das ferramentas e das equipas de produção de sítios leva a que as soluções óptimas criadas por medida sejam substituídas por soluções genéricas adaptadas à pressa e que se revelam por vezes mais caras, mas que têm a vantagem de ser exactamente iguais às que foram feitas antes e às que serão feitas depois. E é sabido que a novidade e a criatividade acarretam custos, mas também oferecem novos horizontes. Dezembro 2001 a Junho de 2002. Referências |
|||
jsgm@isr.ist.utl.pt | |||
Índice de Notas e Reflexões Anterior: Será que confiamos demais na Internet ? A seguir: ??? |
mais links |
©2001 e 2002 João Gomes Mota |