Академический Документы
Профессиональный Документы
Культура Документы
HTML, CSS e
JavaScript
Agosto de 2007
Versão 1
Web, HTML, CSS e JavaScript
AVISO DE RESPONSABILIDADE
01/08/2007
WEB,
HTML, CSS e
JavaScript
Unidade 1
Arquitetura de Aplicações WEB
1.1 Internet – um pouco de história
A Internet teve início nos Estados Unidos em 1969 sob o nome de ARPANET. Composta
inicialmente de quatro computadores interligados, ela tinha como finalidade demonstrar
as potencialidades da construção de redes usando computadores dispersos em uma grande
área. Em 1972, 50 universidades e instituições militares já possuíam conexões.
Hoje a Internet é uma arquitetura de software e hardware interligados que são mantidas
por organizações comerciais e governamentais. Uma de suas principais características é
que não possui um proprietário único, responsável pelo seu funcionamento. Existem
apenas associações e grupos que se dedicam a desenvolver protocolos e procedimentos
para suportar a interligação entre os computadores, ratificar padrões e resolver questões
operacionais.
Solicitação HTTP
A cada acesso a uma página, estes scripts geram dinamicamente uma página que é
enviada para o browser. Desta forma, diferente de scripts no cliente, estes nunca são
vistos pelo cliente, não podendo ser copiados.
Os scripts server-side são geralmente indicados para:
acesso a bancos de dados
criação de páginas em tempo real
lojas virtuais com carrinhos de compra
sistemas de cadastro e consulta de dados
sites de busca na Internet
Requisição Normal
1.5.2.2 NET
Na plataforma Microsoft .NET, o servidor de aplicação não é visto como um elemento
separado. O sistema operacional Windows 2003 contém a infraestrutura necessária para
servir aplicações, como o IIS, COM+ e Framework .NET.
1.6 Navegadores
Um dos aspectos mais visados pelos usuários e desenvolvedores é a segurança dos
navegadores, devido ao crescimento e as inovações das técnicas de invasões e infecções
que existem hoje em dia na internet.
Atualmente, os navegadores são “obrigados” a ter proteções contra scripts maliciosos,
javascripts entre outros conteúdos que poderiam existir em sites que os mesmos acessam.
Atualmente o Mozilla Firefox é considerado o navegador mais seguro (principalmente em
relação ao Internet Explorer), mas a Microsoft está lançando periodicamente atualizações
em seu Windows Update. Na área de segurança o Firefox possui um interruptor de scripts
(caso venham a atrapalhar sua navegação ou caso sejam maliciosos) e uma proteção
contra sites falsos que podem ocasionar em ataques do tipo phishing entre outros.
Eficiência: devido a demanda por recursos computacionais que este tipo de operação
requer, o protocolo dispõe da opção de armazenamento em cache de informações
referentes a sessão, diminuindo desta forma o esforço computacional em sucessivas
conexões.
Vantagens: O SSL preenche todos os critérios que o fazem aceitável para o uso nas
transmissões das mais sensíveis informações, como dados pessoais e números do
cartão de crédito. A aplicação pode optar entre utilizar todos ou somente uma parte
desses critérios dependendo do tipo e natureza das transações que estão sendo
efetuadas.
A criptografia é a arte de empregar certas regras em mensagens ou informações de forma
a esconder seu verdadeiro conteúdo. A mensagem ou informação codificada pelo uso da
criptografia, que pode ser transmitida por meios de comunicação considerados inseguros,
pois só o receptor, conhecedor das regras poderá reverter o processo e ler o documento
original.
Com o SSL, uma conexão é estabelecida onde todos os dados trafegam criptografados
pela rede, sem que haja o risco de serem interceptados e decifrados por alguém. Para
garantir a integridade dos dados, é necessário um protocolo seguro para orientar a
conexão, como por exemplo, o TCP/IP. O uso do SSL se disseminou por meio de sua
implementação nos EURZVHUV da Netscape, fornecendo aos usuários uma forma
segura de acessar servidores ZHE, permitindo inclusive a execução de transações
comerciais. Sua versão mais recente é a 3.0.
Seu funcionamento ocorre por meio do sistema de criptografia de chaves públicas e
privadas desenvolvido por Rivest, Shamir e Adleman, o RSA. O SSL é mais usado nos
browsers, como Mozilla, Internet Explorer entre outros.
Unidade 2
Introdução ao HTML e
Web Standards
2.1 A Linguagem HTML e a Internet
Um dos principais elementos que levaram a popularização da Internet foi a World Wide
Web (teia de abrangência mundial), também conhecida como WWW. Trata-se de uma
nova forma dos usuários navegarem pelas informações e arquivos disponíveis nos vários
computadores ligados a Internet. O modelo WWW é tratar todos os dados da Internet
como hipertexto, isto é, vinculações entre diferentes documentos, para permitir que as
informações sejam exploradas interativamente e não apenas de uma forma linear.
A principal linguagem que popularizou a Web, e que ainda é a linguagem mais utilizada é
o HTML (Hypertext Markup Language), uma linguagem criada com o objetivo de
formatar informações de um texto e definir os hiperlinks entre um texto e outro, ou seja,
os pontos de vinculação entre documentos.
Hoje existem diversas ferramentas que permitem navegar na Internet e visualizar as
páginas HTML. Estas ferramentas são popularmente conhecidas como navegadores ou
browsers. Da mesma forma, existem também inúmeros editores visuais, dos quais o
Adobe Dreamweaver é o mais utilizado, que gravam arquivos no formato HTML.
2.4 W3C
O que é o W3C?
O World Wide Web Consortium (W3C) é um consorcio de indústrias dedicado em levar a
Web ao seu potencial máximo. Fundada em 1994 por Tim Berners-Lee (invertor da
Web), o W3C tem mais de 450 organizações associadas, incluindo Microsoft, America
Online (incorporou a Netscape Communications), Apple ,Adobe, Macromedia, Sun
Microsystems, e uma variedade de outras empresas fabricantes de hardware e software,
provedores de conteúdo, instituições acadêmicas e empresas de telecomunicações. O
consórcio tem o apoio (estrutura física e intelectual) de três instituições de pesquisa: MIT
nos EUA, INRIA na Europa e Keio University no Japão.
Qual a sua função?
O W3C desenvolve especificações abertas (padrões) para aumentar a interoperabilidade
de produtos relacionados com a Web. As recomendações do W3C são desenvolvidas por
grupos de trabalhos originados das organizações membros e experts convidados.
Eric Meyer – Autor do livro Cascading Style Sheets: The Definitive Guide.
Unidade 3
HTML – Recursos Básicos
3.1 Por que Entender o HTML?
O HTML é uma linguagem de marcação utilizada para criar e formatar páginas ou
documentos Web. Com o tempo passou a ser utilizado para descrever a estrutura dos
documentos. O HTML permite criar documentos com componentes como cabeçalhos
(h1,h2,....), parágrafos (p), quebras de linha (br), tabelas (table, tr, td, th), listas (li, ul, ol),
imagens (img) e links (a). Uma tecnologia complementar foi criada, o Cascading Style
Sheets (CSS), responsável pela apresentação (formatação visual) dos documentos.
Novas especificações HTML não serão mais definidas. HTML 4.1 é o último padrão
HTML, e agora substituído pelo XHTML 1.0. No entanto, o XHTML não é
substancialmente diferente do HTML, sendo na verdade um subconjunto do HTML que
segue as regras do XML. Assim sendo, ao dominarmos o HTML, estaremos também
adquirindo os conhecimentos necessários para desenvolver também em XHTML.
<html>
<head>
<title>Minha primeira página</title>
</head>
<body>
<!-- aqui temos um comentário que não aparecerá no browser -->
</p>
<hr>
<!-- fim do corpo da página -->
</body>
</html>
<!-- fim do documento html-->
<html>
<head>
<title>Tags para Alinhamentos</title>
</head>
<body>
<h4 align=center>Título Centralizado</h4>
<h4 align=right>Título À Direita</h4>
<h4 align=left> Título À Esquerda<h4>
<hr>
<p align=center > Parágrafo ao Centro </p>
<p align=right >Parágrafo à direita </p>
<html>
<head>
<title>Formatando Estilos</title>
</head>
<body>
<center>Mudando o Estilo dos Caracteres</center>
<p>
<b>Texto em Negrito</b><br>
<i>Texto em Itálico</i><br>
<u>Texto sublinhado</u><br>
<tt>Texto Monoespaçado</tt><br>
<br><font color=red >Texto em Vermelho</font>
<br><font size=5>Texto em Tamanho 5</font>
<br><font face=verdana>Texto com a letra Verdana</font>
<br><center>
<font color=blue face=verdana size=5><b>Olá Mundo!!!</b></font></center>
<br>Você poderá os atributos para cada tipo de letra!
<br>
<font color=blue size=6>O</font><font color=red size=4>lá Mundo</font>
<br>
<pre>
Estamos progredindo
no curso de HTML.
Este tag permite que todos os espaços feitos no código fonte
sejam respeitados. Certo?
</pre>
</p>
</body>
</html>
editor visual para escolher a cor desejada. Abaixo vamos fazer alguns exercícios para
entendermos melhor o uso de cores, utilizando as tags que já vimos anteriormente.
<html>
<head><title>vermelhos</title></head>
<body>
<br>
<font color=#330000>vermelho escuro, apenas 51 de vermelho e 0 de verde e azul
</font>
<br>
<font color=#660000>vermelho menos escuro
</font>
<br>
<font color=#990000>vermelhos cada vez mais claros
</font>
<br>
<font color=#cc0000>vermelho claro
</font>
<br>
<font color=#ff0000>o vermelho mais claro e puro possível
</font>
</body>
</html>
Observe o resultado em seu browser para poder conferir as tonalidades e note que não
foram utilizadas as cores verde e azul. Obviamente podemos criar vários tons de
vermelho com parcelas também das outras cores.
<html>
<head>
<title>vermelhos e verdes</title>
</head>
<body>
<br><font color=#ff9900>laranja: vermelho com algum verde</font>
<br><font color =#ffff00>amarelo (vermelho + verde)</font>
<br><font color =#99ff00>amarelo esverdeado</font>
<br><font color =#00ff00>verde puro</font>
</body>
</html>
Unidade 4
Incluindo Imagens em uma Página
4.1 Fazendo Referência a Outros Documentos
Como foi mostrado anteriormente, uma página HTML é apenas uma texto com algumas
tags que definem características da página. Entretanto, quando observamos uma página
HTML normalmente visualizamos elementos gráficos que não podem ser definidos desta
forma, como, por exemplo, fotos.
A forma que o HTML trata esta questão é muito simples: todas as imagens da página –
assim como muitos outros elementos que veremos ao longo deste curso – não estão no
mesmo arquivo da página HTML, mas sim em outros arquivos.
Antes de analisarmos a tag que define a utilização de imagens, vamos primeiro entender
algumas formas de referência externa que podemos encontrar em documentos HTML
<html>
<head><title>Imagens</title>
</head>
<body>
<h1>Agora estamos trabalhando com imagens</h1>
<img src=http://www.alfamidia.com.br/images/banner1.jpg>
<br>O comando acima inseriu uma imagem do site da Alfamídia nesta página.
</body>
</html>
<html>
<head><title>Imagens</title>
</head>
<body>
Note neste exemplo que a imagem <img src=imagem1.gif> está entre o texto
<br><hr><br>
<br><hr><br>
<br><hr><br>
<br><hr><br>
</body>
</html>
Acompanhe com o professor como cada comando de alinhamento posiciona de forma
diferente o texto e a imagem.
Quando definimos uma imagem para o fundo de uma página, se a página mostrada for
maior que a imagem, ela será replicada na horizontal, vertical ou em ambas as dimensões.
Esta característica pode inclusive ser utilizada com um recurso de layout, permitindo, por
exemplo, a repetição de um padrão.
<html>
<head><title>Exemplo com Fundo</title>
</head>
<body background=padrao.gif>
<img src=imagem1.gif>
</body>
</html>
Unidade 5
Criando Links
5.1 Hiperlinks
Hiperlink é o elemento fundamental da navegação pela internet. O conceito é simples:
selecionando-se determinado elemento em uma página Web, somos levados para uma
nova página.
Para criarmos um site inteiro precisamos fazer uso destes links para estabelecer a ligação
entre as páginas de nosso site, de forma que, através de um único clique sobre a frase ou
imagem, navegarmos para algum lugar no site ou na WEB.
Como padrão em nosso curso, observe a tag utilizada para a definição dos hiperlinks e
trabalhe junto com o instrutor nos exemplos:
<html>
<head><title>Estudando links</title></head>
<body>
<h3>Exemplo de links internos</h3>
<a href=exemplo1.html>Exemplo1</a>
<a href=exemplo2.html>Exemplo2</a>
<hr>
<h3>Exemplo de links externos</h3>
Unidade 6
Criando TABELAS
6.1 Tabelas e Layout de Páginas
O recurso de tabelas foi originalmente criado, no HTML, com o objetivo de organizar
informações e exibir dados na forma de planilhas. Este ainda é um dos principais usos de
planilhas em HTML, e será bastante explorado nesta unidade.
Entretanto, com este recurso também foi possível exercer um controle muito maior sobre
o layout de uma página HTML. Utilizando uma série de técnicas envolvendo imagens de
1 pixel de altura, planilhas com bordas invisíveis e formas inteligentes de posicionar
imagens, é possível criar layouts bastante sofisticados.
Esta técnica está caindo em desuso, porém, pois com o HTML 4.1 e o CSS é possível
controlar de forma bastante precisa a diagramação de um site sem ter que utilizar as
tabelas como um subterfúgio. Nas próximas unidades serão apresentadas técnicas de
diagramação sem o uso de tabelas (tableless design), enquanto que nesta unidade o foco é
no uso de tabelas para a exibição de informações em planilhas.
horizontal.
Valign: valores top, middle e bottom definem o alinhamento
vertical.
<table border=1>
<!-- linha 1-->
<tr>
<td>Itens/Mês</td>
<th>Janeiro</th><th>Fevereiro</th><th>Março</th>
</tr>
<!-- linha 2-->
<tr>
<th>Usuarios</th><td>80</td><td>93</td><td>120</td>
</tr>
<!-- linha 3-->
<tr>
<th>Linhas</th><td>3</td><td>3</td><td>5</td>
</tr>
</table>
Como foi dito, a tabela é construída linha a linha. Observe os comentários no código
acima.
inferior e superior<br>
</td>
<td valign=top> TOP </td>
<td valign=middle>MIDDLE</td>
<td valign=botton>BOTTOM</td>
</tr>
</table>
<td>col4</td>
<td>col5</td>
</tr>
<tr>
<td>col 2</td>
<td>col 3</td>
<td>col4</td>
<td>col 5</td>
</tr>
<tr>
<td>col 2</td>
<td>col 3</td>
<td>col4</td>
<td>col 5</td>
</tr>
</table>
Unidade 7
Formulários
7.1 Introdução a Formulários
Até o presente momento vimos diversos recursos do HTML para criar uma página,
definindo seu layout e conteúdo. Neste capítulo apresentaremos a forma principal de
obter dados do usuário e poder assim interagir com ele.
O elemento FORM, da linguagem HTML, é o responsável por tal interação. Ele provê
uma maneira agradável e familiar para coletar dados do usuário através da criação de
formulários com janelas de entrada de textos, botões e outros elementos de entrada de
dados.
Os dados que o usuário preenche em uma página HTML são enviados para o servidor,
para serem então processados por um programa, por exemplo um CGI em linguagem
PERL ou um página de acesso a banco de dados em ASP ou PHP. Também é possível
processar localmente um campo de formulário utilizando um script em JavaScript ou
VBScript, o que muitas vezes é feito para validar um campo antes do mesmo ser enviado
ao servidor.
Nesta lição iremos nos concentrar em aprender todos os tags HTML de criação de
formulários e a diferença entre eles.
Observe que o formulário não tem um comando action, o que significa que, ao ser
acionado, o formulário irá chamar a própria página. Digite seu nome, pressione ENTER e
observe a URL no topo da página mudar para incluir o parâmetro do formulário.
Experimente substituir o método de envio para POST.
Obs: neste exemplo não faz sentido utilizarmos o método get, pois a função do tipo
password perderia o sentido.
</form>
Obs: neste exemplo os dois grupos de botões tem o valor “name” diferente. Se fosse o
mesmo, só poderia ser selecionada uma entre todas as cinco opções.
Unidade 8
Introdução a Estilos CSS
8.1 O CSS
O CSS (Cascading Style Sheets ou Folhas de Estilo em Cascata) é uma linguagem de
formatação proposta pelo W3C. Visa remover a formatação dos documentos (X)HTML,
separando conteúdo e formatação.
A especificação inicial, chamada CSS1, tornou-se uma recomendação do W3C no final
de 1996 e define praticamente todos estilos de apresentação utilizados hoje em dia. A
segunda versão da especificação, chamada CSS2, foi aprovada em 1998 e acrescentou
vários estilos novos, principalmente na área de posicionamento e tabelas. Uma nova
versão está em desenvolvimento e espera-se que seja aprovada em um futuro próximo.
Todos os browser atuais, o Internet Explorer 6, Netscape Navigator 7, Mozilla Firefox 1,
Opera 7 e Safari suportam o CSS. Entretanto o suporte ao CSS Nível 2 foi implementado
em níveis diferentes, o que torna a adoção dos conceitos de posicionamento via CSS, ou
Tableless, como é conhecido, ainda um pouco complicado, necessitando muitas vezes de
truques de correção, conhecido como CSS Hacks.
Algumas considerações sobre CSS:
Produtividade aumentada.
Arquivos mais leves => download mais rápido => experiência de usuário
melhorada.
Browsers.
Impressoras.
Telefones Celulares.
Equipamentos wireless.
Para obter uma demonstração do que pode ser conseguido visualmente por meio de um
design baseado em CSS, acesse o site Zen Garden, onde diferentes desenvolvedores
criaram para o mesmo conteúdo (documento HTML), diferentes arquivos CSS,
resultando em documentos com o design 100% diferentes entre si.
Vale a pena conferir! http://www.csszengarden.com/tr/portuguese/
Conceito concebido pelo físico inglês Tom Berners-Lee, o criador do World Wide Web,
cuja proposta, ainda em desenvolvimento, por um grupo de pesquisadores do W3C, por
ele liderado, é estruturar todo o conteúdo disponível na Internet. Essa estruturação será
baseada num conjunto de regras, que permitirá a localização eficiente e precisa da
informação desejada.
Por mais sofisticados que sejam os mecanismos de buscas, atualmente existentes, todos,
sem exceção, oferecem para cada solicitação um grande número de páginas, que, em sua
maioria, não atendem às necessidades do usuário. Esse é, então, obrigado a verificar uma
a uma, até encontrar exatamente o que procura.
A Web semântica se propõe objetivar essa busca, de modo que o conteúdo exato seja
encontrado em uma única consulta. Esse conceito baseia-se na inserção, em cada arquivo
da Web, de tags personalizadas, definidas pela linguagem XML e, com isso, indexar toda
a informação disponível de forma precisa. A localização exata da informação que se
busca estará a cargo de agentes. O conceito de Web semântica prevê ainda o uso de RDF,
um padrão de descrição, composto por trios de informação, em que cada unidade terá
função própria, como sujeito, verbo e objeto, em uma frase.
Para cada diferente significado de uma palavra e sua função numa frase será criada uma
identificação (URI). O maior desafio da Web semântica é a padronização desses URIs.
Para isso prevê-se o uso de ontologias, que fornecerão aos agentes o vocabulário
necessário para identificar de modo preciso a informação que se busca.
A tempo: URL significa Uniform Resource Locator, ou Identifier, no caso de URI.
Servem para localizar qualquer recurso na Internet.
body {
font-size : 70%;
color : #000000;
background-color : #F1F1F1;
margin : 0;
}
<html>
<head>
<title>Utilizando CSS em uma página HTML</title>
<style type=”text/css”>
seletor
{
propriedade: valor;
}
</style>
</head>
<body>
</body>
</html>
<html>
<head>
<title>Utilizando CSS em uma tag HTML</title>
</head>
<body>
<font style=”propriedade: valor;”>Teste de Estilos</font>
</body>
</html>
Neste caso específico dispensamos o seletor, pois estamos aplicando o estilo diretamente
em uma tag.
Arquivo 1: estilos.css
seletor
{
propriedade: valor;
propriedade: valor;
}
seletor
{
propriedade: valor;
}
Feito isto, criamos um arquivo HTML que fará referência ao arquivo de estilos que será
utilizado através da tag <LINK>:
Arquivo 2: estilos.html
<html>
<head>
<title>Utilizando css em um arquivo externo</title>
<link rel=”stylesheet” type=”text/css” href=”estilos.css”>
</head>
<body>
</body>
</html>
<html>
<head>
<title>Alterando o estilo da tag font</title>
<style type=”text/css”>
font
{
propriedade: valor;
}
</style>
</head>
<body>
<font> Esta tag recebe os estilos definidos no cabeçalho.</font>
<br><br>
<font> Esta tag também recebe os estilos que foram definidos.</font>
</body>
</html>
Note que qualquer tag <FONT> contida nesta página automaticamente receberá aplicação
dos estilos definidos.
<style type=”text/css”>
font, p
{
propriedade: valor;
}
</style>
</head>
<body>
<font> Esta tag recebe os estilos definidos no cabeçalho.</font>
<br><br>
<font> Esta tag também recebe os estilos que foram definidos.</font>
<p>
Este parágrafo recebe os estilos definidos no cabeçalho.
Qualquer outra tag p utilizada nesta página também os receberá.
</p>
</body>
</html>
<html>
<head>
<title>Alterando o estilo da tag font</title>
<style type=”text/css”>
.estilo1
{
propriedade: valor;
}
</style>
</head>
<body>
<font class=”estilo1”> Esta tag recebe os estilos definidos na classe estilo01. Note que o valor
do parâmetro class não possui o ponto.</font>
<br><br>
<font> Esta tag não recebe os estilos que foram definidos, pois não possui o parâmetro
class.</font>
</body>
</html>
<html>
<head>
<title>Alterando o estilo da tag font</title>
<style type=”text/css”>
#estilo1
{
propriedade: valor;
}
</style>
</head>
<body>
<font id=”estilo1”> Esta tag recebe os estilos definidos no id estilo01. note que o valor do
parâmetro id não possui o sustenido.</font>
<br><br>
<font> Esta tag não recebe os estilos que foram definidos, pois não possui o parâmetro
id.</font>
</body>
</html>
A tabela abaixo apresenta os principais atributos com suas descrições, valores e como
usamos no código:
8.8 Exercícios
Aplique três estilos a uma página HTML:
Um estilo que se aplique à toda a página, um estilo que se aplique à apenas uma tag
contida nesta página e um estilo que se aplique à todas as tags <FONT>
Transfira estes estilos para um arquivo externo e referencie-o nesta página HTML.
Unidade 9
CSS Na Prática
9.1 Utilizando CSS em Situações Reais
Na unidade anterior os recursos básicos do CSS foram apresentados. O objetivo desta
unidade é exercitar o uso do CSS na criação de layouts redefinindo os vários elementos
vistos nas primeiras unidades deste curso.
Com isto, objetiva-se dar ao aluno a percepção da enorme pontencialidade do CSS e
prepará-lo para utilizar este recurso em seus próprios projetos, facilitando e acelerando a
construção e edição dos layouts que ele desenvolve.
A referência completa do CSS é muito grande, e na prática praticamente nenhum Web
Designer decora todos os comandos CSS, geralmente consultando uma documentação na
web sempre que busca utilizar um parâmetro com o qual não esteja familiarizado. Por
exemplo, pode ser utilizada a documentação oficial em http://www.w3.org/TR/REC-
CSS1 e http://www.w3.org/TR/REC-CSS2/.
CSS1.html
<head>
<style type="text/css">
<!--
table
{
border-collapse: collapse;
}
td.titulo
{
font-family: Arial, Helvetica, sans-serif;
font-size: 8pt;
border-right: 1px solid #000000;
border-bottom: 1px solid #000000;
border-top: 1px solid #000000;
border-left: 1px solid #000000;
background-color: #C3C3C3;
padding: 2px 2px 2px 2px;
}
td
{
font-family: Arial, Helvetica, sans-serif;
font-size: 8pt;
border-right: 1px solid #000000;
border-bottom: 1px solid #000000;
border-top: 1px solid #000000;
border-left: 1px solid #000000;
background-color: #FFFFFF;
padding: 2px 2px 2px 2px;
}
-->
</style>
</head>
<body>
<table>
<tr><td class=titulo>nome</td><td class=titulo>Cargo</td></tr>
<tr><td>alberto</td><td>Estagiário</td></tr>
<tr><td>pedro</td><td>Assessor de vendas</td></tr>
<tr><td>rafael</td><td>Gerente de vendas</td></tr>
<tr><td>sandro</td><td>Diretor comercial</td></tr>
</table>
</body>
</html>
Observe que a construção da tabela em si está bastante simples, facilitando sua criação
dinâmica por um programa que, por exemplo, consulte um banco de dados. Observe,
adicionalmente, que o layout está definido na parte em CSS – que inclusive pode estar em
um arquivo separado. Com isto, designers e programadores podem trabalhar em partes
independentes do código, de forma simultânea, um definindo detalhes do layout em CSS
enquanto o outro constrói o programa que monta dinamicamente os dados da tabela.
Obs: o parâmetro border-collapse permite definir que as bordas das células internas serão
‘grudadas’ umas nas outras. É um comando muito interessante de ser utilizado na
definição de layouts de tabelas.
Css2.html
<head>
<style type="text/css">
<!--
table
{
border-collapse: collapse;
}
td.titulo
{
font-family: Arial, Helvetica, sans-serif;
font-size: 8pt;
border-right: 1px solid #000000;
border-bottom: 1px solid #000000;
border-top: 1px solid #AADDAA;
border-left: 1px solid #AADDAA;
background-color: #99CC99;
padding: 2px 2px 2px 2px;
}
td
{
font-family: Arial, Helvetica, sans-serif;
font-size: 8pt;
border-right: 1px solid #000000;
border-bottom: 1px solid #000000;
border-top: 1px solid #000000;
border-left: 1px solid #AADDAA;
background-color: #CCFFCC;
padding: 2px 2px 2px 2px;
}
-->
</style>
</head>
<body>
<table>
<tr><td class=titulo>nome</td><td class=titulo>Cargo</td></tr>
<tr><td>alberto</td><td>Estagiário</td></tr>
<tr><td>pedro</td><td>Assessor de vendas</td></tr>
<tr><td>rafael</td><td>Gerente de vendas</td></tr>
<tr><td>sandro</td><td>Diretor comercial</td></tr>
</table>
</body>
</html>
Css3.html
<head>
<style type="text/css">
<!--
table
{
border-collapse: collapse;
}
td.titulo
{
font-family: Arial, Helvetica, sans-serif;
font-size: 8pt;
border-right: 1px solid #000000;
border-bottom: 1px solid #000000;
border-top: 1px solid #AADDAA;
border-left: 1px solid #AADDAA;
background-color: #99CC99;
padding: 2px 2px 2px 2px;
}
td
{
font-family: Arial, Helvetica, sans-serif;
font-size: 8pt;
border-right: 1px solid #000000;
border-bottom: 1px solid #000000;
border-top: 1px solid #000000;
border-left: 1px solid #AADDAA;
background-color: #CCFFCC;
padding: 2px 2px 2px 2px;
}
input
{
font:8pt arial, helvetica, sans-serif;
background-color: #AADDAA;
color: #000000;
}
select
{
font:8pt arial, helvetica, sans-serif;
background-color: #AADDAA;
color: #000000;
}
-->
</style>
</head>
<body>
<form method=post action=consulta_funcionarios>
<table>
<tr><td colspan=2 class=titulo>Consulta por nome e cargo</td></tr>
<tr><td>Nome</td><td><input name=nome></td></tr>
<tr><td>Cargo</td><td><select name=cargo><option>Assessor de Vendas<option>Diretor
Comercial<option>Estagiário<option>Gerente de Vendas</select></td></tr>
<tr><td colspan=2><input type=submit value=pesquisar></td></tr>
</table>
<br><br>
<table>
<tr><td class=titulo>nome</td><td class=titulo>Cargo</td></tr>
<tr><td>Alberto</td><td>Estagiário</td></tr>
<tr><td>Pedro</td><td>Assessor de Vendas</td></tr>
<tr><td>Rafael</td><td>Gerente de Vendas</td></tr>
<tr><td>Sandro</td><td>Diretor Comercial</td></tr>
</table>
</body>
</html>
Unidade 10
Introdução ao JavaScript
10.1 O que é JavaScript?
O que é JavaScript?
O JavaScript é uma linguagem de script que, incorporado nas tag's Html, permite
incrementar a apresentação e interatividade das páginas Web. Funções escritas em
JavaScript podem ser embutidas dentro de seu documento HTML, a fim de permitir
maior interatividade com as páginas HTML.
Com JavaScript você tem muitas possibilidades para "incrementar" seu documento
HTML com elementos interessantes. Por exemplo, você será capaz de responder
facilmente a eventos iniciados pelo usuário. Existem, atualmente, muitos exemplos sobre
JavaScript na Internet.
JavaScript é uma linguagem de script interpretada de forma “just-in-time”, sendo
utilizado apenas para operações mais simples. Podemos entender uma linguagem de
“script” como uma espécie de “roteiro” simples para execução de tarefas. As linguagens
de script, como o JavaScript, são compostas apenas por um conjunto de instruções em
formato texto que são interpretadas pelo computador no momento da sua execução.
Unidade 11
Noções básicas de JavaScript
<SCRIPT LANGUAGE=’Javascript’>
var nNumber, sString, bBoolean; //As variáveis ainda não assumiram um tipo
específico
nNumber = 10; //nNumber assume tipo numérico
sString = “Exemplo”; //sString assume tipo string / texto
bBoolean = true; //bBoolean assume tipo booleano
</script>
<SCRIPT >
var dtDate, aArray;
dtDate = new Date(); //Variável do tipo objeto date
aArray = new Array(10); //Virável do tipo Array com 10 posições
</script>
<SCRIPT >
dtDate = new Date();
/* typeOf devolve como resultado o tipo da variável,
neste caso ele vai disparar no alert o tipo de dados que este método
apresenta o valor que aparecerá na tela é “undefined” pois não existe
buscaDia dentro do objeto Date */
alert(typeof(dtDate.buscaDia));
dtDate = null; // Define a variável como null / nula
</script>
11.3 Variáveis
Assim como qualquer linguagem de programação, o Javascript permite a criação de
variáveis dentro dos scripts. As váriaveis em JavaScript possuem dois escopos, um
escopo global, que são variáveis declaradas fora de funções, e um escopo local que são
váriaveis declaradas dentro de funções.
As variáveis são declaradas utilizando a instrução var onde deve ser informado o nome
das variáveis que devem ser declaradas. É possível declarar mais de uma variável em
mesmo comando var, conforme o exemplo a seguir:
<html>
<script>
var mensagem; //Variável global
mensagem = "Hoje é dia: "; //Atribuindo valor à variável
function dataAtual(){
var dtHoje = new Date(); //variável local
var sDia, sMes, sAno; //atribuição de 3 variáveis em uma linha
sDia = dtHoje.getDate(); //Porque getDay é o dia da semana
sMes = dtHoje.getMonth() + 1; //Porque ele pega o mês sendo com um
índice, ou seja, inicia com o 0
sAno = dtHoje.getFullYear();
</script>
<body>
<a href="javascript:dataAtual();">Data Atual</a>
</body>
</html>
11.4 Operadores
A linguagem Javascript possui um conjunto de operadores muito semelhante a qualquer
linguagem de programação convencional, que permitem tanto realizar operações
aritméticas como operações booleanas. Os operadores estão divididos em três grupos
principais: Computacionais, Lógicos e de Atribuição.
Dentre os operadores computacionais, podemos encontrar os operadores que realizam
operações aritméticas, bem como operadores utilizados para realizar concatenações de
strings. A lista dos operadores computacionais pode ser visualizada abaixo:
Operador Símbolo
Incremento ++
Decremento --
Multiplicação *
Divisão /
Módulo %
Adição/Concatenação +
Subtração -
Operador Símbolo
Não Lógico !
Menor que <
Maior que >
Menor ou igual a <=
Maior ou igual a >=
Igual ==
Diferente (não igual) !=
E Lógico (AND) &&
OU Lógico (OR) ||
<script>
var nNumero1, nNumero2, nResultado;
// Atribuição de 0 ao número
nNumero1 = 1;
nNumero2 = 2;
// Incrementa o resulta em 1
nResultado++;
<HTML>
<BODY>
<H1> Página de teste </H1>
<SCRIPT >
var dtToday = new Date();
sHoje = “Hoje é ” + dtToday.toString();
alert(sHoje);
</SCRIPT>
<script>
var nDia;
var dtData = new Date();
var sPeriodo;
nDia = dtData.getDay();
Além do comando if, o comando switch pode ser utilizado para realizar testes lógicos na
linguagem JavaScript. O comando switch é um comando de teste de seleção múltipla, ou
seja, não testa a expressão lógica apenas por um valor específico, mas sim por uma série
de valores informados no código de script. O comando script requer um bloco de
comando inserido logo após a expressão lógica, que irá conter os comandos executados
no caso de cada uma das expressões. Ao final de cada conjunto de instruções de uma
condição swicth, é necessário informar o comando break, para que o javascript não
execute as condições posteriores ao teste, conforme o exemplo a seguir:
<script>
var nMes;
var dtData = new Date();
var sMes;
case 2:
sMes = "Março";
break;
case 3:
sMes = "Abril";
break;
case 4:
sMes = "Maio";
break;
case 5:
sMes = "Junho";
break;
}
alert(sMes);
</script>
11.8.1 While
O comando while é utilizado para repetir um determinado conjunto de instruções de
acordo com uma expressão lógica definida no código de script.
Para utilizar o comando while basta informar entre parênteses a expressão lógica a ser
testada, e após o comando, a instrução ou bloco de instruções a serem executados.
Podemos ver um exemplo de utilização do comando while no código abaixo:
<script>
var nNumero = 0;
while(nNumero < 10)
{
alert("Iteração de número: " + nNumero);
//Incrementa o Número
nNumero++;
}
</script>
11.8.2 For
Além do comando while, temos o comando for, que pode ser utilizado para repetir um
determinado conjunto de instruções de acordo com um índice número especificado no
próprio comando for. No comando for é necessário informar a variável que servirá como
índice, a condição para execução do for, e o incremento utilizado para execução da
estrutura de repetição. Podemos ver um exemplo de utilização do comando for a seguir.
<script>
var nNumero = 0;
for(nNumero; nNumero<10; nNumero++)
{
alert("Iteração de número: " + nNumero);
}
</script>
O comando for ainda pode ser utilizado com a cláusula in para realizar enumerações de
propriedades em objetos ou mesmo itens contidos em arrays. Para a utilização da cláusula
in, é necessário definir uma variável que irá receber o valor de cada membro solicitado
dentro de cada iteração da estrutura de repetição. Com a cláusula in podemos, por
exemplo, buscar todas as propriedades disponíveis de um determinado objeto criado no
JavaScript. No exemplo a seguir podemos visualizar todas as propriedades disponíveis no
objeto window, que representa a janela do browser.
<script>
var prop;
for(prop in window)
{
var sMensagem;
sMensagem = "Propriedade da janela do Browser: ";
sMensagem += prop;
alert(sMensagem);
}
</script>
Unidade 12
Utilizando Funções
12.1 Utilizando Funções no Javascript
Como já podemos perceber, o Javascript possui inúmeros recursos e funções disponíveis
para tornar as páginas o mais interativas possíveis. Além de toda a estrutura de
programação já apresentada, o javascript ainda permite ao desenvolvedor utilizar funções
próprias do JavaScript e criar suas próprias funções.
Exemplo 1:
<script >
var nContador;
for(nContador=0;nContador<5;nContador++)
{
eval("var sTeste" + nContador + ";");
eval("sTeste" + nContador + "=" + nContador + ";");
}
for(nContador=0;nContador<5;nContador++)
{
Exemplo 2:
<html>
<script>
function compute(f)
{
f.result.value = eval(f.expr.value);
}
</script>
<body>
<form name="teste">
Digite uma expressáo matemática (exemplo: 2+2 ou 3*5):
<input type="text" name="expr" Size="15">
<input type="button" value="Calcula" onclick="javascript:compute(this.form)">
<BR>
Resultado:
<input type="text" name="result" size="15">
</form>
</body>
</html>
<script >
var nContador;
var sValor1, sValor2;
var sResultado, nResultado;
// Contatenação
alert(sResultado);
// Soma numérica
alert(nResultado);
</script>
<script >
var sURL;
sURL = escape(sURL);
alert(sURL);
sURL = unescape(sURL);
alert(sURL);
</script>
Como podemos ver a função pode conter diversos parâmetros de entrada que podem ser
utilizados para cálculos ou algum processamento especial dentro do corpo da função.
Para definir os parâmetros, basta informar os nomes das variávies que irão representar os
parâmetros na função. Podemos ver um exemplo de função no código abaixo:
<script>
function MostraMensagem(sMsg)
{
var dtData = new Date();
var sData;
sData = dtData.getDay() + "/" + dtData.getMonth() + "/" +
dtData.getFullYear();
alert(sData + " - " + sMsg);
}
MostraMensagem("Mensagem de Teste !");
</script>
<script>
function Soma(nNumero1, nNumero2)
{
return nNumero1+nNumero2;
}
alert(Soma(10,5));
</script>
Unidade 13
Utilizando Objetos
13.1 Objetos intrínsecos
Além da utilização de funções intrisecas e funções de usuário, o JavaScript possui uma
série de objetos intrínsecos que permitem o uso de números de recursos dentro da
linguagem. As próprias funções intrínsecas que vimos no módulo anterior estão
colocadas dentro de um objeto intrínseco chamado Global, mas por estarem colocadas
dentro deste objeto elas tem um escopo global, permitindo sua utilização sem a chamada
explícita ao objeto.
Os objetos são compostos por métodos, que funcionam exatamente da mesma forma que
as funções em uma linguagem de programação, e são utilizadas para de alguma forma
executar alguma ação sobre o objeto em questão. Além dos métodos os objetos possuem
propriedades que dão características específicas as instacias dos objetos utilizados.
Para utilizarmos um objeto no JavaScript é necessário instanciá-lo inicialmente. Para
iniciarmos um objeto precisamos criar uma variável que irá armazenar a instancia do
objeto e atribuir a esta variável uma nova instancia do objeto em questão. Para criar uma
nova instancia de um objeto, devemos utilizar o comando new.
A seguir veremos os objetos instrínsecos do javascript mais utilizados.
<script >
var dtData, nMes, nHora, sMes, sPeriodo;
Como mostrado no exemplo anterior, os array podem ser criados com um tamanho inicial
ou não. Caso não seja informado o tamanho inicial, podemos aumentar seu tamanho a
medida que criamos os elementos dentro do array.
Para criar e acessar elementos em um array em Javascript devemos utilizar colchetes [ ]
para informar qual o início do array que queremos gravar ou ler. Caso o início não exista
e o script tente atribuir um valor ao array, o array será redimensionado automaticamente.
Um exemplo de utilização de variáveis dentro do array pode ser visto abaixo:
<script >
var sNomes = new Array();
var sValores = new Array(6);
sNomes[0] = "André";
sNomes[1] = "Bruno";
sNomes[2] = "Carlos";
sValores[0] = 1;
sValores[1] = 2;
sValores[2] = 3;
sValores[3] = 4;
</script>
Caso o array esteja sendo preenchido de forma dinâmica, sem informar um número de
elementos, podemos a qualquer momento consultar a propriedade length para verificar
quantos elementos estão contidos dentro do array.
Além da armazenagem de objetos, os array podem ser utilizados para outras finalidades
como ordenação de dados. Para isto devemos utilizar os métodos disponíveis dentro do
array, como o método sort para ordenar por ordem alfabética e o método reverse para
ordernar por ordem decrescente.
Um exemplo de utilização de um array para ordenação pode ser visto abaixo:
<script>
var sNomes = new Array();
sNomes[0] = "Carlos";
sNomes[1] = "Bruno";
sNomes[2] = "Mauricio";
sNomes[3] = "José";
sNomes[4] = "André";
sNomes.sort();
var nCount;
alert(“Ordem Crescente”);
for(nCount=0;nCount<sNomes.length;nCount++)
{
alert(sNomes[nCount]);
}
sNomes.reverse();
alert(“Ordem Decrescente”);
for(nCount=0;nCount<sNomes.length;nCount++)
{
alert(sNomes[nCount]);
}
</script>
<script>
var nNumero1 = 10.5;
var nNumero2 = -10.5;
var nNumero3 = 4;
alert(Math.abs(nNumero1));
alert(Math.abs(nNumero2));
alert(Math.sqrt(nNumero3));
</script>
<script>
var sString1 = "string criado diretamente";
var sString2 = new String("string criado com o new");
sString1 = sString1.toUpperCase();
sString2 = sString2.toUpperCase();
alert(sString1);
alert(sString2);
alert(sString2.replace(“STRING”, “string”));
alert(sString1.substring(0,5));
<script>
var oContato = new Object();
for(prop in oContato)
{
var sMsg;
sMsg = "O objeto contém a propriedade ";
sMsg += prop;
sMsg += " com o valor de " + oContato[prop];
alert(sMsg);
}
</script>
13.3 Métodos
Os métodos de um objeto são funções que pertencem a um objeto. Repare que enquanto
que as propriedades correspondem a variáveis, os métodos correspondem a funções.
Versão 1:
x = Math.cos(3 * Math.PI) + Math.sin(Math.LN10)
y = Math.tan(14 * Math.E)
Versão 2: (equivalente à anterior.) Repare que não foi preciso colocar a parte Math. antes
dos nomes dos métodos cos(), sin() ou tan().
with (Math) {
x = cos(3 * PI) + sin (LN10)
y = tan(14 * E)
}
Quando o número de instruções é pequeno não vale a pena usar a declaração with, mas se
esse número crescer muito o código será mais compacto e fácil de ler se usarmos esta
declaração.
DOM
XML DOM
(X)HTML DOM
<html>
<head>
<script type="text/javascript">
function ChangeColor()
{
document.body.bgColor="yellow"
}
</script>
</head>
<body>
<input type=”button” onclick=” ChangeColor()” value=”altere a cor de
Fundo”>
</body>
</html>
Syntax: body.property_name
atributos Descrição
<html>
<head>
<script type="text/javascript">
function formReset()
{
var x=document.forms.MeuForm
x.reset()
}
</script>
</head>
<body>
<form name="MeuForm">
<p>Preencha os campos abaixo e pressione o botão “Reset Form”</p>
<input type="text" size="20"><br />
<input type="text" size="20"><br />
<br />
<input type="button" onclick="formReset()" value="Reset form">
</form>
</body>
</html>
Caso existir mais de um form no documento este objeto poderá ser acessado como um
array.
Exemplo:
<html>
<head>
<script type="text/javascript">
function formReset()
{
var x=document.forms[0];
x.reset()
}
</script>
</head>
<body>
<form name="Form1">
<p>Preencha os campos a baixo e veja como funciona o botão Reset</p>
<input type="text" size="20"><br />
<input type="text" size="20"><br />
<br />
<input type="button" onclick="formReset()" value="Reset form">
</form>
<form name="Form2">
<p>Preencha o campo a baixo, ele faz parte de um outro formulário por isto não sera alterado
quando o botão reset for pressionado</p>
<input type="text" size="20"><br />
<br />
</form>
</body>
</html>
Neste exemplo o form esta sendo acessado como o primeiro form do documento.
atributos descrição
Action Seta ou retorna a url para onde vai ser submetido o FORM
Method Seta ou retorna a forma em que vai ser submetido o form ("get"
ou "post")
Método Descrição
Event Description
Function validaIdade(){
If(document.forms[0].elements[0].value < 0)
{
alert(“digite a idade válida”);
}
}
Coleções descrição
Exemplo:
Mostrando que este método não é proprietário do objeto FORM, caso ele encontre mais
de um objeto o retorno vai ser um array de elementos.
<html>
<frameset id="myFrameset" cols="50%,50%">
<frame id="leftFrame" src="frame_a_noresize.htm">
<frame id="rightFrame" src="frame_a.htm">
</frameset>
</html>
frame_a.htm
<html>
<body bgcolor="#66CCFF">
<h3>Frame A</h3>
</body>
</html>
frame_a_noresize.htm
<html>
<head>
<script type="text/javascript">
function disableResize()
{
parent.document.getElementById("leftFrame").noResize=true
parent.document.getElementById("rightFrame").noResize=true
}
function enableResize()
{
parent.document.getElementById("leftFrame").noResize=false
parent.document.getElementById("rightFrame").noResize=fals
e
}
</script>
</head>
<body bgcolor="#EFE7D6">
<form>
<input type="button" onclick="disableResize()" value="No
resize">
<input type="button" onclick="enableResize()"
value="Resize">
</form>
<p>Aula de javascript com DOM</p>
</body>
</html>
Atributo descrição
Métodos descrição
Event Description
document
A partir do objeto document podemos ter acesso a qualquer elementos contido dentro da
página HTML, como por exemplo uma caixa de texto de um formulário.
O próprio objeto document possui uma série de propriedades e métodos que podem ser
utilizadas pelo JavaScript para interagir ou modificar a aparecia do documento.
Podemos visualizar uma série de propriedades do objeto document com o script abaixo:
<script>
alert(document.location);
alert(document.referrer);
alert(document.fgColor );
alert(document.forms.length );
alert(document.images.length);
alert(document.links.length);
alert(document.readyState );
</script>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
</HEAD>
<BODY>
<img src="mmc.gif">
<img>
<img>
<img>
<br>
</BODY>
</HTML>
Como podemos ver o HTML possui três elementos do tipo IMG, que representam
imagens dentro do documento. Também podemos notar que somente a primeira imagem
possui a propriedade src definida. Através do Javascript, podemos perfeitamente acessar a
coleção de imagens de um documento através da propriedade images. A propriedade
images contém uma coleção de todas as imagens disponíveis dentro de um documento.
No script abaixo vemos um exemplo onde utilizamos a propriedade src da primeira
imagem para carregar as demais imagens do document.
<script>
alert("Note que as imagens não estão carregadas !");
document.images[1].src = document.images[0].src;
document.images[2].src = document.images[0].src;
alert("Agora as imagens estão carregadas !");
</script>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<a href=""></a><br>
<a href=""></a><br>
<a href=""></a><br>
<a href=""></a><br>
<a href=""></a><br>
<br>
<input type="button" value="Inserir Links" onClick="javascript:popula();">
</BODY>
</HTML>
<script>
function popula(){
var sAlunos = new Array();
sAlunos[0] = "Andre";
sAlunos[1] = "Joao";
sAlunos[2] = "Maria";
sAlunos[3] = "Jose";
sAlunos[4] = "Carlos";
sAlunos.sort();
for(nCount=0;nCount<sAlunos.length;nCount++)
{
document.links[nCount].href =
"http://www.processor.com.br/alunos/" + sAlunos[nCount];
document.links[nCount].innerHTML = sAlunos[nCount];
}
}
</script>
<script>
sAlunos.sort();
for(nCount=0;nCount<sAlunos.length;nCount++)
{
document.write(sAlunos[nCount] + "<br>");
}
</script>
<script>
var dtData = new Date();
<script>
var dtData = new Date();
document.write(dtData.getHours() + ":"
+ dtData.getMinutes() + ":"
+ dtData.getSeconds());
setTimeout("document.location.reload();", 2000);
</script>
document.bgColor="#ffff00";
}
}
if (event.button == 2){alert("Copyright mann");}
}
document.onmousedown=click;
qual evento do objeto indicado no atributo FOR o script será executado. Tomemos como
exemplo o HTML com o formulário abaixo:
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM>
<INPUT TYPE=BUTTON NAME=btnOk VALUE="Clique Aqui !">
</FORM>
</BODY>
</HTML>
Esta técnica de mapeamento de eventos pode ser utilizada para mapear eventos não só
dos elementos HTML em geral, mas também eventos do próprio documento, como o
evento de carregamento. O exemplo abaixo mostra um bloco de script que mapeia o
evento OnLoad do documento contido na janela do browser.
onchange, etc.), e o valor contido neste atributo será o nome da função utilizada para
mapear o evento. O exemplo a seguir mostra o mesmo HTML mostrado no exemplo
anterior, porém utilizando a técnica de mapeamento por funções.
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM>
<INPUT TYPE=BUTTON NAME=btnOk VALUE="Clique Aqui !" onclick=”click_btnOk()”>
</FORM>
</BODY>
</HTML>
Note que incluímos um novo atributo na tag do botão que representa o evento a ser
mapeado. O conteúdo deste atributo é o nome da função que irá executar no momento em
que o evento for acionado, exibida abaixo:
<SCRIPT>
function btnOk_click()
{
alert("O documento foi carregado !");
}
</SCRIPT>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM>
<INPUT TYPE=BUTTON NAME=btnOk VALUE="Clique Aqui !">
</FORM>
</BODY>
</HTML>
<SCRIPT>
function btnOk_click()
{
alert("O documento foi carregado !");
}
</SCRIPT>
<SCRIPT>
document.forms[0].btnOk.onclick=btnOk_click;
</SCRIPT>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM>
<INPUT TYPE=TEXT NAME=txtNome><BR>
<INPUT TYPE=BUTTON NAME=btnOk VALUE="Clique Aqui !" onclick="btnOk_click()">
</FORM>
</BODY>
</HTML>
Como este formulário não possui um nome associado, precisamos acessá-lo através da
coleção forms do objeto document. A coleção forms possui um conjunto completo com
todos os formulários disponíveis dentro do document HTML. Como só temos um
formulário dentro de nosso documento, o formulário que queremos é o formulário de
índice 0, conforme apresentado no bloco de script abaixo:
<SCRIPT>
function btnOk_click()
{
alert(document.forms[0].txtNome.value);
}
</SCRIPT>
O código de script acima, busca uma referencia a caixa de texto contida dentro do
formulário do documento e exibe a propriedade value da mesma, que representa o
conteúdo textual da caixa de texto.
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM NAME=frmDados>
<INPUT TYPE=TEXT NAME=txtNome><BR>
<INPUT TYPE=BUTTON NAME=btnOk VALUE="Clique Aqui !" onclick="btnOk_click()">
</FORM>
</BODY>
</HTML>
<SCRIPT>
function btnOk_click()
{
alert(document.frmDados.txtNome.value);
}
</SCRIPT>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM ACTION="">
Usuário: <INPUT TYPE=TEXT NAME=txtUsuario><BR>
Senha: <INPUT TYPE=PASSWORD NAME=txtSenha><BR><BR>
<INPUT TYPE=BUTTON NAME=btnOk VALUE="Efetuar Logon" onclick="btnOk_click()">
</FORM>
</BODY>
</HTML>
Para criarmos uma função que faça a validação deste formulário, basta criarmos o
mapeamento para o evento onclick do botão efetuar logon e apenas submeter o formulário
no caso de as informações solicitadas estarem corretas. O código de script abaixo realiza
esta validação.
<SCRIPT>
function btnOk_click()
{
if(document.frmDados.txtUsuario.value.length == 0)
{
alert("Informe o usuário !");
document.frmDados.txtUsuario.focus();
return;
}
if(document.frmDados.txtSenha.value.length < 6)
{
alert("A senha deve ter no mínimo 6 dígitos !");
document.frmDados.txtSenha.focus();
return;
}
document.frmDados.submit();
}
</SCRIPT>
<HTML>
<BODY>
<FORM NAME=frmDados ACTION="">
Pesquisa Vagas<BR>
<BR>
Cidade:
<SELECT SIZE=1 NAME=cmbCidade>
<OPTION VALUE="">-- Selecione a cidade --</OPTION>
<OPTION VALUE="1">Belo Horizonte</OPTION>
<OPTION VALUE="2">Porto Alegre</OPTION>
<OPTION VALUE="3">Rio de Janeiro</OPTION>
<OPTION VALUE="4">São Paulo</OPTION>
</SELECT><BR>
<BR>
Cargos:<BR>
<SELECT SIZE=5 NAME=lstCargo multiple="multiple">
<OPTION VALUE="1">Analista de Sistemas</OPTION>
<OPTION VALUE="2">DBA</OPTION>
<OPTION VALUE="3">Programador</OPTION>
<OPTION VALUE="4">Programador/Analista</OPTION>
<OPTION VALUE="5">Web-Designer</OPTION>
</SELECT><BR><BR>
<INPUT TYPE=BUTTON NAME=btnOk VALUE="Pesquisar" onclick="btnOk_click()">
</FORM>
</BODY>
</HTML>
Neste HTML temos uma caixa de seleção simples e uma caixa de seleção múltipla. Para
testarmos se o usuário selecionou ou não as informações destes controles utilizaremos o
código de script a seguir.
<SCRIPT>
function btnOk_click()
{
if(document.frmDados.cmbCidade.options[0].selected==true)
{
alert("Selecione a cidade !");
document.frmDados.cmbCidade.focus();
return;
}
if(document.frmDados.lstCargo.value == "")
{
alert("Selecione o cargo !");
document.frmDados.lstCargo.value = "";
return;
}
document.frmDados.submit();
}
</SCRIPT>
document.frmDados.lstCargo.options[0].value;
document.frmDados.lstCargo.options[0].innerHTML;
document.frmDados.lstCargo.options[0].selected;
<HTML>
<HEAD>
</HEAD>
<BODY>
Selecione o grau de escolaridade:<br>
<input type=radio name=optEscolaridade value="1">Analfabeto<br>
<input type=radio name=optEscolaridade value="2">1º Grau<br>
<input type=radio name=optEscolaridade value="3">2º Grau<br>
<input type=radio name=optEscolaridade value="4">Superior Incompleto<br>
<input type=radio name=optEscolaridade value="5">Superior Completo<br>
<input type=radio name=optEscolaridade value="6">Pós, mestrado<br>
<br>
</BODY>
</HTML>
Para validarmos o formulário HTML acima utilizaremos a função Validar, que está
mapeada para o clique do botão Enviar, apresentada no bloco de script abaixo
<script>
function Validar()
{
var nCount;
var bSelecionou = false;
for(nCount=0; nCount<document.frmDados.optEscolaridade.length; nCount++)
{
if(document.frmDados.optEscolaridade[nCount].checked)
{
bSelecionou = true;
break;
}
}
if(bSelecionou == false)
{
alert("Selecione o grau de escolaridade !");
return;
}
if(document.frmDados.optEscolaridade.value=="")
{
alert("Selecione o grau de escolaridade !");
return;
}
if(document.frmDados.chkFumante.checked == true)
{
alert("O Ministério da saúde adverte. Fumar faz mal a saúde !");
}
document.frmDados.submit();
}
</script>
Note que para validarmos ambos os controles estamos utilizando a propriedade checked.
A propriedade checked é utilizada para verificar se um controle de seleção está marcado
ou desmarcado, e serve tanto para radiobuttons como para checkbox.
Na primeira validação, note que temos um conjunto de options com o mesmo nome. Isto
faz com que o script interprete os controles como um array de controles, nos obrigando a
informar o índice de cada um dos controle antes de acessá-los. Criamos uma variável
bSelecionou para verificarmos se o usuário selecionou pelo menos um option button.
Caso ele encontre um option button com a propriedade checked igual a true, a variável
bSelecionou será definida para true, validando o formulário.
Para os outros dois campos, apenas estamos testando a propriedade checked para dar um
alerta para o usuário.
<HTML>
<HEAD>
</HEAD>
<BODY>
<input type=text name=”CPF” onkeypress=”return EditMask(this,
´999.999.999-99´, event);” >
<input type=text name=”Fone” onkeypress=”return EditMask(this,
´(99)9999.9999´, event);” >
</BODY>
</HTML>
Criaremos uma função que manipule a tag para que o formato digitado seja o pré-definido
no código:
<script language=”javascript”>
function EditMask(objField, sMask, evtKeyPress) {
var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;
if(document.all) { // Internet Explorer
nTecla = evtKeyPress.keyCode; }
else if(document.layers) { // Nestcape
nTecla = evtKeyPress.which;
}
sValue = objField.value;
// Limpa todos os caracteres de formatação que
// já estiverem no campo.
sValue = sValue.toString().replace( "-", "" );
sValue = sValue.toString().replace( "-", "" );
sValue = sValue.toString().replace( ".", "" );
sValue = sValue.toString().replace( ".", "" );
sValue = sValue.toString().replace( "/", "" );
i = 0;
nCount = 0;
sCod = "";
mskLen = fldLen;
i++;
}
objField.value = sCod;
if (nTecla != 8) { // backspace
if (sMask.charAt(i-1) == "9") { // apenas números...
return ((nTecla > 47) && (nTecla < 58)); } // números de 0 a
9
else { // qualquer caracter...
return true;
} }
else {
return true;
}
}
</script>
CEP /^[0-9]{5}-[0-9]{3}$/
CPF /^([0-9]{3}\.){2}[0-9]{3}-[0-9]{2}$/
MacAddress /^(([0-9a-f]{2}):){5}([0-9a-f]{2})$/
IP 1]?[0-9]{1,2}|2([0-4][0-9]|5[0-5]))\.){3}([1]?[0-
9]{1,2}|2([0-4][0-9]|5[0-5]))$/
Email /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-
zA-Z0-9]{2,4})+$/
function checkMail()
{
// atribui a variável x o valor do campo email do formulário
var x = document.forms[0].email.value;
/* cria uma variável com o filtro para fazer a pesquisa na string (neste caso é
para validar um emaill) */
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-
9]{2,4})+$/;
//Faz consistência com o método test da variável x
if (filter.test(x)) alert(Email válido!');
else alert('Email inválido!');
}
Método Descrição
<script>
function Abrejanela(Opcao) {
Versao = navigator.appVersion
Versao = Versao.substring(0, 1)
Local = ""
if (Versao < 3) {
Local = document.location
UltLoc = Local.lastIndexOf("/")
Local = Local.substring(0, UltLoc + 1)
}
}
</script>
<body>
<p></p>
<p>Escolha a foto a ser apresentada na nova janela:</p>
<form method="POST" name="Form1">
<p>
<input type=radio name="Opcao" value="1" checked>Elogica
<input type=radio name="Opcao" value="2">Recife
</p> <p>
<input type="button" name="Envia" value="Nova Janela"
onclick="if (Form1.Opcao[0].checked == true){Abrejanela(Form1.Opcao[0].value) }
else {Abrejanela(Form1.Opcao[1].value) } "><strong></strong>
</p>
</form>
</body>
Unidade 17 - Anexo 1
Principais tags
Neste anexo apresentamos todas as tabelas de tags HTML apresentadas nas unidades
anteriores, para facilitar a consulta:
Atributos
Type = modifica o tipo do marcador (símbolo), que pode ser:
Circle = um círculo vazio.
Disc = um círculo cheio.
Square = um quadrado cheio
Unidade 18 - Anexo 2
Frames
18.1 Estrutura Básica - Frameset
O "Frame Document" é um arquivo onde se define a estrutura das janelas para seu
hiperdocumento em HTML. Quantas serão e qual sua distribuição em tela. Neste
documento as marcações <body> e seu par </body> são substituídas por <frameset> e
</frameset>. Tal arquivo pode ser, por exemplo, o arquivo index.html de qualquer nível
na estrutura do seu serviço de informações baseado em WWW.
Pronto, agora é preciso definir cada frame/janela internamente à(s) área(s) de frameset.
Ou seja, as características de cada janela e seus "conteúdos" - URL incial. Cada
janela/frame é antecedido da marcação <frame>, como numa lista cada item é antecedido
por <li>. Usualmente, uma URL virá associada a cada frame.
A estrutura mínima do frame document será então:
</frameset>
</html>
ATRIBUTOS
1. ROWS (<frameset rows=“valor, valor, valor...”>)
Define divisões horizontais.entre janelas. Vem sempre acompanhado de valores
associado, que definem quanto da tela cada janela vai ocupar. Dessa forma, para cada
janela a ser criada deverá haver um valor associado. Estes valores devem vir separados
por vírgulas.
Este valor poderá ser:
Numérico - pixels=> (ROWS="30, 50") Refere-se a quantos pixels cada frame (ou janela)
deve ocupar. A desvantagem desta notação é que não é possível ter controle do valor total
de pixels que o cliente do usuário compreende.
Percentual=> (ROWS="25%, 25%, 50%") Pode ainda ser um valor percentual, sempre
somando um valor de 100%.
É o método mais simples.
Relativo=> (ROWS="2*,*") Desta forma, define-se um valor relativo. No exemplo, o
primeiro frame vai ocupar dois terços da tela, e o segundo um terço.
Exemplos :
1. Para dividir a tela do browser em três janelas horizontais, sendo que a do meio é mais
larga que as de cima e de baixo:
<html>
<head>
<title></title>
</head>
<frame src="cell1.html">
<frame src="cell2.html">
<frame src="cell3.html">
</frameset>
</html>
2.Três janelas horizontais, sendo que a primeira e a segunda tem uma altura fixa, e o
frame central deverá ocupar o restante do espaço:
<html>
<head>
<title></title>
</head>
<frame src="cell1.html">
<frame src="cell2.html">
<frame src="cell3.html">
</frameset>
</html>
<html>
<head>
<title></title>
</head>
<frame src="cell1.html">
<frame src="cell2.html">
<frame src="cell3.html">
</frameset>
</html>
2.Três janelas verticais, sendo que a primeira e a segunda tem uma altura fixa, e o frame
central deverá ocupar o restante do espaço:
<html>
<head>
<title></title>
</head>
<frame src="cell1.html">
<frame src="cell2.html">
<frame src="cell3.html">
</frameset>
</html>
Atenção, para intercalar janelas verticais e horizontais, será necessário definir várias
áreas "FRAMESET". Para cada área delimitida como "FRAMESET" você poderá definir
número de linhas OU colunas. Veremos como fazê-lo mais adiante. Não é possível
definir COLS e ROWS para uma mesma área “FRAMESET”.
18.1.2 Frame
A marcação FRAME define cada janela contida em uma área “frameset”. Esta marcação
não necessita de uma tag de finalização (</frame>) e aceita 6 atributos possíveis:
1. SRC="url"
O atributo SRC define a URL que será exibida em cada frame.
2. NAME="nome_da_janela"
Este atributo é utilizado para associar um nome a uma janela. Deve ser usado quando uma
janela - frame - for o destino de um link em outro documento (normalmente é no mesmo
documento. Um frame apontando para outro. Tipo um índice abrindo várias urls em
outras janelas).
Este atributo é opcional. Por padrão, os frames não tem nome.
Importante, o nome_da_janela deve começar por caracter alfanumérico.
3. MARGINWIDTH="valor"
Esse atributo controla as margens esquerda e direita de cada frame, ou seja, a distância
entre o conteúdo da página e as margens da janela. O valor associado será um valor
absoluto em pixels. O menor valor aceito será 1.
Este atributo é opcional, caso não venha definido, o browser usará o seu padrão para
definir as margens no frame/janela.
4. MARGINHEIGHT="valor"
Também é um atributo opcional. Funciona exatamente como o anterior, só que determina
as margens superior/inferior em cada frame.
5. SCROLLING="yes/no/auto"
Novamente, é um atributo opcional, que define se uma janela deve possuir barra de
rolagem ou não. Caso seja definido como YES, a janela sempre possuirá uma barra de
rolagem visível. Caso seja definido como NO, nunca haverá barra de rolagem. E,
finalmente, se vier como AUTO, o browser aplicará a barra quando necessário.
O padrão é AUTO, portanto, se o atributo scrolling não vier definido, o browser aplicará
a barra de rolagem, sempre que necessário.
6. NORESIZE
Este atributo não possui valor associado. Quando ele não aparece, o usuário poderá
alterar o tamanho da janela, "arrastando" com o cursor a borda da mesma. O padrão é que
todas as janelas possam ter seu tamanho alterado. NORESIZE é opcional
Um frame, com todos os atributos definidos seria escrito assim, por exemplo:
<frame src=“http://www.empresa.com.br” name=“home” marginwidth=“5”
marginheight=“5” scrolling=“auto” noresize>
Noframes
Esta marcação possibilita que se crie uma opção de navegação na página para quem não
possui um browser que entende frames.
Esta marcação aparece no documento de estrutura "Frame document", e sempre é usada
em pares (<noframes>.. conteúdo... </noframes>).
Quando o acesso for feito através de um browser que entenda frames, o que estiver entre
as marcações "noframes" será simplesmente ignorado.
Internamente a uma área "noframes" deverá ser usada a estrutura padrão de documentos
html (<head> </head>, <title> </title> <body> </body>, etc...).
Um exemplo:
<html>
<head>
<title>Teste, uso de frames</title>
</head>
<NOFRAMES>
<body bgcolor="#000000" text="#ffff00" link="#ff0000" >
Bem-vindo a uma página de teste.<p>
Para acessá-la, você deve utilizar a versão 2.0 ou acima do <i>browser</i><a
href="http://home.netscape.com/comprod/mirror/index.html"> Netscape Navigator!</a>
</p>
<hr>
</body>
</NOFRAMES>
</html>
Veja como ela é exibida, por exemplo, com o MOSAIC (não lê frame) e com o
INTERNET EXPLORER (lê frame).
A marcação TARGET, permite que se controle em qual janela um link específico será
exibido quando o usuário clicar sobre ele. Por exemplo, pode-se ter uma janela lateral
com uma espécie de indíce do serviço de informação e outra janela em que a navegação
propriamente dita vai ocorrer. Desta forma, o índice está permanentemente disponível
durante toda a consulta.
Para utilizar este recurso você deverá:
Atribuir um "name" a cada frame em seu "frame document" (name="valor").
No documento onde será criado um link, que vai aparecer em outra janela, ao criar o link,
acrescentar a marcação target="valor"" à âncora, da seguinte forma:
<a href="URL" target="valor">
Onde este valor é idêntico àquele associado à marcação name no frame document.
Exemplo:
O frame document deverá ser escrito assim: o documento que contém o índice de navegação
(barra.htm), será assim:
<html> <HTML>
<HEAD> <BODY>
<title>Apostila de HTML</title>
</html>
</BODY>
</HTML>