Interface Web
Programação Cliente
JavaScript
JavaScript
O JavaScript é uma linguagem de scripting,
orientada a objectos e independente de
plataformas
Criada pela NetScape
Código embebido em paginas HTML
Utilizada para:
Interactividade nas páginas HTML
Validar formulários
Recentemente no AJAX
Interpretada pelos Browsers
JavaScript
Tipos de dados
Tipos de dados dinâmicos
var x=3.14
var str=”hello world”
Conversão entre tipos automática
str=x
Operador + para concatenação de strings
Tipos de dados primitivos
• números (sem distinção entre inteiros e reais)
•
•
•
•
string (cadeia de caracteres)
lógicos (true ou false)
null
undefined
JavaScript
Variáveis
definição
x=3.14
var x=3.14
variáveis definidas com var e sem valor atribuído tem
valor undefined
As variáveis são globais se definidas fora de uma função,
caso contrário são variáveis locais.
JavaScript
ARRAY
definido como um conjunto de literais
var paises=["Portugal","Espanha","França"];
definido com o construtor new do objecto Array
var cidades = new Array( "Porto",“Braga",“Viseu");
var vec1=new Array(4);
vec1[0]=5
propriedade length
for (i=0;i<cidades.length;i++)
{ document.writeln(paises[i]); }
JavaScript
Métodos do objecto Array:
Concat- agrupa dois arrays e devolve um
novo array
Join – agrupa todos os elementos de um
array numa string
pop – remove o ultimo elemento
push – acrescenta um elemento
sort – ordena os elementos do array
…
JavaScript
Array associativo
Array onde a indexação pode ser feita por uma string
concelhos["Porto"]="Aldoar, Foz, Nevogilde, Lordelo do Ouro";
concelhos["Maia"]="Águas Santas, Moreira, Milheiró, Vermoim";
concelhos["Gaia"]="Candal, São Pedro da Afurada, Arcozelo";
Cada uma das chaves pode ser considerada como
uma propriedade do objecto concelhos
concelhos.Esposende="Esposende,Fão,Fonte Boa";
document.writeln (conselhos.Porto)
JavaScript
Principais instruções
if (condition) {
statements1}
[else {
statements2
} ]
function checkAno () {
if (document.getElementById(“ano”).value < 2007 ) {
return true; }
else {alert("Ano tem de ser menor que 2007”);
return false; }
}
JavaScript
switch (expression){
case label :
statement;
break;
...
default : statement; }
for ([initialExpression]; [condition];
[incrementExpression]) {
statements
}
for...in
Iteracção de uma variável sobre as propriedades de um objecto
for (variable in object) {
statements }
while (condition) {
statements
}
JavaScript
Objectos primitivos
Sintaxe OO
objectName.propertyName
objectName.methodname(params);
Principais objectos
String
Array
Date
Math
RegExp
JavaScript
Objecto String
var strmail =new String(“jal@dei.isep.ipp.pt”)
length
devolve o comprimento de uma string (é uma propriedade do objecto string)
Var n=str.length
indexOf(str1,[start])
devolve a posição da primeira ocorrência de str1
var pos=strmail.indexOf(“@”)
charAt(index)
devolve o caracter da string na posição especificada por index
var ch=strmail.charAt(4);
substring(start,end)
devolve os caracteres da string entre as posições especificadas
JavaScript
Objecto String
Outros métodos
charCodeAt
toUpperCase
fromCharCode
Split
toLowercase
function leftTrim(sString)
{
while (sString.substring(0,1) == ' ')
{
sString = sString.substring(1, sString.length);
}
return sString;
}
JavaScript
Objecto Date
new
new
new
new
construtores
Date(); // devolve a data do sistema
Date( milliseconds)
Date( dateString)
Date( yr_num, mo_num, day_num[, hr_num,
min_num, sec_num])
métodos
.getHours();
.getMinutes();
.getDate();
.getMonth();
.getYear();
.getDay()
.getTime()
.setDate()
.setMonth()
.setTime()
.toString()
JavaScript
Objecto Math
O objecto Math tem métodos para trabalhar com
constantes e funções matemáticas
Math.PI
Math.sqrt(x)
Math.abs(x)
Math.round(x)
Math.cos(x)
Math.max(x,y)
Math.pow(x,y)
Math.random()
JavaScript
Funções primitivas
parseFloat(str)
converte o argumento str num float. Se não for possível a conversão
devolve “NaN" (not a number).
parseInt(str [, radix])
converte str num inteiro de acordo com o argumento radix. Se não
for possível a conversão devolve “NaN" (not a number).
isNaN(testValue)
devolve true se o argumento é um NaN
num=parseInt(document.getElementById(“ano”).value;
if (isNaN(num) || num > 2007)
alert ("erro")
JavaScript Dom (Document Object Model)
JavaScript
JavaScript DOM
window
contém a informação sobre as janelas e frames
document
navigator
contém informação sobre o documento HTML e permite
aceder aos elementos HTML dentro do documento
Contém informação sobre o browser do utilizador
event
Contém informação sobre os eventos que ocorrem na
página
JavaScript
JavaScript Windows e Frames
window.alert(text)
apresenta uma janela com o texto especificado como parâmetro
result = window.confirm(text)
apresenta uma janela de diálogo. result é um valor booleano com
valor true se foi premido o botão OK e false para o botão Cancel
window.open("URL", "name" [, "windowfeatures"])
método para criar uma nova janela. Devolve um objecto do tipo window.
O name permite identificar a janela para ser utilizado no target.
windowfeatures define propriedades da janela como altura, largura,
toolbar
var winobj=window.open("btest2.html", "bwin",
"toolbar,status");
JavaScript
url = window.location
window.location = url
propriedade para definir novo url da página ou saber url corrente
function getNews() {
window.location= "http://www.cnn.com"; }
no html: <button onclick="getNews();">News</button>
window.parent
devolve uma referência para a janela (frame) pai da janela( frame) corrente.
window.top
devolve uma referência para a janela principal (ou frameset) numa hierarquia
de janelas
msg = window.status
window.status = msg
propriedade que permite alterar o texto na statusbar do browser.
JavaScript
windows.history
devolve uma referência para o objecto history que contém uma
lista dos URL visitados. O método go, back e forward deste objecto
permite redireccionar o browser.
h = window.history;
if ( h.length )
{ // if there is a history
h.back();
// equivalent to clicking back button
}
windows.setTimeOut
window.setTimeout("tick();", 100);
Função tick será chamada ao fim de 100 ms
JavaScript
JavaScript e Forms
Cada form HTML num documento cria um objecto form
Existe um array forms com as várias forms de um
documento.
Acesso a um form em javascript
Por indice
document.forms[0]
Por id/name
document.myform
//no html <form id=“myform” name=“myform”
O objecto form contém um array elements com os
elementos que a constituem
document.myform.elements[0]
JavaScript
Aceder aos elementos de um form
getElementByID e getElementsByName
métodos especificados no DOM-W3C para aceder aos
elementos HTML e que são implementados nos browser
mais recentes ( IE 6/7, Firefox, Safari)
var nomeinput=document.getElementByID(“idnome”)
<input type="text" name=”nome” id=“idnome" </p>
JavaScript
Eventos
O JavaScript implementa um modelo de eventos
Os eventos permitem escrever código para interagir com as
acções do utilizador
Para cada evento (click) existe um eventhandler (onclick) para
responder ao evento
Ligação de um elemento HTML a um evento:
<input type="button" value=“Enviar"
onClick=“validar(this.form)">
<input type="button" value="Pesquisa Google"
onclick="window.open('www.google.com');" >
Javascript\
Object
Event Handlers
Area
Button
Checkbox
Form
Frame
Link
Select
Submit
Text
Window
onClick, onMouseOut, onMOuseOver
onBlur, onClick, onFocus
onBlur, onClick, onFocus
onReset, onSubmit
onLoad, onUnload
onClick, onMouseOut, onMouseOver
onBlur, onChange, onFocus
onBlur, onClick, onFocus
onBlur, onChange, onFocus
onBlur, onError, onFocus,
onLoad, onUnload
Event Handlers
Attribute
onabort
onblur
onchange
onclick
ondblclick
onerror
onfocus
onkeydown
onkeypress
onkeyup
The event occurs when...
Loading of an image is interrupted
An element loses focus
The user changes the content of a field
Mouse clicks an object
Mouse double-clicks an object
An error occurs when loading a document or an image
An element gets focus
A keyboard key is pressed
A keyboard key is pressed or held down
A keyboard key is released
Event Handlers
onload
onmousedown
onmousemove
onmouseout
onmouseover
onmouseup
onreset
onresize
onselect
onsubmit
onunload
A page or an image is finished loading
A mouse button is pressed
The mouse is moved
The mouse is moved off an element
The mouse is moved over an element
A mouse button is released
The reset button is clicked
A window or frame is resized
Text is selected
The submit button is clicked
The user exits the page
Eventos
Mouse / Keyboard Attributes
Property
altKey
button
clientX
clientY
ctrlKey
metaKey
relatedTarget
screenX
screenY
shiftKey
Description
Returns whether or not the "ALT" key was pressed
when an event was triggered
Returns which mouse button was clicked when an
event was triggered
Returns the horizontal coordinate of the mouse
pointer when an event was triggered
Returns the vertical coordinate of the mouse pointer
when an event was triggered
Returns whether or not the "CTRL" key was pressed
when an event was triggered
Returns whether or not the "meta" key was pressed
when an event was triggered
Returns the element related to the element that
triggered the event
Returns the horizontal coordinate of the mouse
pointer when an event was triggered
Returns the vertical coordinate of the mouse pointer
when an event was triggered
Returns whether or not the "SHIFT" key was
pressed when an event was triggered
Demo evento
Coordenadas do rato
function writeClientCoords(event)
{
var x=event.clientX;
var y=event.clientY;
var objtextx=document.getElementById("textx");
var objtexty=document.getElementById("texty");
objtextx.value=x;
objtexty.value=y;
}
Acesso aos elementos de um Form
Input text, textarea e password
Nome: <input type="text" name=”nome”
id="nome" size="36"></p>
nomeobj=document.getElementById("nome")
strnome = nomeobj.value
propriedade value do objecto.
Acesso aos elementos de um Form
Select
<p><select size="2" name="cidades“
id=“cidades”>
<option value="1">Porto</option>
<option value="2">Lisboa</option>
</select></p>
O controlo select tem um array options[ ]
O método selectedIndex devolve o índice da opção seleccionada
A propriedade text devolve o texto da opção
/* Select sem atributo multiple */
var obj=document.getElementById("cidades");
index=obj.selectedIndex;
str=cidadesobj.options[index].text
Acesso aos elementos de um Form
Select (multiple)
Propriedade selected de option [ ]
/* Select com atributo multiple
*/
for (i=0;i<myselect.length;i++){
if (myselect.options[i].selected){
seleccionados[j]=myselect.options[i].text;
//guardar num vector ou ...
j++;
}
Acesso aos elementos de um Form
Radio Buttons / Checkboxes
Regime:
<input type="radio"
name="Regime" value="Diurno"
checked=”checked”>Diurno
<input type="radio" name="Regime"
value="Noturno">Noturno
getElementsByName devolve um array de objectos com o mesmo
nome
Propriedade checked devolve true se seleccionado
Propriedade value devolve o valor do elemento
var
radiosobj=document.getElementsByName(“Regime")
for (i=0;i<radioobj.length;i++)
if (radiosobj[i].checked)
str=radiosobj[i].value;
Detecção do Browser
Detecção do browser do cliente
Objecto navigator do JS
Propriedades
.appName – nome do browser
.appVersion – versão do browser
.platform - plataforma
var browser=navigator.appName
var b_version=navigator.appVersion
if (browser=“Microsoft Internet Explorer”)
...
browser -> “Microsoft Internet Explorer”
b_version- > 4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET …
Expressões Regulares em JavaScript
Usadas para validar a informação num Form HTML
Criar uma expressão regular:
• Com uma expressão literal:
var regexpr = /^\d{6}$/
com a seguinte sintaxe: /padrão/
• Com o construtor do objecto RegExp :
var regexpr = new RegExp("^\d{6}$")
Aplicar a expressão regular
Método test do objecto RegExp
var valido=regexp.test(num)
Expressões Regulares em JavaScript
Exemplo
function validate()
{
var regexp=/^\d{7}$/;
num=document.getElementById("numaluno").value;
if (regexp.test(num))
{ return true;}
else { alert("Número tem de ter 7 dígitos");
return false;
}
}
Caracteres especiais
Pattern
Symbol
Alternative
a digit (positive integer)
\d
[0123456789]
or [0-9]
a non-digit
\D
[^0-9]
a word character
\w
[a-zA-Z0-9_]
a non-word character
\W
[^\w]
a whitespace character
\s
[ \t\n\r\f]
a non-whitespace character
\S
[^\s]
any single character except newline
.
[^\n]
match one or more occurrences of x
x+
{1,}
Matches the preceding pattern x 0 or 1 times
x?
zero or more occurrences of the preceding pattern x
x*
{0,}
Matches at least n and at most m occurrences of the
preceding pattern x
{n,m}
Matches exactly n occurrences of the preceding pattern x
x{n}
Matches at least n occurrences of the preceding pattern x
x{n,}
Anchors your search at the beginning of the line
^pattern
Anchors at the end of the line
pattern$
exactly one character out of the set
[characters]
matches any single character, except
[^characters]
a range, i.e. all the characters from char1 to char2
inclusive
[char1-char2]
group or form subpattern & remember
(subsub-pattern)
or
|
escape special characters
\
Expressões Regulares em JavaScript
/^\D+$/ - só caracteres e pelo menos um
/^.+@.+\..{2,3}$/ - validação simples de
um email
^.+
no inicio um ou mais caracteres
@
carácter obrigatório
.+
. Seguido de um ou mais caracteres
\.
Carácter . obrigatório
.{2,3}$ no fim ocorrência de pelo menos 2
caracteres e no máximo 3
JavaScript e CSS
Alteração de estilos de um elemento usando
o objecto style
Sintaxe:
objectelement.style.propriedade=valor
var objdiv=document.getElementById("p1")
objdiv.style.color=“black"
objdiv.style.backGroundColor=“red”
obj.style.display="block";
JavaScript e CSS
Alteração do conteúdo de um elemento HTML
.innerHTML
function change_div_over(iddiv)
{
var myobj=document.getElementById(iddiv)
myobj.style.color="blue";
myobj.style.backgroundColor = "#00DD33";
myobj.innerHTML="Departamento de Engenharia
Informática";
}
O futuro
Web Hypertext Application Technology Working Group
http://www.whatwg.org/
HTML 5.0
Web Forms 2.0
http://www.whatwg.org/specs/web-apps/current-work/
http://www.whatwg.org/specs/web-forms/current-work/#extend-formcontrols
Novos controlos nos formulários
Validações e restrições declarativas nos controlos - min,
max , ...
Gráficos vectoriais (canvas) – linhas, arcos, rectângulos, ..
Links avançados e divertidos
http://simonbaird.com/coolclock/
http://rainbow.arch.scriptmania.com/scripts/mouse_cl
ock4.html
http://www.geekpedia.com/Samples/RTB/Editor.html
http://dhtml-menu.com/dhtml-samples/menu375.html
http://henrikfalck.com/sudoku/
Download

JavaScript - Departamento de Engenharia Informática