





Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Desenvolvendo Websites Interativos com JavaScript
Tipologia: Notas de estudo
1 / 9
Esta página não é visível na pré-visualização
Não perca as partes importantes!






Capítulo 6 – O browser
JS11-01-1999/01 A4 - © 1999 Helder L. S. da Rocha 6-
COM O GRANDE NÚMERO DE VERSÕES, PLATAFORMAS E FABRICANTES de browsers, cada um suportando extensões proprietárias e introduzindo recursos incompatíveis, é útil poder indentificar o browser que está carregando uma determinada página. Com esta informação, pode-se tomar a decisão utilizar instruções que só existem naquela versão de browser, ou de redirecionar a janela para outra página. Informações sobre o cliente que acessa uma página são mantidas pela propriedade global navigator.
O objeto Navigator^1 representa as propriedades do browser. Usando suas propriedades e métodos booleanos (que retornam true ou false) é possível identificar as possibilidades de um cliente e desenvolver páginas personalizadas com conteúdo específico para aproveitar ao máximo os recursos existentes. Navigator define as caracteríticas de um único objeto, representado pela propriedade global^2 navigator. Todas as suas propriedades são somente-leitura. Todas as cópias de navigator em uma mesma aplicação são idênticas e possuem as mesmas propriedades. As informações que se pode obter através da propriedade navigator são:
(^1) Assim como Window , não existe na documentação do JavaScript 1.1 um objeto ou construtor chamado ‘Navigator’. Usamos este nome apenas para referirmos ao tipo que define os métodos e propriedades do objeto navigator e manter a consistência com os outros objetos. (^2) No Internet Explorer, navigator não é global, mas é propriedade de window.
Desenvolvendo Web Sites Interativos com JavaScript
6-2 JS11-01-1999/01 A4 - © 1999 Helder L. S. da Rocha
Quatro propriedades contém informações do fabricante do browser, e outras duas, são vetores com objetos do tipo PlugIn e MimeType , usados para identificar plug-ins e tipos suportados. Não estão disponíveis em todos os browsers. As propriedades de Navigator estão listadas na tabela abaixo. Para utilizá-las, é preciso usar o objeto navigator da forma:
navigator.propriedade
Propriedade Descrição userAgent (^) Contém String. Informação contida no cabeçalho HTTP User-Agent.
Esta propriedade é a combinação das propriedades appCodeName e appVersion. Exemplos: Mozilla/4.0 (compatible; MSIE 4.0; Windows 95) Mozilla/4.5 [en] (Win95; I) appCodeName (^) Contém String. Contém o nome interno do browser.
Exemplo: Mozilla appVersion (^) Contém String. Contém informações sobre a versão.
Exemplos: 4.0 (compatible; MSIE 4.0; Windows 95) 4.5 [en] (Win95; I) appName (^) Contém String. Contém o nome oficial do browser.
Exemplos: Microsoft Internet Explorer Netscape mimeTypes (^) Contém Array. Um vetor de tipos MIME que descrevem os tipos MIME
reconhecidos e suportados pelo browser, internamente, via plug-ins ou através de aplicações auxiliares (do sistema operacional). plugins (^) Contém Array. Um vetor com todos os plug-ins instalados no cliente.
Com as propriedades userAgent, e appName, obtemos diversas informações sobre o browser. Para utilizá-las é preciso isolar o sub-string com a informação correspondente. Infelizmente os formatos diferem entre os principais fabricantes, mas é possível identificar as três informações mais importantes, onde ocorrem as maiores diferenças: nome e fabricante, versão e plataforma.
O nome e fabricante do produto é fácil de obter. Usa-se a propriedade appName. Sabendo- se de antemão o nome utilizado pelo fabricante em cada tipo de browser, é possível usá-lo para comparar com o string contido em appName, e verificar se o browser atual é um deles:
if (navigator. appName == "Microsoft Internet Explorer") { // código que só será executado em browsers Internet Explorer }
Desenvolvendo Web Sites Interativos com JavaScript
6-4 JS11-01-1999/01 A4 - © 1999 Helder L. S. da Rocha
Escreva um programa JavaScript que redirecione a janela do browser de acordo com o tipo de browser que a carregar. Para redirecionar, use a instrução:
location.href = "url destino"; As páginas destino estão localizadas no diretório cap6/. Os arquivos destino são:
A solução está mostrada no código a seguir (arquivo redir.html) e deve estar em um bloco
(...) Browsers que são exceções (não foram previstos pelo código) sempre devem permanecer na página ou ficar com parâmetros default (que não dependam do código) pois sempre existe a possibilidade do browser não entender JavaScript de forma alguma. O bloco
Capítulo 6 – O browser
JS11-01-1999/01 A4 - © 1999 Helder L. S. da Rocha 6-
Os métodos de navigator são apenas dois:
Método Ação javaEnabled() (^) Retorna true se o suporte a Java está habilitado. taintEnabled() (^) Retorna true se o modelo de segurança data-tainting está habilitado.
Se o usuário não suporta data-tainting (o que é comum), certas operações como a chamada de métodos em outras janelas poderá não funcionar, se contiverem arquivos de servidores diferentes. Se o suporte a Java não estiver ativado, o browser não será capaz de executar applets. Sabendo disso, o programador poderá oferecer uma alternativa. Suponha, por exemplo, que uma página use formulários HTML para oferecer uma interface de conexão a um serviço. O formulário é simples, consiste de duas caixas de texto (para login e senha) e um botão “Conectar”:
User ID Senha
Suponha agora que o autor do site decida substituí-la por um applet, oferecendo a mesma interface, mas aproveitando os recursos de segurança da linguagem Java. No lugar do formulário, a página teria um descritor HTML do tipo:Se o usuário não suporta Java, não poderá executar o painel, e o site perderá vários de seus clientes. Se ele voltar a usar somente HTML, deixará de aproveitar os recursos mais modernos presentes nos browsers de um número crescente de clientes, que também usam serviços de seus concorrentes. Uma solução é verificar se o browser do cliente suporta Java e, caso positivo, carregar o applet; caso contrário, carregar o formulário antigo:
Capítulo 6 – O browser
JS11-01-1999/01 A4 - © 1999 Helder L. S. da Rocha 6-
for (i=0; i < navigator.mimeTypes.length ; i++) { document.write("" + navigator.mimeTypes[i].type ) } O número de tipos suportados geralmente é extenso, pois não se limita ao browser. Todas as aplicações que registram um tipo de dados no sistema operacional estão disponíveis como aplicações auxiliares e seus tipos MIME são levados em consideração. A melhor forma de ter acesso aos objetos é utilizando o nome do tipo entre colchetes (vetor associativo), em vez do índice:
tipo = navigator.mimetypes["tipo/subtipo"]; A tabela abaixo lista as propriedades do tipo MimeType e a informação que contém. Todas são read-only. O exemplo apresentado em cada mostra em negrito os valores de cada propriedade para o tipo text/html:
Propriedade Descrição (e tipo de dados) name (^) String. Tipo MIME no formato tipo/subtipo. Exemplo :
navigator.mimetypes["text/html"].name contém “ text/html ” description (^) String. Descrição em inglês do tipo de conteúdo representado pelo tipo
MIME. Exemplo: navigator.mimetypes["text/html"].description contém “ Hypertext Markup Language ” suffixes (^) String. Lista de extensões comuns de arquivos associados com este tipo
MIME. Exemplo: navigator.mimetypes["text/html"].suffixes contém “ html, htm, shtml ” enabledPlugin (^) PlugIn. Referência ao objeto PlugIn que suporta este tipo, ou null se
não é suportado por um plug-in (é nativo ou suportado por aplicação externa). Se um tipo é suportado por um plug-in, um arquivo contendo este tipo de dados poderá ser incluído na página através de um descritor . Exemplo : navigator.mimetypes["text/html"].enabledPlugin contém null
Cada plug-in instalado no browser (Netscape) do cliente é um objeto PlugIn que possui propriedades contendo o seu nome, nome de arquivo, descrição e vetor de tipos MIME suportados pelo plug-in. Um vetor de todos os plug-ins é obtido através da propriedade navigator.plugins. Se um plug-in existe, ele pode ser incluído na página usando um descritor .
Desenvolvendo Web Sites Interativos com JavaScript
6-8 JS11-01-1999/01 A4 - © 1999 Helder L. S. da Rocha
As propriedades do tipo PlugIn estão relacionadas na tabela abaixo: Propriedade Descrição (e tipo de dados) name (^) String. Nome em inglês descrevendo o plug-in. description (^) String. Descrição detalhada do plug-in. filename (^) String. Arquivo do sistema que suporta o plug-in. mimetypes (^) Array de MimeType. Vetor com os tipos MIME suportados pelo plug-in. length (^) Number. Quantidade de tipos MIME suportados. Mesmo que mimetypes.length O trecho de código abaixo (arquivo plugins.html) pode ser usado para imprimir uma lista com todos os plug-ins instalados em um browser (somente Netscape):
Data-tainting
O modelo de segurança do JavaScript impede que programas enviados por um servidor tenham acesso a propriedades de documentos enviados por outro servidor e assim possam utilizar informação privativa. Com esse modelo, é impossível que uma janela leia, por exemplo, o histórico (objeto window.history) de outra janela, caso o documento tenha originado de um servidor diferente. O browsers Netscape 3.0 em diante, suportam um modelo segurança conhecido como data-tainting^5 (marcação de dados). Com ele é possível flexibilizar estas restrições de forma segura, mas isto depende do cliente, que deve ativar o recurso no seu browser, já que ele não e ativado por default. Com o data-tainting ativado, uma janela poderá ter acesso a propriedades de outra janela não importando de onde veio o documento, mas o autor da
(^5) taint é mancha, nódoa ou marca.