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>


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>


Print

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>


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>


Compatibilidade do JavaScript dos vários Navegadores

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 Navegador

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.javafile.com/

http://www.java-scripts.net/

http://dhtml-menu.com/

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