Aplicativos em PHP/Referências/JavaScript
JavaScript na Wikipedia
http://pt.wikipedia.org/wiki/Javascript
JavaScript é uma linguagem de programação criada pela Netscape em 1995, que a princípio se chamava LiveScript, para atender, principalmente, as seguintes necessidades:
- Validação de formulários no lado cliente (programa navegador); - Interação com a página. Assim, foi feita como uma linguagem de script. Javascript tem sintaxe semelhante a do Java, mas é totalmente diferente no conceito e no uso.
1. Oferece tipagem dinâmica - tipos de variáveis não são definidos; 2. É interpretada, ao invés de compilada; 3. Possui ótimas ferramentas padrão para listagens (como as linguagens de script, de modo geral); 4. Oferece bom suporte a expressões regulares (característica também comum a linguagens de script).
Sua união com o CSS é conhecida como DHTML. Usando o Javascript, é possível modificar dinamicamente os estilos dos elementos da página em HTML.
Dada sua enorme versatilidade e utilidade ao lidar com ambientes em árvore (como um documento HTML), foi criado a partir desta linguagem um padrão ECMA, o ECMA-262, também conhecido como ECMAScript. Este padrão é seguido, por exemplo, pela linguagem ActionScript da Adobe(Antigamente Macromedia, porém a empresa foi vendida a Adobe).
Além de uso em navegadores processando páginas HTML dinâmicas, o JavaScript é hoje usado também na construção do navegador Mozilla, o qual oferece para a criação de sistemas GUI todo um conjunto de ferramentas (em sua versão normal como navegador, sem a necessidade de nenhum software adicional), que incluem (e não apenas) um interpretador de Javascript, um comunicador Javascript <-> C++ e um interpretador de XUL, linguagem criada para definir a interface gráfica de aplicações.
Introdução
O JavaScript é uma ferramenta muito util para a construção de Web Sites, especialmente se utilizada em conjunto com HTML, CSS, PHP, entre outras ferramentas.
Também pode criar diversas ferramentas para sites:
* Jogos * Relógios * Animações com mouse * Menus com select * Mensagens de alerta * Janelas Popup * Validação de Formulários HTML
Sintaxe
Como escrever código JavaScript?
* Usar a tag <script para dizer ao browse que você está usando Javascript. * Escrever ou fazer download de Javascript * Testar scripts
Primeiro script JavaScript
HTML e JS
<html> <body> <script type="text/javascript"> <!-- document.write("Olá Mundo do JavaScript!") //--> </script> </body> </html>
Location - onde usar JS?
# Dentro da tag head # Na tag body # Em um arquivo externo
Exemplo no head
<html> <head> <script type="text/javascript"> <!-- function popup() { alert("Olá Mundo do JavaScript (function)") } //--> </script> </head> <body> <input type="button" onclick="popup()" value="Executar"> </body> </html>
Externo - Importando um arquivo JS externo
O arquivo deve estar em JS e somente com sintaxe JS e usar extensão .js
Importante: os arquivos a serem incluídos não devem conter as tags
<script> e </script>.
<html> <head> <script src="meujs.js"> </script> </head> <body> <input type="button" onclick="popup()" value="Clique Me!"> </body> </html>
Operadores
Aritméticos
Operator Descrição Example + Addition 2 + 4 - Subtraction 6 - 2 * Multiplication 5 * 3 / Division 15 / 3 % Modulus 43 % 10
Exemplo de Operadores Javascript com Variáveis
<body> <script type="text/javascript"> <!-- var two = 2 var ten = 10 var linebreak = "<br />" document.write("two plus ten = ") result = two + ten document.write(result) document.write(linebreak) document.write("ten * ten = ") result = ten * ten document.write(result) document.write(linebreak) document.write("ten / two = ") result = ten / two document.write(result) //--> </script> </body>
Operadores de Comparação
Operator Descrição Example Result == Equal To $x == $y false != Not Equal To $x != $y true < Less Than $x < $y true > Greater Than $x > $y false <= Menor ou igual $x <= $y true >= Maior ou igual $x >= $y false
Variáveis
Podemos imaginar uma variável como uma cesta de frutas e os dados das variáveis como as frutas da cesta.
Quando usar uma variável pela primeira vez é uma boa prática de programação usar a palavra reservada var antes do nome da variável.
<body> <script type="text/javascript"> <!-- var linebreak = "<br />" var my_var = "Hello World!" document.write(my_var) document.write(linebreak) my_var = "I am learning javascript!" document.write(my_var) document.write(linebreak) my_var = "Script is Finishing up..." document.write(my_var) //--> </script> </body>
Nomes de variáveis
- evitar palavras reservadas do JavaScript
- escolher nomes descritivos
- nomes de variáveis não podem iniciar com algarismos
- uma boa prática é iniciar com minúsculas
Funções
Funções em JavaScript são similares a funções em outras linguagens como PHP, C, C++, Java.
Uma função é um pedaço de código que fica dormindo até que seja chamado para "funcionar".
Ao invés de digitar todo o código sempre que precisar, podemos simplesmente chamar novamente a função. Isto é conhecido como reutilização de código.
<html> <head> <script type="text/javascript"> <!-- function popup() { alert("Olá Mundo do JS!") } //--> </script> </head> <body> <input type="button" onclick="popup()" value="Executar"> </body> </html>
Eventos
Este é o grande recurso do JavaScript, que possibilita interagir com o usuário no site, como:
- clique do mouse
- página sendo carregada
- mouse movendo sobre algum componente da página
- Seleção de item de Select
- Toque de tecla
- etc
<html> <head> <script type="text/javascript"> <!-- function popup() { alert("Hello World")} //--> </script> </head> <body> <input type="button" value="Click Me!" onclick="popup()"><br /> <a href="#" onmouseover="" onMouseout="popup()">Hover Me!</a> </body> </html>
Todo código em JavaScript é formado por instruções (statements).
Uma instrução é uma variável igual a um valor.
Como também é algo como uma chamada de função, por exemplo document.write(). As instruções definem o que o script deve fazer e como fazer.
Em algumas linguagens como o PHP, o final das instruções obrigatoriamente deve terminar com ponto e vírgula. Mas em JavaScript o ; ao final das instruções é opcional. Obrigatoriamente as instruções terminam com uma quebra de linha.
Tipos de Instruções (Estruturas de Controle)
- Condicionais
- Loops
- Manipulação de Objetos
- Comentários
- Manipulação de exceções
if
<script type="text/javascript"> <!-- var myNum = 7; if(myNum == 7){ document.write("Lucky 7!"); } //--> </script>
else
<script type="text/javascript"> <!-- var myNum = 10; if(myNum == 7){ document.write("Lucky 7!"); }else{ document.write("You're not very lucky today..."); } //--> </script>
else if
<script type="text/javascript"> <!-- var visitor = "principal"; if(visitor == "teacher"){ document.write("My dog ate my homework..."); }else if(visitor == "principal"){ document.write("What stink bombs?"); } else { document.write("How do you do?"); } //--> </script>
while
<script type="text/javascript">
<!--
var myCounter = 0;
var linebreak = "<br />";
document.write("While loop is beginning");
document.write(linebreak);
while(myCounter < 10){
document.write("myCounter = " + myCounter);
document.write(linebreak);
myCounter++;
}
document.write("While loop is finished!");
</script>
<script type="text/javascript"> <!-- var myCounter = 0; var linebreak = "<br />"; document.write("While loop is beginning"); document.write(linebreak); while(myCounter < 10){ document.write("myCounter = " + myCounter); document.write(linebreak); myCounter++; } document.write("While loop is finished!"); </script>
for
<script type="text/javascript"> <!-- var linebreak = "<br />"; document.write("For loop code is beginning"); document.write(linebreak); for(i = 0; i < 5; i++){ document.write("Counter i = " + i); document.write(linebreak); } document.write("For loop code is finished!"); </script>
Comentários
<script type="text/javascript"> <!-- // This is a single line Javascript comment document.write("I have comments in my Javascript code!"); //document.write("You can't see this!"); //--> </script>
Array
São tipos especiais de variáveis.
Valores são armazenados em arrays passando o nome do array e a localização no array entre colchetes.
myArray[2] = "Hello World";
Valores em arrays são acessados com o nome do array e a localização do valor:
myArray[2]
JavaScript traz algumas funções para trabalhar com arrays.
<script type="text/javascript"> <!-- var myArray = new Array(); myArray[0] = "Baseball"; myArray[1] = "Cricket"; myArray[2] = "Football"; document.write(myArray[0] + myArray[1] + myArray[2]); //--> </script>
Ordenação de arrays
<script type="text/javascript"> <!-- var myArray = new Array(); myArray[0] = "Baseball"; myArray[1] = "Cricket"; myArray[2] = "Football"; myArray.sort(); document.write(myArray[0] + myArray[1] + myArray[2]); //--> </script>
Alert
Alert emite uma caixa de mensagem (janela popup) com mensagem texto.
<form> <input type="button" onclick= "alert('Realmente excluir o registro atual?')" value="Corfirmar Exclusão"> </form>
Confirm
Solicita confirmação com uma mensagem e exibindo dois botões para confirmar ou desistir.
<html> <head> <script type="text/javascript"> <!-- function confirmation() { var answer = confirm("Deixar o curso_php.org?") if (answer){ alert("Até outro dia!") window.location = "http://www.google.com/"; } else{ alert("Grato por permanecer!") } } //--> </script> </head> <body> <form> <input type="button" onclick="confirmation()" value="Deixar o curso_php.org"> </form> </body> </html>
Prompt
Abra uma janela com uma mensagem e uma caixa de texto para receber resposta do usuário.
<head> <script type="text/javascript"> <!-- function prompter() { var reply = prompt("Olá amigo visitante! Qual seu nome?", "") alert ('Seu nome é ' + reply) } //--> </script> </head> <body> <input type="button" onclick="prompter()" value="Dizer meu nome!"> </body>
Abre o diálogo de impressão do browser para imprimir a janela atual
<form> <input type="button" value="Print This Page" onClick="window.print()" /> </form>
Redirect
<script type="text/javascript">
<!--
window.location = "http://www.google.com/"
//-->
</script>
<script type="text/javascript"> <!-- window.location = "http://www.google.com/" //--> </script>
Time Delay
<html> <head> <script type="text/javascript"> <!-- function delayer(){ window.location = "../javascriptredirect.php" } //--> </script> </head> <body onLoad="setTimeout('delayer()', 5000)">
Preparar para redirecionar
This page is a time delay redirect, please update your bookmarks to our new location!
</body> </html>
PopUp
<head> <script type="text/javascript"> <!-- function myPopup() { window.open( "http://www.google.com/" ) } //--> </script> </head> <body> <form> <input type="button" onClick="myPopup()" value="POP!"> </form> <p onClick="myPopup()">CLICK ME TOO!</p> </body>
* dependent - Subwindow closes if parent(the window that opened it) window closes * fullscreen - Display browser in full screen mode * height - The height of the new window, in pixels * width - The width of the new window, in pixels * left - Pixel offset from the left side of the screen * top - Pixel offset from the top of the screen * resizable - Allow the user to resize the window or prevent resizing * status - Display the status bar or not
<head> <script type="text/javascript"> <!-- function myPopup2() { window.open( "http://www.google.com/", "myWindow", "status = 1, height = 300, width = 300, resizable = 0" ) } //--> </script> </head> <body> <form> <input type="button" onClick="myPopup2()" value="POP2!"> </form> <p onClick="myPopup2()">CLICK ME TOO!</p> </body>
Outro Exemplo (http://www.plus2net.com/javascript_tutorial/javascript_popup.php)
<html> <head> <title>Javascript Popup</title> <SCRIPT TYPE='text/javascript'> <!-- function popup(width,height){ if(window.innerWidth){ LeftPosition =(window.innerWidth-width)/2; TopPosition =((window.innerHeight-height)/4)-50; } else{ LeftPosition =(parseInt(window.screen.width)- width)/2; TopPosition=((parseInt(window.screen.height)-height)/2)-50; } attr = 'resizable=no,scrollbars=yes,width=' + width + ',height=' + height + ',screenX=300,screenY=200,left=' + LeftPosition + ',top=' + TopPosition + ''; popWin=open('', 'new_window', attr); popWin.document.write('<head><title>Test Popup</title></head>'); popWin.document.write('<body><div align=center>'); popWin.document.write('<b>This is a test popup window</b><br><br>'); popWin.document.write('Content goes here<br>'); popWin.document.write('Content goes here<br>'); popWin.document.write('Content goes here<br>'); popWin.document.write('</div></body></html>'); } //--> </SCRIPT> </head> <body> <a href="javascript:popup(400,200);">Generate popup</a> </body> </html>
Date
Isto é agora
<script type="text/javascript"> <!-- var currentTime = new Date() //--> </script>
* getTime() - Number of milliseconds since 1/1/1970 @ 12:00 AM * getSeconds() - Number of seconds (0-59) * getMinutes() - Number of minutes (0-59) * getHours() - Number of hours (0-23) * getDay() - Day of the week(0-6). 0 = Sunday, ... , 6 = Saturday * getDate() - Day of the month (0-31) * getMonth() - Number of month (0-11) * getFullYear() - The four digit year (1970-9999)
Agora podemos imprimir as informações. Usaremos os métodos getDate, getMonth, e getFullYear neste exemplo.
Agora
<script type="text/javascript"> <!-- var currentTime = new Date() var month = currentTime.getMonth() + 1 var day = currentTime.getDate() var year = currentTime.getFullYear() document.write(month + "/" + day + "/" + year) //--> </script>
Current Time Clock
Agora
<script type="text/javascript"> <!-- var currentTime = new Date() var hours = currentTime.getHours() var minutes = currentTime.getMinutes() if (minutes < 10) minutes = "0" + minutes document.write(hours + ":" + minutes + " ") if(hours > 11){ document.write("PM") } else { document.write("AM") } //--> </script>
Form
Checando por não vazio
function notEmpty(elem){ var str = elem.value; if(str.length == 0){
alert("You must fill in all required fields (*)"); return false;} else { return true;}
}
Validação de Formulários
function formValidation(form){
if(notEmpty(form.req1)){ if(notEmpty(form.req2)){ return true; } } else { return false; }
}
Form
<head> <script type="text/javascript"> </script> </head> <body> <form name="example" onSubmit="return formValidation(this)">
- Required 1:<input type="text" name="req1" />
- Required 2:<input type="text" name="req2" />
<input type="submit" />
</form> </body>
Void 0
<a href="javascript: alert('News Flash!')">News Flash</a>
<a href="javascript: void(0)">I am a useless link</a>
<a href="javascript: void(myNum=10);alert('myNum = '+myNum)"> Set myNum Please</a>
Função para validar caracteres ao digitar compatível com IE e no FF
<script> function onKeyPressNaoAlgarismos(e) { var key = window.event ? e.keyCode : e.which; var keychar = String.fromCharCode(key); reg = /\d/; return !reg.test(keychar); } function onKeyPressSoAlgarismos(e) { var key = window.event ? e.keyCode : e.which; var keychar = String.fromCharCode(key); reg = /\d/; return reg.test(keychar); } </script>
Testar:
<form> Permite só de 0 - 9: <input name="algarismos" type="text" onkeypress="return onKeyPressNaoAlgarismos(event);" /><br> Impede de 0 - 9: <input name="nao_alg" type="text" onkeypress="return onKeyPressSoAlgarismos(event);" /><br> </form>
Adaptado de Tutorials - KeyPress validation http://www.mredkj.com/tutorials/validate.html
Outra função para validar caracteres ao digitar (do mesmo site acima)
function blockNonNumbers(obj, e, allowDecimal, allowNegative) { var key; var isCtrl = false; var keychar; var reg;
if(window.event) { key = e.keyCode; isCtrl = window.event.ctrlKey } else if(e.which) { key = e.which; isCtrl = e.ctrlKey; }
if (isNaN(key)) return true;
keychar = String.fromCharCode(key);
// check for backspace or delete, or if Ctrl was pressed if (key == 8 || isCtrl) { return true; }
reg = /\d/; var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false; var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;
return isFirstN || isFirstD || reg.test(keychar); }
Comparando JavaScript com seu primo ActionScript (script do Flash)
http://www.webreference.com/programming/javascript/j_s/column2/
JavaScript sem mistérios para Mozilla/Netscape e Microsoft Internet Explorer
http://www.vivaolinux.com.br/dicas/impressora.php?codigo=8872
Identificar Idioma automaticamente
<script> if(navigator.browserLanguage) { var language = navigator.browserLanguage; } else if(navigator.language) { var language = navigator.language; } switch (language.substring(0,2)) { case "pt" : location.href="pagina_em_portugues.php"; break; case "en" : location.href="pagina_em_ingles.php"; break; case "es" : location.href="pagina_em_espanhol.php"; break; default : location.href="pagina_em_portugues.php"; } </script>
Grandes repositórios de JavaScript
http://www.tizag.com/javascriptT/ (site com o original deste tutorial)
http://javascript.internet.com/
Referências
http://developer.mozilla.org/en/docs/JavaScript
http://www.javascriptkit.com/jsref/
http://javascript-reference.info/
http://www.w3schools.com/jsref/default.asp
http://docs.sun.com/source/816-6408-10/
http://www.devguru.com/technologies/JavaScript/home.asp
http://wp.netscape.com/eng/mozilla/3.0/handbook/javascript/
http://devedge-temp.mozilla.org/library/manuals/2000/javascript/1.5/reference/
http://www.comptechdoc.org/independent/web/cgi/javamanual/
http://www.quirksmode.org/js/contents.html
http://argento.bu.edu/~ccruz/javascript/reference.html
http://www.phpforms.net/tutorial
http://www.java2s.com/Code/JavaScriptReference/CatalogJavaScriptReference.htm