Beruflich Dokumente
Kultur Dokumente
1. Objetos do browser
Os objetos do browser so criados pelo prprio browser de forma a refletir
caractersticas do navegador e da pgina em exibio. H dois objetos bsicos:
navigator e window.
O objeto navigator representa o prprio navegador e atravs dele possvel
controlar o browser e obter informaes sobre suas caractersticas. O objeto
window representa uma janela do browser e contm nele todos os elementos da
janela.
J falamos que quando o interpretador da linguagem inicia, uma das primeiras
coisas que faz, antes de executar qualquer cdigo de JavaScript, criar um
objeto global. O objeto global est no topo da cadeia de escopo. As
propriedades deste objeto global so as variveis globais dos programas
JavaScript. Quando voc define uma varivel global, o que est realmente
fazendo definir uma propriedade do objeto global. Alm disso, todas as
funes predefinidas e propriedades do ambiente JavaScript tambm so
propriedades do objeto global.
complexas";
Como a cadeia de objetos conectados pode ficar bem longa, por uma questo
de simplificao, JavaScript permite referenciar os objetos internos a window
sem citar a prpria window. Assim, possvel reescrever as linhas anteriores
como:
history.back();
location = http://www.cederj.gov.br;
document.write(<H1>Seu Site</H1>);
document.forms[0].text =
"as vezes as coisas podem " +
"ficar bem complexas";
J deve ter dado para notar que entender a hierarquia e que objetos esto
contidos em outros crucial para uma programao bem-sucedida. Na figura
anterior mostrou-se s algumas propriedades de alguns objetos. A maioria dos
objetos tem mais propriedades que as mostradas ali.
Para melhor compreender a hierarquia de objetos dentro do window melhor
observar um exemplo real. Observe as seguintes linhas de cdigo:
<HTML>
<HEAD>
<TITLE>Exemplo de Hierarquia</TITLE>
</HEAD>
<BODY bgcolor=white>
<CENTER><IMG SRC="seuemb.gif"></CENTER>
<FORM>
<TABLE>
<TR>
<TD>Nome:</TD>
<TD><INPUT TYPE=TEXT NAME="nome" SIZE=40
VALUE="Fulano Sicrano"></TD></TR>
<TR>
<TD>E-mail:</TD>
<TD><INPUT TYPE=TEXT SIZE=40 VALUE=
"fulano@qualquer.coisa.br"></TD></TR>
<TR>
<TD>Href do link:</TD>
<TD><INPUT TYPE=TEXT SIZE=40></TD></TR>
<TR>
<TD>Src da imagem:</TD>
<TD><INPUT TYPE=TEXT SIZE=40></TD></TR>
</TABLE>
<BR><INPUT TYPE=BUTTON Name=botao Value="Pressione">
</FORM>
<CENTER>
<IMG SRC="0.gif" height=6>
<P><A HREF="http://www.faperj.br">outros
links</A></P>
</CENTER>
<SCRIPT LANGUAGE="javascript">
document.forms[0].elements[2].value =
document.links[0].href;
3
document.forms[0].elements[3].value =
document.images[0].src;
document.write("O nome que aparece +
no campo nome do formulrio " +
document.forms[0].elements[1].value);
texto = prompt("Qual texto deve +
aparecer no boto ? ");
document.forms[0].elements[4].value = texto;
</SCRIPT>
</BODY>
</HTML>
Estas linhas produzem uma pgina como a mostrada na figura 15.2.
Figura 15.2 - Pgina gerada e os diversos nveis dos seus componentes
Esta pgina tem um objeto window com os elementos mostrados na figura 15.3.
Figura 15.3 - Elementos da pgina exemplo
na pgina. O formulrio por sua vez tambm pode ter diversos elementos, onde
cada elemento pode ser um dos elementos de interao possveis de pertencer a
um formulrio. No formulrio do exemplo das figuras 15.2 e 15.3 tem-se um
array de 5 elementos, todos <input> , 4 do tipo text e o ltimo do tipo
button.
3. Comando with
Neste momento torna-se necessrio introduzir um novo elemento que facilita a
manipulao dos objetos, permitindo uma economia de digitao quando se
deseja referenciar vrias propriedades e mtodos de um mesmo objeto. O
comando with usado para temporariamente modificar a cadeia de escopo.
Ele tem a seguinte sintaxe:
with ( objeto ) comandos
A sua funo adicionar objeto para a frente da cadeia de escopo, executar
os comandos e ento re-estabelecer o estado original da cadeia de escopo.
Ao indicar um objeto entre os parnteses, os mtodos e propriedades dentro das
chaves vo ser considerados como pertencentes ao objeto indicado (se for
possvel). Assim, no exemplo anterior, no lugar do texto que est escrito entre
as tags <SCRIPT....>...</SCRIPT>, possvel escrever:
with(document){
forms[0].elements[2].value=links[0].href;
forms[0].elements[3].value=images[0].src;
write("O nome que aparece no campo " +
"nome do formulrio " +
forms[0].elements[0].value +
"cujo e-mail :" +
forms[0].elements[1].value);
texto = prompt("Qual texto deve " +
"aparecer no boto ? ");
forms[0].elements[4].value = texto;
}
Este comando especialmente til no caso de encadeamentos maiores de
objetos, como:
with(document.forms[0].elements[1]){
value = "Fulano da Tal";
name = "Nome";}
Mas importante dizer que o cdigo usando with roda mais devagar que um
equivalente sem with, alm de poder em alguns casos ser de difcil
entendimento e ocasionar m interpretao.
Observe que uma outra maneira possvel de economizar digitalizao seria
criar variveis, no caso acima esta forma legtima de economizar cdigo
poderia ser reescrever as linhas anteriores como:
var elemento=document.forms[0].elements[1];
elemento.value="Fulano de Tal";
elemento.name="Nome";
4. Comando forin
O comando for tem uma outra sintaxe diferente daquela que vimos em um
captulo anterior: for(...;...;...). Esta outra sintaxe simplifica a
manipulao e permite percorrer todas as propriedades de um objeto. Esta
sintaxe :
for ( varivel in objeto )
comandos
Nesta sintaxe varivel pode ser o nome de uma varivel, um elemento de
um array ou uma propriedade de um objeto (ou seja, alguma coisa possvel de
estar no lado esquerdo de uma expresso de atribuio). objeto o nome de
um objeto ou uma expresso que pode ser equivalente a um objeto, e como
sempre comandos representa um comando nico ou um grupo de comandos
em bloco.
O comando for...in proporciona um meio de percorrer em loop as
propriedades de um objeto. O corpo do comando executado uma vez para
cada uma das propriedades do objeto. Antes do corpo do loop ser executado, o
nome de uma propriedade do objeto atribuda varivel como uma
string. Dentro do corpo do loop, voc pode usar a varivel para observar o
valor da propriedade do objeto usando o operador[ ].
possvel atravs do for recuperar, um a um, os nomes das propriedades e,
posteriormente, acess-las utilizando o objeto como um array. O lao a seguir
imprime na pgina cada uma das propriedades do objeto navigator:
for (prop in navigator)
document.write(prop + = +
navigator[prop] );
Enquanto que as linhas:
primElem=document.forms[0].elements[0];
for (i in primElem)
document.write("<br>" + i + "= " +
primElem[i]);
imprimem todas as propriedades do primeiro elemento de
document.forms[0].
O loop for/in no especifica a ordem com que as propriedades do
objeto sero atribudas varivel. As propriedades dos objetos
definidas como no enumeradas (como muitas propriedades embutidas e
todos os mtodos embutidos) no podem ser examinadas pelo for/in.
5. Objeto location
O objeto location contm informaes relacionadas a URL corrente. Ele
representa e controla a localizao do navegador, sendo armazenado na
propriedade location do objeto window.
6
href
pathname
port
protocol
search
do seu browser.
15.2 - Mtodos do objeto do browser location
Mtodo
Significado
reload()
Recarrega o documento da cache ou do servidor.
reload(booleano)
replace(url)
Substitui o documento corrente pelo especificado no
parmetro url tomando a sua posio na seo
history do browser.
O mtodo reload pode ser usado com ou sem parmetros. Se o argumento
for omitido ou for o booleano false, o mtodo s realmente recarrega uma
nova pgina do servidor se ela tiver sido modificada desde a ltima vez que foi
visitada, caso contrrio carrega a cpia do cache. Se o argumento for true
ela sempre ser recarregada do servidor, no sendo consultado o cache do
usurio.
6. Objeto history
A propriedade history (histrico) do objeto window se refere ao objeto
history da janela ou frame: window.history ou frame.history. O
objeto history d acesso (apenas para leitura) lista de URLs navegadas
por uma janela ou frame. Este objeto contm as 4 propriedades mostradas na
tabela 15.3 e suporta os 3 mtodos da tabela 15.4.
15.3 - Propriedades do objeto do browser history
Propriedade
length
current
next
previous
Significado
Nmero de pginas armazenadas na lista do objeto history.
URL da pgina atual.
URL da pgina posterior a atual na lista.
URL da pgina anterior a atual na lista.
Como o histrico das pginas visitadas uma informao privada, por questes
de segurana, alguns browsers, que no suportam signed scripts , restringem as
formas como as propriedades deste objeto podem ser usadas.
15.4 - Mtodos do objeto do browser History
Mtodo
go(n)
back()
forward()
Significado
Permite ir para a n-sima pgina. Valores positivos movem
para as prximas URL e negativos para as anteriores.
Volta para a pgina anterior.
Vai para a pgina seguinte.
onclick="history.back()">
<input type=button value="Prox."
onclick="history.forward()">
<input type=button value="2 -->"
onclick="history.go(2)">
</form>
<script language=JavaScript>
document.write("<br> h " +
history.length +
" pginas visitadas" );
</script>
Observe que os mtodos back() e forward() tm o mesmo efeito que
usar os botes Back e Forward do browser. Tambm so equivalentes a
history.go(-1) e history.go(1). Eles no tero efeito se j tiver
atingido o final da lista.
Exerccios:
1. Digite o cdigo que gerou a pgina mostrada na figura 15.2 (ele fornecido
antes da figura). Desative neste cdigo a parte em que pedido para por um
novo texto no boto, isto , delete ou transforme em comentrio o trecho:
texto=prompt("Qual texto deve aparecer"+
" no boto? ");
Depois crie uma ncora na parte da pgina onde est o link, com o texto
"outros links". Isto , inclua o trecho:
<a name="#link">
depois da linha:
<IMG SRC="0.gif" height=6>
Agora faa a pgina, ao ser carregada, ir imediatamente para esta seo
incluindo as linhas:
<SCRIPT LANGUAGE="javascript">
window.location.hash="link";</script>
na seo <Head>...</Head> .
Mostre nesta seo todas as demais propriedades do objeto location.
Finalmente inclua mais um boto e faa ser carregada uma nova pgina ao ser
pressionado qualquer boto. Em um dos botes faa a ao ocorrer, usando a
propriedade location.href. No outro boto use o mtodo
replace(url). Verifique se o que ocorre quando voc pressiona "back"
do seu navegador ao usar o mtodo replace() idntico ao que ocorre
quando voc usa location.href="url".
2. Inclua o cdigo do exemplo history na pgina anterior. Verifique o
resultado visualizando a pgina. Veja se seu navegador possibilita que a pgina
tenha acesso s propriedades do objeto history do usurio, tentando incluir
as linhas:
document.write("<br>A pgina anterior "
+ toString(history.previous));
9
10