Escolar Documentos
Profissional Documentos
Cultura Documentos
CPW Aula19 PDF
CPW Aula19 PDF
As formas de programação que vimos até aqui envolviam apenas uma janela ou
frame. Aplicações reais, geralmente, envolvem múltiplas janelas ou frames.
Nesta aula explicaremos como as diversas janelas e frames podem interagir e
cooperar umas com as outras e com os programas que nelas são executados.
Objetivos:
Nesta aula você aprenderá:
- como usar, abrir e fechar janelas;
- como programar com temporizadores;
- a usar o objeto frame;
- como fazer referências entre frames.
Pré-requisitos:
As aulas anteriores.
1. Manipulando Janelas
O principal objeto da hierarquia do JavaScript, como já comentamos diversas
vezes, é o objeto Window e abaixo dele encontram-se todos os elementos de
uma página HTML que podem ser manipulados através da linguagem
JavaScript. Além do objeto representando a janela corrente, cada janela do
browser e cada frame dentro da janela são representados também por um objeto
Window. Nesta aula exploraremos as propriedades e métodos deste objeto e
mostraremos algumas interessantes técnicas de programação com janelas e
frames.
1
Tabela 19.1- Propriedades do objeto Window
Propriedade Descrição
closed Especifica se a window foi fechada.
defaultStatus Texto com a mensagem mostrada na barra de status
do browser.
document Referência ao objeto Document contido na janela
frames[] Array do objeto Window que representa os frames
dentro da janela.
history Referência ao objeto history da janela
location URL da página sendo exibida, definindo essa
propriedade causa o carregamento de um novo
documento.
name Nome da janela.
opener Janela onde foi aberta a janela atual.
parent Se a janela corrente for um frame, refere-se ao frame da
janela que a contém.
screen Referência ao objeto Screen da janela.
self Referência à própria janela, mesmo que window.
status Mensagem temporária na barra de status.
top Referência à janela top-level que contém a janela
atual.
window Referência à própria janela, mesmo que self.
2
Tabela 19.2- Métodos do objeto Window
Método Descrição
alert() Mostra uma mensagem simples em uma caixa de
diálogo com botão Ok.
blur() Retira o foco de uma janela.
clearInterval() Cancela ou determina a execução periódica de um
/ trecho de código f após um período de intervalo t
setInterval(f,t) milissegundos (f pode conter múltiplos comandos
separados por ";").
clearTimeout()/ Desprograma o timer ou programa o timer para
setTimeout(f,t) executar a função f após t milissegundos.
close ( ) Fecha uma janela.
confirm(p) Apresenta em uma caixa de diálogo à pergunta p e
botões Ok (retorna true) e Cancel (retorna
false).
focus ( ) Coloca o foco numa janela, movendo-a para frente
de todas.
moveBy(dx,dy) Move a janela da posição atual dx pixels para a
direita ou dy pixels para baixo.
moveTo(x,y) Move o canto superior esquerdo da janela para a
posição x y .
open Cria e/ou abre uma janela carregando o documento
(s1,s2,s3,sb) s1, tendo como nome s2 e de acordo com as
(mais detalhes na
seção 1.2) propriedades indicadas em s3, na forma sb .
prompt(s,d) Mostra a string s em uma caixa de diálogo com os
botões Ok e Cancel e um campo de entrada de
texto com a string d. Retorna o texto fornecido.
resizeBy Redimensiona a janela aumentando-a de dx pixels
(dx,dy) na horizontal e dy na vertical.
resizeTo(x,y) Redimensiona a janela para x pixels na horizontal e
y na vertical.
scrollBy(dx,dy) Rola o documento interior à janela para a posição
scrollTo(x,y) x,y ou de um valor dx,dy .
3
<!--
function redire()
{
//href e window podem ser omitidos
if (confirm ("A página mudou-se. " +
"\n Clique OK \n " +
"para ver a nova. "))
location = "novo-endereco.html";
}
//-->
</SCRIPT>
</HEAD>
<BODY onload="redire()">
<H2>Redirecionando automaticamente</H2>
<SCRIPT LANGUAGE="JavaScript">
<!--
document["bgColor"]="lightpink";
// -->
</SCRIPT>
</BODY>
</HTML>
4
aparecerem, isso é, forem incluídas na string, sem qualquer valor, é suposto
que seu valor seja yes. Se não aparecer, o valor da característica é suposto ser
no. Para a largura e altura, os valores devem ser sempre especificados e
correspondem ao número de pixels.
5
function Texto()
{
//verifica se pode abrir
if (jan != null && !jan.closed)
{
jan.document.write("<p>Mais texto</p>");
jan.focus();
}
else
Fechada();
}
function Fechada()
{
alert ("Abra antes !");
}
</SCRIPT>
</HEAD>
<BODY bgcolor=lightblue>
<H2>Abrindo nova janela</H2>
<FORM>
<input type="button" value="Abrir Janela"
onclick="Abrir()">
<input type="button" value="Escrever nela"
onclick="Texto()">
<input type="button" value="Fecha-la"
onclick="if (!jan.closed) jan.close()">
</FORM>
</BODY>
</HTML>
6
<HEAD>
<TITLE>Primeira</TITLE>
<SCRIPT LANGUAGE="JAVASCRIPT">
function Muda()
{
location='exeJanelas-a.html'
}
</SCRIPT>
</HEAD>
<BODY
onload="mude=setInterval('Muda()',999)"bgcolor="kh
aki">
<H3>Pagina:<FONT SIZE=+4>1</FONT></H3>
<FORM>
<INPUT TYPE="BUTTON" VALUE="Parar"
onclick="clearInterval(mude)">
<INPUT TYPE="BUTTON" VALUE="Seguir"
onclick="Muda()">
</FORM>
</BODY>
</HTML>
<!--segundo arquivo:'exeJanelas-a.html'-->
<HTML>
<HEAD>
<TITLE>Segunda</TITLE>
<SCRIPT LANGUAGE="JAVASCRIPT">
function Muda()
{
location='exeJanelas.html'
}
</SCRIPT>
</HEAD>
<BODY onload="mude=setInterval('Muda()',999)"
bgcolor="gold">
<H3> Pagina :
<FONT SIZE=+4>2</FONT></H3>
<FORM>
<INPUT TYPE="BUTTON" VALUE="Parar"
onclick="clearInterval(mude)">
<INPUT TYPE="BUTTON" VALUE="Seguir"
onclick="Muda()">
</FORM>
</BODY>
</HTML>
2. Manipulando Frames
Vimos no módulo de HTML que é possível dividir uma janela em várias partes
independentes, chamadas frames. Em JavaScript, um frame se comporta
exatamente como uma janela, tendo as mesmas propriedades e métodos. O
objeto Window tem um array com um objeto para cada frame definido na
janela. Cada frame de uma janela pode se referir a outro usando as
propriedades do objeto Window: frames[], parent e top.(tabela
19.1).
7
documento que cria novos frames. Como os frames são representados por
objetos Window, logo também possuem um array frames[ ], que pode
ser usado para referenciar aos frames deste documento interno. Pode-se assim
simplesmente acumular diversos subníveis de frames.
<HTML>
<HEAD>
<TITLE>Exemplo de frames</TITLE>
</HEAD>
<FRAMESET COLS="75%,25%">
<FRAME NAME=“fra” SRC="pa.htm">
<FRAME NAME=“flay” SRC="lay.htm">
</FRAMESET>
</HTML>
<HTML>
<HEAD>
<TITLE>Arquivo lay.htm</TITLE>
</HEAD>
<FRAMESET ROWS="*,*,*">
<FRAME NAME=“frb” SRC="pb.htm">
<FRAME NAME=“frc” SRC="pc.htm">
<FRAME NAME=“frd” SRC="pd.htm">
</FRAMESET>
</HTML>
frb
frc
fra
frd
8
window.frames[1].frames[0].document.write(“uma frase
!”);
window.frames[1].frb.document.write
(“uma frase !”);
Se um frame está contido dentro de outro frame que é contido por uma janela ,
o frame pode se referir à janela de nível mais elevado por
parent.parent.
Após entender bem as linhas de código abaixo, tente modificá-las para layout
mais complexos, usando para referir-se aos níveis:
• top
• parent.parent
• parent.frames[]
• frames[].frames[].frames[].
9
}
function n2()
{
parent.f3.document.write("texto<BR>");
parent.f2.document.bgColor="tan"
}
function n3()
{
parent.f4.document.write("<p>isso</p>");
parent.f3.document.bgColor="tan"
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<H1>Escrevendo em Frames:</H1>
<I>Em que frame quer escrever?</I>
<FORM>
<INPUT TYPE="BUTTON" VALUE="f2" onclick="n1()">
<INPUT TYPE="BUTTON" VALUE="f3" onclick="n2()">
<INPUT TYPE="BUTTON" VALUE="f4" onclick="n3()">
</FORM>
</BODY>
</HTML>
10
Exercícios:
2. Misture cada uma das formas possíveis de abrir janelas da tabela 19.3 no
exemplo do final da seção 1.2. Teste também sem qualquer recurso e sem
algum dos parâmetros de open para verificar as formas padrão.
Resumo:
Auto-avaliação:
Voltamos a dizer que a complexidade do assunto neste final do curso não deve
assustá-lo. Não desanime e volte sempre a reler os pontos que ficaram um
pouco obscuros.
11