Programacao ClientSide LP1 Ciencia Da Computacao
Programacao ClientSide LP1 Ciencia Da Computacao
Programacao ClientSide LP1 Ciencia Da Computacao
Programação I
Programação Client-Side:
Javascript
Client-side
Programação no
cliente Javascript
O que é Javascript?
• Javascript foi desenvolvido para adicionar
interatividade em páginas HTML;
• Se tornou padrão internacional (ISO / IEC 16262)
em 1998;
• Todo mundo pode usar Javascript sem a aquisição
de uma licença;
• Inventada por Brendan Eich da Netscape (com
Navigator 2.0), e implementada em todos os
browsers Netscape e Microsoft desde 1996;
O que é Javascript?
• Javascript é uma linguagem de scripting/script;
• Linguagem interpretada;
• Interpretada somente no cliente (pelo agente
cliente/navegador);
• Javascript é normalmente incorporado dentro das páginas
HTML ou em arquivos separados (.js) também vinculados
às páginas;
• Implementações diferentes para cada navegador.
Java e Javascript são os
mesmos?
• NÃO!
• Java (desenvolvida pela Sun Microsystems –
comprada pela Oracle) é uma poderosa e muito mais
complexa linguagem de programação - na mesma
categoria do C, C++, VB, C#...
• Em comum somente a sintaxe parecida com a da
linguagem C.
O que dá pra fazer?
• Manipulação dos elementos HTML da página;
• Validar a entrada de dados;
• Reagir a eventos;
• Criar componentes/bibliotecas;
• AJAX;
• Usar JQuery.
Inserindo Javascript
• Para inserir código Javascript na página HTML, é necessário
o uso da tag <script>. Dentro da tag o atributo type define o
tipo de linguagem que o bloco de script vai suportar.
• Em HTML5 o atributo type é dispensável.
• O valor text/javascript habilita o suporte a código
Javascript.
<script type="text/javascript">
//<![CDATA[
document.write("Olá Mundo!!!");
//]]>
</script>
Inserindo Javascript
• Script na tag <head> ou no final da página.
• Padronização. Todos os scripts estão num só lugar, e não
interferindo com o conteúdo da página.
<html>
<head>
<script type="text/javascript">
//<![CDATA[
....Código em JS
//]]>
</script>
</head>
<body>
...
Inserindo Javascript
• O comentário //<!CDATA[...//]]> impede
que validadores do padrão X/HTML invalidem o
documento quando achar o caracter “<“ dentro do
bloco javascript.
</head>
<body>
</body>
</html>
• Em HTML5 o atributo type é dispensável.
Inserindo Javascript
<html>
<head>
document.write(“Não funciona”);
</script>
</head>
<body>
</body>
</html>
Declarações Javascript
• Javascript é case sensitive.
• Certo: document.write("Deu certo");
• Errado: Document.Write("Deu errado");
• Todo final de instrução deve ser finalizado com o caracter
“;”.
• document.write("texto 1");
• O código Javascript pode ser agrupado em blocos dentro da
página (objetos-funções);
• { ... }: Delimitador de blocos de comando.
• // : Comentário de linha.
• /* ....*/: Comentário de bloco.
Declarações de Variáveis
• Regras para nomes de variáveis em Javascript:
• Os nomes de variáveis são case sensitive (y e Y são
duas variáveis diferentes).
• Não existe um sessão pré-definida para declaração
das variáveis.
• Uso da palavra reservada var (não obrigatório, mas
deve ser considerado para evitar problemas das
variáveis globais).
• É uma linguagem que usa tipagem dinâmica de
dados, ou seja, não se define inicialmente o tipo de
dado. O valor atribuído é quem define o tipo.
Declarações de Variáveis
var x;
var curnome;
var x=5;
var curnome="Informática";
x=5;
curnome="Informática";
Declarações de Variáveis
var ti="oi";
var t2;
var t3 = null;
• undefined: Indica se uma variável
não tem um valor associado /
if (t1 == undefined) { definido (sem tipo).
alert("t1 é undefined"); • null: para objetos.
}
• typeof: devolve o tipo da variável.
if (t2 == undefined) {
alert("t2 é undefined");
}
if (typeof t1 == "string")
alert("t1 é string");
if (typeof t3 == "object")
alert("t3 é objeto");
Declarações de Variáveis
• Qual é o resultado final de X?
var x;
x = 10;
x = x + 1;
x = "teste";
x = x + 10;
var v1="042";
var v2="42.33";
parseFloat(v1); //resultado = 42
parseFloat(v2); //resultado = 42.33
• Exemplo
var i=0;
for (i=0;i<=5;i++)
{
document.write("O número é " + i);
document.write("<br />");
}
Estruturas de Repetição
while (var<=valorFinal)
{
//código para ser executado
}
• Exemplo
var i=0;
while (i<=5)
{
document.write("O número é " + i);
document.write("<br />");
i++;
}
Estruturas de Repetição
do
{
//código para ser executado
}
while (var<=valorfinal);
• Exemplo
var i=0;
do
{
document.write("O número é " + i);
document.write("<br />");
i++;
}
while (i<=5);
Janela de Interação
alert(“Thank you, Swapnil for trying this
demo.”);
var name;
name = prompt(“What is your
name?”,”Frank”);
function <nome>([parâmetros])
{
[<instruções>];
[<return(expressão)>];
}
(function (msg) {
console.log(msg)
})("oi");
Definindo funções
• Uma função que retorna outra função:
executa( function(msg){
console.log(msg);
});//mensagem: oi
Definindo funções
• Uma função é dita construtora quando sua chamada vem
precedida da palavra chave new. São utilizadas para criação
de novas instâncias de objeto.
var obj = {
metodoA: function () {
console.log("A");
return this;
},
metodoB: function () {
console.log("B");
return this;
},
metodoC: function () {
console.log("C");
return this;
}
};
obj.metodoA().metodoB().metodoC();
Eventos
• Eventos são ações que podem ser capturas pelo
navegador.
• Exemplos de eventos:
• Um clique do mouse
• Carregamento (ou descarregar) da página
• Movimento do mouse
• Selecionando um campo de entrada em um formulário HTML
• Submeter um formulário HTML
• Ao clicar em uma tecla
• Os eventos são utilizados em combinação com funções
Javascript.
• http://www.w3schools.com/jsref/dom_obj_event.asp
onLoad e onUnload
• Disparados quando o usuário entra ou deixa (sai) da página.
• Aplicado na tag BODY.
function mensagem(msg)
{
alert(msg);
}
</script>
</head>
<body onload="mensagem('Entrou na página')"
onunload="mensagem('Deixou a página')">
</body>
</html>
onFocus, onBlur, onChange e
onKeyPress
• onFocus: Ocorre quando o foco vai para um input.
• onBlur: Ocorre quando o input é deixado (perdeu o foco);
• onChange: Ocorre quando o valor do input é modificado e
quando perde o foco.
• OnKeyPress: Ocorre quando uma tecla é pressionada.
• OnKeyDown: Ocorre quando uma tecla é segurada.
• OnkeyUp: Ocorre quando uma tecla é solta.
onblur<br />
<input type="text" size="30" id="x2"
onblur="mensagem('Deixou')">
onchange<br />
<input type="text" size="30" id="x3"
onchange="mensagem('Mudou o valor')">
onkeypress<br />
<input type="text" size="30" id="x4“
onkeypress="mensagem(this.value)">
onClick
• Ocorre quando o usuário clica em um controle que
suporte este evento.
• Aplicado ao BUTTON, CHECKBOX e RADIO.
</form>
onMouseOver e onMouseOut
• Ocorre quando o mouse entra em cima de um objeto ou
deixa o objeto.
• Aplicado em diversas tags.
<a href="http://www.unoeste.br"
onmouseover="mensagem('Passou o mouse no link.‘)">
Unoeste</a>
<br />
<br />
<a href="http://www.unoeste.br/fipp"
onmouseout="mensagem('Tirou o mouse do link.‘)">
FIPP</a>
<br />
<br />
<input type="button" id="btn" value="Passe o mouse"
onmouseover="mensagem('Oi')"
onmouseout="mensagem('Tchau')">
Acessando elementos
• DOM é organizado
em árvore.
Acessando elementos
• DOM (Document Object Model - Modelo de
Objetos de Documentos).
• É uma especificação da W3C, independente
de plataforma e linguagem (cross browser).
• Representa como as marcações em HTML,
XHTML e XML são organizadas e lidas pelo
navegador.
Acessando elementos
• Com a árvore DOM é possível:
1. Consultar ou selecionar elementos individuais.
2. Percorrer os elementos na árvore, localizar os
ascendentes, irmãos e descendentes de qualquer
elemento.
3. Consultar e configurar os atributos e conteúdos dos
elementos.
4. Modificar a estrutura do documento, criando,
inserindo e excluindo nós.
5. Trabalhar com formulários HTML.
Acessando elementos
• HTML/DOM - Exemplo:
<html>
<head>
<meta charset="utf-8" />
<title>Exemplo DOM</title>
</head>
<body>
<h1>Título</h1>
<p>Texto do <i>parágrafo</i>.</p>
</body>
</html>
Acessando elementos
document
<html>
<head> <body>
<h1> <p>
<title>
“Parágrafo”
Acessando elementos
• Cada documento HTML carregado em uma janela
do navegador se torna um objeto, o document.
• O objeto document permite acesso a todos os
elementos HTML da página a partir de um script.
• Coleções disponibilizadas pelo objeto document:
Coleção Descrição
anchors[] Retorna um vetor contendo todas as âncoras do
documento.
forms[] Retorna um vetor contendo todos os
formulários do documento.
links[] Retorna um vetor contendo todos os links do
documento.
Acessando elementos
• O objeto document disponibiliza alguns métodos
para acesso aos elementos da árvore:
document.getElementById(“”)
document.getElementsByName(“”)
document.getElementsByTagName(“”)
document.getElementsByClassName(“”)
document.querySelector(“”)
document.querySelectorAll(“”)
Acessando elementos
• document.getElementById(“”): seleciona um elemento pelo
ID.
• document.getElementsByName(“”): seleciona vários
elementos pela tag name.
• document.getElementsByTagName(“”): seleciona vários
elementos pelo tipo da tag.
• document.getElementsByClassName(“”): selecione vários
elementos pelo atributo class.
• document.querySelector(“”): seleciona o primeiro elemento
baseado num seletor CSS (HTML5).
• document.querySelectorAll(“”): seleciona vários elementos
baseados num seletor CSS (HTML5).
Acessando elementos
function pegaValor()
{
alert(document.getElementById("nome").value);
}
</script>
</head>
<body>
<form id="formulario">
<input type="text" id="nome">
<input type="button" id="btn2" value="Pegar valor“
onclick="pegaValor()">
</form>
Acessando elementos e
adicionando eventos
• É possível adicionar eventos no DOM através do método
addEventListener:
objeto.addEventListener(“click”, function(){alert(‘oi’)}, false);
objeto.addEventListener(“mousemove”, pegaMouse, false);
link[i].addEventListener("click", function ()
{ alert('oi'); }, false);
}
Manipulando CSS com
Javascript
• É possível manipular as propriedades de estilo dos
elementos HTML.
• Exemplos:
document.getElementById(“div_id”).style.backgroundColor = "red";
document.getElementById(“div_id”).className = “textoVermelho”;