Escolar Documentos
Profissional Documentos
Cultura Documentos
A linguagem JavaScript foi originalmente desenvolvida por Brendan Eich da Netscape com o nome
inicial de Mocha, modificado posteriormente para LiveScript e depois para JavaScript. A
nomenclatura LiveScript foi utilizada ainda no lanamento da linguagem, na verso beta do
navegador Netscape 2.0, mais precisamente em setembro de 1995, obtendo mudana de nome em
anncio conjunto com a Sun Microsystems, em dezembro do mesmo ano, quando foi implementada
no navegador Netscape verso 2.0B3.
A mutao do nome LiveScript para JavaScript se deu na mesma poca em que o Netscape
adicionou suporte a tecnologia Java em seu navegador (Applets). A escolha foi criticada por parecer
uma estratgia de marketing da Netscape em se aproveitar da popularidade do recm-lanado Java.
No demorou muito para a linguagem JavaScript ser aceita de forma ampla como linguagem de
script cliente-side de pginas web. Por isso, a Microsoft lanou um dialeto compatvel com a
linguagem de nome JScript para evitar problemas de trademark. JScript inovou mtodos para
aperfeioar mtodos do JavaScript relacionados a data que apresentavam problemas. O JavaScript e
Jscript so to similares que os dois termos so comumente usados de forma intercambivel.
A Netscape anunciou, em novembro de 1996, que tinha havia submetido JavaScript para Ecma
internacional como um candidato a um padro industrial. O resultado do trabalho posteriormente foi
a verso padronizada, intitulada ECMAScript.
Desde ento, o JavaScript tem se transformado na linguagem de programao mais popular da web.
Inicialmente, muitos profissionais denegriram a linguagem, pois a mesma tinha como alvo principal
o pblico leigo. Com o advento do Ajax, JavaScript teve sua popularidade de volta e recebeu mais
ateno profissional. Com isso, a proliferao de frameworks e bibliotecas, prticas de programao
aperfeioadas, aumento no uso do JavaScript fora do ambiente comum dos navegadores e uso de
plataformas JavaScript server-side se tornou notria.
O projeto CommonJS foi fundado em janeiro de 2009, seu objetivo era especificar uma biblioteca
padro para o desenvolvimento JavaScript fora do navegador.
JavaScript x Java
pouco provvel que algum programador que esteja iniciando seus estudos sobre as linguagens da
web no tenha se deparado com essa dvida: o JavaScript tem o mesmo objetivo do que o Java?
No primeiro momento muitos acham que sim, por suas semelhanas no nome e por serem
linguagens web. Observe algumas distines que mostram que essas duas linguagens no tem nada
em comum.
JavaScript
Linguagem de scripting sem necessidade de compilao;
Cdigo integrado no HTML;
Interaes e efeitos nas pginas;
Falta de confidencialidade do cdigo;
Linguagem simples.
Java
Linguagem de programao compilados na JVM;
Independente de plataforma;
Fortemente tipada;
Linguagem mais complexa;
Segurana no cdigo.
function calculaResultado(form) {
form.resultados.value = eval(form.entrada.value);
}
function expressaoMatematica(form) {
form.entrada.blur();
form.entrada.value = prompt("Insira uma expresso
matemtica. Ex: 2 + 2","");
calculaResultado(form);
}
function limparCampos(){
var entradaValor =
document.getElementById("entrada").value;
var resultadoValor =
document.getElementById("resultados").value;
}
</script>
</head>
<body>
<h1>Calcula expresso matemtica</h1>
<form method="post" onsubmit="limparCampos()">
Calculadora:<input type="text" name="entrada" value=""
onFocus="expressaoMatematica(this.form)">
<br>Resultado:<input type="text" name="resultados"
value="" onFocus="this.blur()">
<input type="submit" value="LimparCampos">
</form>
</body>
</html>
<script>
function coordenadas(evento) {
var x;
var y;
if (window.event){//Forma de se pegar as
coordenadas no Internet Explorer ou Google Chrome
x =
window.event.clientX;
y =
window.event.clientY;
}else{//Forma de se pegar as coordenadas no
Firefox ou Google Chrome
x = evento.clientX;
y = evento.clientY;
}
document.getElementById("coordenadas").inne
rHTML = "Cordenadas atual do mouse: " + x + ", " + y;
}
document.onmousemove = coordenadas;
</script>
</head>
<body>
<div id="coordenadas"></div>
</body>
</html>
A seguir realizado um script que faz a interao com o usurio atravs de imagens, funes e
textos de apresentao. Portanto, para ser gerada alguma ao, os seguintes passos tero que ser
pensados nesse cenrio, como:
1. Saber quando a pgina termina de carregar.
2. Saber como exibir a ao para que o usurio consiga visualiz-la.
O primeiro item envolve a reposta de um evento, provavelmente um que seja executado ao carregar
a pgina. O segundo item envolve usar um recurso JavaScript predefinido.
Na Listagem 3 realiza-se a chamada de uma funo desenvolvida, que faz uma saudao para o
usurio com o texto que for digitado.
Na Listagem 4 realizada uma interao com o usurio.
Listagem 4. Cdigo de interao com o usurio
<!DOCTYPE html>
<html>
<head>
<title>Interagindo com o usurio</title>
<script type="text/JavaScript">
function olaSmile(){
var nomeUsuario = prompt("Qual
o seu nome?", "Digite aqui");
if(nomeUsuario){
alert('Prazer em
conhecer voc, '+nomeUsuario);
document.getElement
ById("idImgFeliz").src = "feliz.jpg"
}
}
</script>
</head>
<body onload="alert('Ol usurio, clique na imagem para fazer a
interao!');">
<div style="margin-top:100px; text-align:center">
<img id="idImgFeliz" SRC="infeliz.jpg"
alt="infeliz" onClick="olaSmile()" style="cursor:pointer"/>
</div>
</body>
</html>
<script>
var strDes;
var strRem;
var totalRem;
var totalDes;
var strtemp
var strValor;
totalRem = objRemetente.length;
totalDes = objDestino.length;
strDes += "</SELECT>";
strRem += "</SELECT>";
document.getElementById(tdDestino).innerHTML = strDes;
document.getElementById(tdRemetente).innerHTML = strRem;
sortSelect(document.getElementById(objRemetente.id), true);
sortSelect(document.getElementById(objDestino.id), true);
}
</script>
<body>
<table width="100%" border="0" style="margin:100 1 1 1">
<tr>
<td width="33%" align="center" >
</td>
<td width="34%">
<table width="100%" border="0">
<tr>
<td align="center"
id="tdFilhos">
<SELECT
id=cboFilhos style="WIDTH: 130px; height: 100px" name=cboFilhos
multiple="multiple">
<option value="0">RS</option>
<option value="1">SC</option>
<option value="2">SP</option>
<option value="3">RJ</option>
<option value="4">TO</option>
<option value="5">AM</option>
<option value="6">CE</option>
</SELEC
T>
</td>
<td valign="middle"
align="center">
<input
type="button" id="btnMoverDir" name="cboMoverDir" value=">>"
onClick="onMoveItem(cboFilhos, 'tdFilhos', cboFilhosSel,
'tdFilhosSel');"/><BR /><br />
<input
type="button" id="btnMoverEsq" name="cboMoverEsq" value="<<"
onClick="onMoveItem(cboFilhosSel, 'tdFilhosSel', cboFilhos, 'tdFilhos');"/>
</td>
<td align="center"
id="tdFilhosSel">
<SELECT
id=cboFilhosSel style="WIDTH: 130px; height: 100px" name=cboFilhosSel
multiple="multiple" height="200px">
</SELEC
T>
</td>
</tr>
</table>
</td>
<td width="33%">
</td>
</tr>
</table>
</body>
</html>
Na Listagem 6 vemos outro cdigo que fora o usurio inserir a informao correta, neste caso o
campo e-mail.
Listagem 6 . Validao do campo email.
<!DOCTYPE html>
<html>
<head>
<script>
function validaForm()
{
var x=document.forms["formValidacao"]["email"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
}
</script>
</head>
<body>
<form name="formValidacao" onsubmit="return validaForm();"
method="post">
Email: <input type="text" name="email">
<input type="submit" value="Validar Informao">
</form>
</body>
</html>
//Recupera o id do elemento
nome dentro do form
var nome =
document.getElementById("nome").value;
if (nome == "") {
alert("Digite algum
texto no campo!");
form.nome.focus();
return false;
}
//Recupera o id do elemento
idade dentro do form
var idade =
document.getElementById("idade").value;
if (idade == "" || !
validaNumero(idade)) {
alert("Digite
apenas nmeros!");
form.idade.focus();
return false;
}
</script>
</head>
<body>
<form name="formCad" onsubmit="return
validaCampos(formCad)">
Digite o nome:
<input id="nome" type="text" size="12"/>
<br />
Digite a idade:
<input id="idade" type="text" size="5"/>
<br />
Sexo: <input type="radio" name="sexo"
value="0"> Masculino
<input type="radio"
name="sexo" value="1"> Feminino
<br/><br/>
<input type="submit" value="Salvar">
</form>
</body>
</html>
}
</script>
</head>
<body>
</body>
</html>
Quando o modelo DOM representado em um documento HTML, a pgina pode ser representada
como uma hierarquia de elementos na forma de uma rvore (tree), ou seja, cada folha na rvore
representa um n (node), que se relaciona diretamente a cada elemento em uma pgina. Na hora que
um n aparece sob outro n na rvore construda uma hierarquia, nesse caso acaba sendo
considerado um filho desse n.
Cada n em uma rvore DOM classificado conforme seu tipo. Os principais tipos de n
basicamente so de elemento e texto.
Elemento Qualquer elemento HTML que corresponde a uma tag no cdigo HTML.
Texto O contedo do texto para um elemento, sempre armazenado como um n-filho sob
um elemento.
Na Figura 1 e Listagem 9 mostrado um exemplo de cdigo com a hierarquia dos elementos html
de modo grfico.
Figura 1. rvore DOM dos elementos html.
Listagem 9. Exemplo da estrutura da Figura 1.
<!DOCTYPE html>
<html>
<head>
<title>Ttulo da pgina</title>
</head>
<body>
<h1>
Pargrafo 1 da pgina
<h1>
<p>Pargrafo 1 da pgina <em>pedao do text node com
elemento em</em> volta para o elemento pargrafo</p>
<p>Pargrafo 2 da pgina</p>
</body>
</html>
<script type="text/JavaScript">
function listarAtributos(){
var elem = document.getElementById("conta");
var atributos = "";
elem.innerHTML = atributos;
}
</script>
</head>
<body>
</body>
</html>
A origem das interaes com o DOM tem como o objeto document, que um n superior na
rvore de ns de um documento. Esse objeto oferece dois mtodos que so o getElementById( ) e
getElementByTagName( ), ambos j mostrados em scripts anteriores.
A seguir so mostrados os mtodos que podem ser usados para percorrer o documento, bem como:
hasChildNodes - retorna true se o elemento possui filhos;
firstChild - retorna uma referncia ao primeiro elemento filho;
lastChild - retorna uma referncia ao ltimo elemento filho;
nextSibling - retorna uma referncia ao irmo posterior ao elemento;
previousSibling - retorna uma referncia ao irmo anterior ao elemento;
nodeName - retorna o nome da TAG do elemento (apenas para elementos n);
nodeValue - retorna o valor do elemento (apenas para elementos texto);
nodeType - retorna o tipo do elemento;
parentNode - retorna uma referncia ao elemento pai.
Essas propriedades so a chave para ser capaz de manipular a rvore de documentos para acessar
dados especficos do n.
Veja na Listagem 11 a recuperao das informaes sobre cada elemento no documento.
Listagem 11. Propriedades elementos DOM.
<html>
<head>
<title>
Propriedades da rvore DOM
</title>
<script>
//nossas variveis globais, que sero compartilhadas por todas as
nossa funes
var el;
var nome;
var tipo;
var valor;
function start()
{
el = document.documentElement; //pega o elemento HTML, raiz do
documento
nome = document.getElementById("nome"); //pega o elemento com o
id nome
tipo = document.getElementById("tipo"); //pega o elemento com o
id tipo
valor = document.getElementById("valor"); //pega o elemento com o
id valor
mostra();
}
</script>
</head>
<body>
<form>
<fieldset>
<input type="button" name="next" value="Next Irmo"
onClick="proximoIrmao();" />
<input type="button" name="prev" value="Prev Irmo"
onClick="irmaoAnterior();" />
<input type="button" name="parent" value="Pai"
onClick="obterPai();" />
<input type="button" name="first" value="First Filho"
onClick="primeiroFilho();" />
<input type="button" name="last" value="Last Filho"
onClick="ultimoFilho();" />
<input type="button" name="reiniciar" value="Reiniciar"
onClick="restart();" />
<br/>
Valor :<input type="text" name="valor" id="valor" value=""
size="65" />
<br/>
</body>
</html>
<script language="JavaScript">
start();// inicia no elemento HTML, mas antes ele espera que todo o
documento esteja carregada
</script>
Com este artigo podemos concluir que o JavaScript a linguagem para quem deseja desenvolver
mais a lgica e saber como manipular elementos, pois capaz de se adaptar com outras linguagens
Web e frameworks, fechando uma boa parceria.
Publicado no Canal Front-end web
Guia JavaScript +
Object1