Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Javascript - 06, Notas de estudo de Informática

Desenvolvendo Websites Interativos com JavaScript

Tipologia: Notas de estudo

2011

Compartilhado em 20/03/2011

wwill-de-paula-3
wwill-de-paula-3 🇧🇷

18 documentos

1 / 9

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Capítulo 6 – O browser
JS11-01-1999/01 A4 - © 1999 Helder L. S. da Rocha 6-1
6
O browser
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.
Objeto Navigator
O objeto Navigator1 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
global2 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:
Marca, nome, plataforma e versão do browser do cliente
Plug-ins instalados no cliente (em browsers Netscape).
Tipos de dados MIME suportados pelo browser e pela plataforma do cliente,
através de plug-ins e programas externos ao browser habilitados a funcionarem
como aplicações auxiliares para tipos desconhecidos do browser (Netscape).
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.
pf3
pf4
pf5
pf8
pf9

Pré-visualização parcial do texto

Baixe Javascript - 06 e outras Notas de estudo em PDF para Informática, somente na Docsity!

Capítulo 6 – O browser

JS11-01-1999/01 A4 - © 1999 Helder L. S. da Rocha 6-

O browser

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.

Objeto 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:

  • Marca, nome, plataforma e versão do browser do cliente
  • Plug-ins instalados no cliente (em browsers Netscape).
  • Tipos de dados MIME suportados pelo browser e pela plataforma do cliente, através de plug-ins e programas externos ao browser habilitados a funcionarem como aplicações auxiliares para tipos desconhecidos do browser (Netscape).

(^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.

Identificação do nome do fabricante

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

Exercício Resolvido

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 página msie.html, se o browser for Microsoft Internet Explorer 4, ou superior
  • a página netscape.html, se o browser for Netscape 3 ou superior.
  • a página outro.html se o browser não estiver entre os tipos acima mas suportar JavaScript 1.1. Se o browser não suportar JavaScript 1.1, deve permanecer na página.

Soluçã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-

Métodos

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

PlugIn

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.