123
Java Script segunda-feira, 17 de agosto de 2009

Java Script

Embed Size (px)

DESCRIPTION

Palestra sobre Java Script apresentada na Bluesoft em 2009

Citation preview

Page 1: Java Script

Java Script

segunda-feira, 17 de agosto de 2009

Page 2: Java Script

EstruturaComportamentoApresentaçãoConteúdo

JavaScript

CSS

HTML

segunda-feira, 17 de agosto de 2009

Page 3: Java Script

• Rich and powerful web applications (Gmail)

• Server-side code such as ASP using for example Rhino.

• Rich media apps (Flash, Flex) using ActionScript (based on js).

• Scripts that automate tasks on your Windows

• Write extensions/plugins for apps like Firefox, Dreamweaver

• Web applications that store information in an off-line database on the user's desktop, using Google Gears

• Create Yahoo! Widgets, Mac Dashboard widgets, or Adobe Air applications that run on your desktop

Aplicação

segunda-feira, 17 de agosto de 2009

Page 4: Java Script

Programação Orientada a Objetos

• Objetos, métodos, atributos

• Classes

• Encapsulamento

• Agregação / Composição

• Herança

• Polimorfismo

segunda-feira, 17 de agosto de 2009

Page 5: Java Script

Firebug Console

segunda-feira, 17 de agosto de 2009

Page 6: Java Script

Tipos Primitivos

• Number

• String

• Boolean

• Undefined

• Null

segunda-feira, 17 de agosto de 2009

Page 7: Java Script

O Operador Typeof

>>> n = 1234;

>>> typeof n;

"number"

segunda-feira, 17 de agosto de 2009

Page 8: Java Script

O Número Infinity

É um número grande demais para o JavaScript gerenciar, ou seja um número maior que 1.7976931348623157e+308

segunda-feira, 17 de agosto de 2009

Page 9: Java Script

Arrays

• >>> var a = [1, 2, 3];

• >>> delete a[1];

• true

• >>> a

• [1, undefined, 3]

segunda-feira, 17 de agosto de 2009

Page 10: Java Script

Arrays de Arrays

• >>> var a = [[1,2,3],[4,5,6]];

• >>> a[2] = ‘bla’;

• >>> a;

• [[1, 2, 3], [4, 5, 6],‘bla’]

segunda-feira, 17 de agosto de 2009

Page 11: Java Script

For in Loops

>> var a = ['a', 'b', 'c', 'x', 'y', 'z'];

>> var result = '\n';

>> for (var i in a) {

>> result += 'index: ' + i + ', value: ' + a[i] + '\n';

>> }

index: 0, value: a

index: 1, value: b

segunda-feira, 17 de agosto de 2009

Page 12: Java Script

Functions

public void sum(a1, a2, a3) { ... };

sum (1, 2);

os parâmetros não passados tem valor undefined

segunda-feira, 17 de agosto de 2009

Page 13: Java Script

Flexibilidade

>>> function args() { return arguments; }

>>> args();

[]

>>> args( 1, 2, 3, 4, true, 'ninja');

[1, 2, 3, 4, true, 'ninja']

segunda-feira, 17 de agosto de 2009

Page 14: Java Script

Funcões Pré Definidassegunda-feira, 17 de agosto de 2009

Page 15: Java Script

parseInt() e parseFloat()

segunda-feira, 17 de agosto de 2009

Page 16: Java Script

parseIntparseInt('123') = 123

parseInt('abc123') = NaN

parseInt('1abc23') = 1

parseInt('FF', 10) = NaN

parseInt('FF', 16) = 255

parseInt('0377', 10) = 377

parseInt('0377', 8) = 255

parseInt('377') = 377

parseInt('0377') = 255

parseInt('0x377') = 887

segunda-feira, 17 de agosto de 2009

Page 17: Java Script

parseFloatparseFloat('123') = 123

parseFloat('1.23') = 1.23

parseFloat('1.23abc.00') = 1.23

parseFloat('a.bc1.23') = NaN

parseFloat('a123.34') = NaN

parseFloat('12a3.34') = 12

parseFloat('123e-2') = 1.23

parseFloat('123e2') = 12300

parseInt('1e10') = 1

segunda-feira, 17 de agosto de 2009

Page 18: Java Script

isNaN() e isInfinity()segunda-feira, 17 de agosto de 2009

Page 19: Java Script

isNaNisNaN(NaN) = true

isNaN(123) = false

isNaN(1.23) = false

isNaN(parseInt('abc123')) = true

isNaN('1.23') = false

isNaN('a1.23') = true

segunda-feira, 17 de agosto de 2009

Page 20: Java Script

encodeURI() e decodeURI()

segunda-feira, 17 de agosto de 2009

Page 21: Java Script

encodeURIComponent() e decodeURIComponent()

segunda-feira, 17 de agosto de 2009

Page 22: Java Script

Enconding URIs

>>> var url = 'http://www.packtpub.com/scr ipt.php?q=this and that';

>>> encodeURI(url);

"http://www.packtpub.com/scr%20ipt.php?q=this%20and%20that"

>>> encodeURIComponent(url);

"http%3A%2F%2Fwww.packtpub.com%2Fscr%20ipt.php%3Fq%3Dthis%20and%20that"

segunda-feira, 17 de agosto de 2009

Page 23: Java Script

eval()segunda-feira, 17 de agosto de 2009

Page 24: Java Script

eval

>>> eval('var ii = 2;')

>>> ii

2

segunda-feira, 17 de agosto de 2009

Page 25: Java Script

Escopo de Variáveis

Local e Global

segunda-feira, 17 de agosto de 2009

Page 26: Java Script

Funções são dadosvar x = function(){return 999;}

>>> function f(){return 1;}

>>> typeof f

function

segunda-feira, 17 de agosto de 2009

Page 27: Java Script

Functions are Data>>> var sum = function(a, b) {return a + b;}

>>> var add = sum;

>>> delete sum;

>>> typeof sum;

"undefined"

>>> typeof add;

"function"

>>> add(1, 2);

3

segunda-feira, 17 de agosto de 2009

Page 28: Java Script

Callback Functions

Because a function is just like any other data assigned to a variable, it can be defined, deleted, copied, and why not also passed as an argument to other functions?

segunda-feira, 17 de agosto de 2009

Page 29: Java Script

Callback Functionsfunction invoke_and_add(a, b){

return a() + b();

}

function one() { return 1; }

function two() { return 2;}

>>> invoke_and_add(one, two);

3

>>> invoke_and_add(function(){return 1;}, function(){return 2;})

3

segunda-feira, 17 de agosto de 2009

Page 30: Java Script

Self-Invoking Functionssegunda-feira, 17 de agosto de 2009

Page 31: Java Script

Self-Invoking Functions(

function(){

alert('Bolha!');

}

)();

(

function(name){

alert(name + '!');

}

)('Bolha')

segunda-feira, 17 de agosto de 2009

Page 32: Java Script

Objetossegunda-feira, 17 de agosto de 2009

Page 33: Java Script

Objetos (key/value)var pessoa = {

nome: 'Andre',

profissao: 'Desenvolvedor'

};

segunda-feira, 17 de agosto de 2009

Page 34: Java Script

Objetos (key/value)var o = {

something: 1,

'yes or no': 'yes',

'!@#$%^&*': true

};

it’s a valid object!

segunda-feira, 17 de agosto de 2009

Page 35: Java Script

Objetos (key/value)var dog = {

name: 'Benji',

talk: function(){

alert('Woof, woof!');

}

};

>>> dog.talk();

segunda-feira, 17 de agosto de 2009

Page 36: Java Script

Propriedadesvar pessoa = {

nome: 'Mario',

idade: '30'

};

>>> pessoa.nome;

"Mario"

>>> pessoa['idade'];

"30"

>>> pessoa.cor_do_cabelo

undefined

segunda-feira, 17 de agosto de 2009

Page 37: Java Script

Objetos com Objetosvar livro = {

titulo 'A lagoa verde',

autor: {

nome: 'Joana',

sobre_nome: 'Silveira'

}

};

segunda-feira, 17 de agosto de 2009

Page 38: Java Script

Alterando Objetos>>> var pessoa = {};

>>> pessoa.nome;

undefined

>>> pessoa.nome = ‘Zé’;

>>> pessoa.nome;

‘Zé’;

>>> delete pessoa.nome;

>>> pessoa.nome;

undefined

segunda-feira, 17 de agosto de 2009

Page 39: Java Script

Thisvar pessoa = {

nome: 'Wende',

dizerNome: function() {

return this.nome;

}

}

>>> pessoa.dizerNome();

‘Wende’

segunda-feira, 17 de agosto de 2009

Page 40: Java Script

Construtoresfunction pessoa() {

this.nome = 'Beatriz';

}

>>> var p = new Pessoa();

>>> p.nome;

‘Beatriz’

segunda-feira, 17 de agosto de 2009

Page 41: Java Script

O Objeto Global>>> var x = 10;

>>> x;

10

>>> window[‘x’];

10

>>> window.x

10

segunda-feira, 17 de agosto de 2009

Page 42: Java Script

Cuidado!>>> function Hero(name) {this.name = name;}

>>> var h = Hero('Leonardo');

>>> typeof h

"undefined"

>>> typeof h.name

h has no properties

>>> window.name + name

LeonardoLeonardo

var h = new Hero('Leonardo')

segunda-feira, 17 de agosto de 2009

Page 43: Java Script

Global Functions

>>> window.parseInt('101 dalmatians')

101

segunda-feira, 17 de agosto de 2009

Page 44: Java Script

Constructor Reference

>>> var h3 = new h2.constructor('Mané');

>>> typeof o.constructor;

‘function’

segunda-feira, 17 de agosto de 2009

Page 45: Java Script

O Operador instanceof>>> function Hero(){}

>>> var h = new Hero();

>>> var o = {};

>>> h instanceof Hero;

true

>>> h instanceof Object;

false

segunda-feira, 17 de agosto de 2009

Page 46: Java Script

Built-in Objects

• Data wrapper Objects

• Object, Function, Array, Boolean, Number and String.

• Utility Objects

• Math, Date, RegExp

• Error Objects

segunda-feira, 17 de agosto de 2009

Page 47: Java Script

Object>>> var o = {};

>>> var o = new Object();

• o.constructor - the construtor

• o.toString - A string that represent it.

• o.valueOf - A single value that represents it.

segunda-feira, 17 de agosto de 2009

Page 48: Java Script

Arraysegunda-feira, 17 de agosto de 2009

Page 49: Java Script

Array>>> var a = new Array(1,2,3,'four');

>>> a;

[1, 2, 3, "four"]

>>> var a2 = new Array(5);

>>> a2;

[undefined, undefined, undefined, undefined, undefined]

>>> a.toString();

"1,2,3,four"

>>> a.valueOf()

[1, 2, 3, "four"]

>>> a.constructor

Array()

segunda-feira, 17 de agosto de 2009

Page 50: Java Script

Métodos e Atributos de um Array

• construtor

• length

• toString()

• valueOf()

• sort()

• join()

• slice()

• concat()

• pop()

• push()

• reverse()

• shift()

• splice()

• unshift()

segunda-feira, 17 de agosto de 2009

Page 51: Java Script

Array Length

Alterando o atributo length de um array para menor os elementos do final são removidos:

>>> a

[1, 2, 3, 4, 5, 6, 7]

>>> a.length = 2;

>>> a

[1, 2]

segunda-feira, 17 de agosto de 2009

Page 52: Java Script

métodos push e pop• >>> var a = [1,2,3];

• >>> a.push('new')

• 4

• >>> a

• [1,2,3, "new"]

• >>> a.pop()

• "new"

• >>> a

• [1,2,3]

segunda-feira, 17 de agosto de 2009

Page 53: Java Script

sort• >>> a

• [3, 5, 1, 7, "test"]

• >>> a.sort;

• [1, 3, 5, 7, "test"]

segunda-feira, 17 de agosto de 2009

Page 54: Java Script

join>>> a

[1, 2, 3]

>>> a.join(' bla ');

"1 bla 2 bla 3 bla"

segunda-feira, 17 de agosto de 2009

Page 55: Java Script

slice>>> matriz

[‘a’,’b’,’c’,’d’,’e’]

>>> matriz.slice(0,1);

a

>> matriz.slice(1,3);

‘b’,’c’

O método slice não modifica o array original (matriz)!

>>> matriz

[‘a’,’b’,’c’,’d’,’e’]

segunda-feira, 17 de agosto de 2009

Page 56: Java Script

splice>>> m1

[‘a’,’b’,’c’,’d’,’e’]

>>> m2 = m1.splice(1, 3)

[‘b’,’c’,’d’]

>>> m1

[‘a’,’e’]

segunda-feira, 17 de agosto de 2009

Page 57: Java Script

Functionsegunda-feira, 17 de agosto de 2009

Page 58: Java Script

Function• >>> function sum(a, b) {return a + b;};

• >>> sum(1, 2)

• 3

• >>> var sum = function(a, b) {return a + b;};

• >>> sum(1, 2)

• 3

• >>> var sum = new Function('a', 'b', 'return a + b;');

• >>> sum(1, 2)

• 3

eval

segunda-feira, 17 de agosto de 2009

Page 59: Java Script

Atributos e Propriedades de um Function

• constructor - construtor

• length - número de parametros

• caller - objecto que chamou a função

• toString - retorna o código fonte da função

• call

• apply

• prototype

segunda-feira, 17 de agosto de 2009

Page 60: Java Script

Callvar some_obj = {

name: 'Ninja',

say: function(who){ return 'Haya ' + who + ', I am a ' + this.name; }

}

>>> some_obj.say('Dude');

"Haya Dude, I am a Ninja"

>>> my_obj = {name: 'Scripting guru'};

>>> some_obj.say.call(my_obj, 'Dude');

"Haya Dude, I am a Scripting guru"

segunda-feira, 17 de agosto de 2009

Page 61: Java Script

Call

objeto1.metodo.call(objeto2, p1, p2)

se você não passar um objeto como primeiro parâmetro ou passar null, o objeto global (window) será assumido.

segunda-feira, 17 de agosto de 2009

Page 62: Java Script

Applyobjeto1.metodo.apply(objeto2, [p1, p2])

objeto1.metodo.call(objeto2, p1, p2)

O método apply funciona da mesma forma que o método call com a diferença de que os parâmetros são passados em um Array.

segunda-feira, 17 de agosto de 2009

Page 63: Java Script

O atributos arguments

>>> function f() {return arguments;}

>>> f(1,2,3)

[1, 2, 3]

Parece um Array mas não é um Array!

Não contém métodos como slide e sort.

segunda-feira, 17 de agosto de 2009

Page 64: Java Script

O Atributo callee do objeto arguments

• >>> function f(){return arguments.callee;}

• >>> f()

• f()

• O Atributo callee é uma referência a função sendo chamada.

segunda-feira, 17 de agosto de 2009

Page 65: Java Script

Boolean>>> var b = new Boolean();

>>> typeof b

"object"

>>> typeof b.valueOf()

"boolean"

>>> b.valueOf()

false

>> Boolean("test")

true

>>> Boolean("")

false

>>> Boolean({})

true

segunda-feira, 17 de agosto de 2009

Page 66: Java Script

Numbersegunda-feira, 17 de agosto de 2009

Page 67: Java Script

Constantes do Number>>> Number.MAX_VALUE

1.7976931348623157e+308

>>> Number.MIN_VALUE

5e-324

>>> Number.POSITIVE_INFINITY

Infinity

>>> Number.NEGATIVE_INFINITY

-Infinity

>>> Number.NaN

NaN

segunda-feira, 17 de agosto de 2009

Page 68: Java Script

Métodos do Number• toFixed(fractionDigits)

• Define o número de decimais e arredonda

• toExponencial(fractionDigits)

• Retorna a notação exponencial do número

• 56789 = 5.68e+4

• toPrecision(precision)

• Retorna o número ou exponencial dependendo da precisão

• new Number(56789). toPrecision(2) = "5.7e+4"

• new Number(56789). toPrecision(5) = "56789"

segunda-feira, 17 de agosto de 2009

Page 69: Java Script

Strings• Podem ser tipos primitivos ou objetos

• >>> var primitive = 'Hello';

• >>> typeof primitive;

• "string"

• >>> var obj = new String('world');

• >>> typeof obj;

• "object"

segunda-feira, 17 de agosto de 2009

Page 70: Java Script

Atributos de Strings

• length

segunda-feira, 17 de agosto de 2009

Page 71: Java Script

Um Array de Caracteres

>>> var obj = new String('world');

>>> obj[0]

"w"

>>> obj[4]

"d"

>>> obj.length

5

segunda-feira, 17 de agosto de 2009

Page 72: Java Script

Métodos de String• toUpperCase

• toLowerCase

• chartAt(index)

• chartCodeAt(index)

• indexOf(word, startAp)

• lastIndexOf(word)

• slice / substring (from, to)

• difere apenas com parâmetros negativos

• split(string)

• concat(string1, string2, ...)

• replace(string, replacement)

• valueOf()

• fromCharCode(code1, code2, ...)

• localeCompare(‘string’)

• match(regexp)

• search(regexp)

segunda-feira, 17 de agosto de 2009

Page 73: Java Script

Mathsegunda-feira, 17 de agosto de 2009

Page 74: Java Script

Math Random

• Math.random()

• Retorna um númeo entre 0 e 1.

• 100 * Math.random()

• Retorna um número entre 0 e 100.

segunda-feira, 17 de agosto de 2009

Page 75: Java Script

Métodos de Math• round (n)

• ceil (n)

• flor (n)

• min (n1, n2)

• max (n1, n2)

• pow (n, e)

• sqrt (n)

segunda-feira, 17 de agosto de 2009

Page 76: Java Script

Expressões Regularessegunda-feira, 17 de agosto de 2009

Page 77: Java Script

Expressões Regulares

Provêem uma forma poderosa de buscar e manipular texto. Você pode pensar nelas como SQL porem ao invés de buscar e atualizar dados em um banco de dados, você pode buscar e atualizar dados em um pedaço de texto.

segunda-feira, 17 de agosto de 2009

Page 78: Java Script

Expressões Regulares

• Expressões regulares consistem em:

• Um padrão para encontrar um texto

• Um ou mais modificadores (também chamados de flags) que oferecem instruções de como o padrão deve ser aplicado.

segunda-feira, 17 de agosto de 2009

Page 79: Java Script

O Objeto RegExp var re = new RegExp("j.*t");

var re = /j.*t/;

Selecione qualquer string que começe com a letra j e termine com t e que tenha ou não caracteres entre elas.

segunda-feira, 17 de agosto de 2009

Page 80: Java Script

Propriedades do RegExp

• global (g): Se for false (o que é o padrão) a busca pára quando o primeiro resultado é encontrado. Defina true se quiser todas os resultados.

• ignoreCase (i): Case sensitive ou não (false por padrão).

• multiline (m): Busca em mais de uma linha (false por padrão).

• lastIndex: Posição para começar a busca (padrão 0).

• source: Contém a expressão regular (pattern).

segunda-feira, 17 de agosto de 2009

Page 81: Java Script

Propriedades do RegExp

>>> var re = new RegExp('j.*t', 'gmi');

>>> re.global;

true

>>> var re = /j.*t/ig;

>>> re.global

true

segunda-feira, 17 de agosto de 2009

Page 82: Java Script

Método Test

Não encontra porque a letra J está maiúscula:

>>> /j.*t/.test("Javascript")

false

Ignora case dos caracteres:

>>> /j.*t/i.test("Javascript")

true

segunda-feira, 17 de agosto de 2009

Page 83: Java Script

Método Exec

>>> /j.*t/i.exec("Javascript")[0]

"Javascript"

segunda-feira, 17 de agosto de 2009

Page 84: Java Script

Métodos do String que aceitam Regex

• match()

• retorna um array com resultados

• search()

• retorna a posição do primeiro resultado

• replace()

• substitui todas as ocorrências por outra string

• split()

segunda-feira, 17 de agosto de 2009

Page 85: Java Script

Match>>> var s = new String('HelloJavaScriptWorld');

>>> s.match(/a/);

["a"]

>>> s.match(/a/g);

["a", "a"]

>>> s.match(/j.*a/i);

["Java"]

segunda-feira, 17 de agosto de 2009

Page 86: Java Script

Search

>>> var s = new String('HelloJavaScriptWorld');

>>> s.search(/j.*a/i);

5

segunda-feira, 17 de agosto de 2009

Page 87: Java Script

Replace>>> var s = new String('HelloJavaScriptWorld');

>>> s.replace(/[A-Z]/g, '');

"elloavacriptorld"

>>> s.replace(/[A-Z]/, '');

"elloJavaScriptWorld"

segunda-feira, 17 de agosto de 2009

Page 88: Java Script

Replace• //The operator $&

>>> s.replace(/[A-Z]/g, "_$&");

"_Hello_Java_Script_World"

>>> s.replace(/([A-Z])/g, "_$1");

"_Hello_Java_Script_World"

>>> var email = "[email protected]";

email.replace(/(.*)@.*/, "$1");

"stoyan"

segunda-feira, 17 de agosto de 2009

Page 89: Java Script

Replace Callbacks

>>> var s = new String('HelloJavaScriptWorld');

>>> function replaceCallback(match){

return "_" + match.toLowerCase();

}

>>> s.replace(/[A-Z]/g, replaceCallback);

"_hello_java_script_world"

segunda-feira, 17 de agosto de 2009

Page 90: Java Script

Objetos de Errosegunda-feira, 17 de agosto de 2009

Page 91: Java Script

Construtores do Objeto Error

• EvalError

• RangeError

• ReferenceError

• SyntaxError

• TypeError

• URIError

segunda-feira, 17 de agosto de 2009

Page 92: Java Script

try catchtry {

iDontExist();

} catch (e){

alert(e.name + ': ' + e.message);

} finally {

alert('Finally!');

}

ReferenceError: iDontExist is not defined

segunda-feira, 17 de agosto de 2009

Page 93: Java Script

Lançando Errosthrow new Error('Division by zero!');

throw new RangeError('Division by zero!')

throw {

name: "MyError",

message: "OMG! Something terrible has happened"

}

segunda-feira, 17 de agosto de 2009

Page 94: Java Script

Prototypesegunda-feira, 17 de agosto de 2009

Page 95: Java Script

PrototypeTodo objeto Function possui um atributo prototype

>>> function foo(a, b){return a * b;}

>>> foo.length

2

>>> foo.constructor

Function()

>>> typeof foo.prototype

"object"

segunda-feira, 17 de agosto de 2009

Page 96: Java Script

Adicionado métodos e atributos ao prototype

Gadget.prototype.price = 100;

Gadget.prototype.rating = 3;

Gadget.prototype.getInfo = function() {

return 'Rating: ' + this.rating + ', price: ' + this.price;

};

Gadget.prototype = {

price: 100,

rating: 3,

getInfo: function() {return 'Rating: ' + this.rating + ', price: ' + this.price;}

};

segunda-feira, 17 de agosto de 2009

Page 97: Java Script

Prototype

Todos os métodos e atributos que você adicionar ao prototype serão disponibilizados assim que o objeto for instanciado através de seu construtor.

Ao instanciar um novo objeto, este recebe uma referência do prototype e não uma cópia.

Funciona de forma semelhante aos métodos e atributos estáticos na linguagem Java.

segunda-feira, 17 de agosto de 2009

Page 98: Java Script

Prioridade dos Atributos

function Gadget(name) {this.name = name;}

Gadget.prototype.name = 'foo';

>>> var toy = new Gadget('camera');

>>> toy.name;

"camera"

>>> delete toy.name;

true

>>> toy.name;

"foo"

segunda-feira, 17 de agosto de 2009

Page 99: Java Script

Herançasegunda-feira, 17 de agosto de 2009

Page 100: Java Script

Herançafunction Shape(){

this.name = 'shape';

this.toString = function() {return this.name;};

}

function TwoDShape(){ this.name = '2D shape';}

function Triangle(side, height) {

this.name = 'Triangle';

this.side = side;

this.height = height;

this.getArea = function(){return this.side * this.height / 2;};

}

segunda-feira, 17 de agosto de 2009

Page 101: Java Script

Herança

TwoDShape.prototype = new Shape();

Triangle.prototype = new TwoDShape();

segunda-feira, 17 de agosto de 2009

Page 102: Java Script

Herança>>> var my = new Triangle(5, 10);

>>> my instanceof Shape

true

>>> my instanceof TwoDShape

true

>>> my instanceof Triangle

true

>>> my instanceof Array

segunda-feira, 17 de agosto de 2009

Page 103: Java Script

Herança>>> Shape.prototype.isPrototypeOf(my)

true

>>> TwoDShape.prototype.isPrototypeOf(my)

true

>>> Triangle.prototype.isPrototypeOf(my)

true

>>> String.prototype.isPrototypeOf(my)

false

segunda-feira, 17 de agosto de 2009

Page 104: Java Script

O Ambiente do Browsersegunda-feira, 17 de agosto de 2009

Page 105: Java Script

Window• window.navigator

• userAgent

• window.location

• href

• location

• replace()

• assing()

• reload()

• window.history

• forward()

• back()

• go(n)

• window.frames

• window.screen

• width / availWidth

• height availHeight

• window.open(...)

• window.close()

• window.moveTo()

• window.resizeTo()

• window.alert()

• window. confirm()

• window. prompt()

segunda-feira, 17 de agosto de 2009

Page 106: Java Script

setTimeout

• function funcao(){alert('Boo!');}

• var tempoEmMillisegundos = 2000;

• setTimeout(funcao, tempoEmMillisegundos);

segunda-feira, 17 de agosto de 2009

Page 107: Java Script

setInterval

• function funcao(){alert('Boo!');}

• var tempoEmMillisegundos = 2000;

• setInterval(funcao, tempoEmMillisegundos);

segunda-feira, 17 de agosto de 2009

Page 108: Java Script

DOM - Document Object Model

segunda-feira, 17 de agosto de 2009

Page 109: Java Script

<html> <head> <title>My page</title> </head> <body> <p class="opener">first paragraph</p> <p><em>second</em> paragraph</p> <p id="closer">final</p> <!-- and that's about it --> </body></html>

segunda-feira, 17 de agosto de 2009

Page 110: Java Script

Os Nós da Árvore>>> document.documentElement.nodeName

"HTML"

>>> document.documentElement.tagName

"HTML"

>>> document.documentElement.childNodes.length

2

>>> document.documentElement.childNodes[0]

<head>

>>> document.documentElement.childNodes[1]

<body>

segunda-feira, 17 de agosto de 2009

Page 111: Java Script

Nós>>> body.childNodes[1].attributes.length

1

>>> body.childNodes[1].attributes[0].nodeName

"class"

>>> body.childNodes[1].attributes[0].nodeValue

"opener"

>>> body.childNodes[1].attributes['class'].nodeValue

"opener"

>>> body.childNodes[1].getAttribute('class')

"opener"

segunda-feira, 17 de agosto de 2009

Page 112: Java Script

Nós>>> bd.childNodes[1].nodeName

"P"

>>> bg.childNodes[1].textContent

"first paragraph"

>>> bd.childNodes[1].innerHTML

"first paragraph"

>>> bd.childNodes[3].innerHTML

"<em>second</em> paragraph"

>>> bd.childNodes[3].textContent

"second paragraph"

segunda-feira, 17 de agosto de 2009

Page 113: Java Script

Atalhos DOMdocument.getElementsByTagName('p').length

document.getElementsByTagName('p').item(0)

document.getElementsByTagName('p')[0]

document.getElementById('closer')

document.getElementById('closer').nextSibling

document.getElementById('closer').previousSibling

document.body.firstChild

document.body.lastChild

segunda-feira, 17 de agosto de 2009

Page 114: Java Script

Criando Elementos

var myp = document.createElement('p');

myp.innerHTML = 'yet another';

document.body.appendChild(myp)

segunda-feira, 17 de agosto de 2009

Page 115: Java Script

Clones

var el = document.getElementsByTagName('p')[1];

document.body.appendChild(el.cloneNode(true))

Clona Elementos Filhos Também

segunda-feira, 17 de agosto de 2009

Page 116: Java Script

Insert Beforedocument.body.insertBefore(

document.createTextNode('boo!'),

document.body.firstChild

);

document.body.appendChild(document.createTextNode('boo!'));

segunda-feira, 17 de agosto de 2009

Page 117: Java Script

Apagar Elementos

var myp = document.getElementsByTagName('p')[1];

var removed = document.body.removeChild(myp);

segunda-feira, 17 de agosto de 2009

Page 118: Java Script

HTML DOM Objects

• document.images

• document.getElementsByTagName()

• document.applets

• document.links (a href)

• document.anchors (a name)

• document.forms

• document.

segunda-feira, 17 de agosto de 2009

Page 119: Java Script

Document>>> document.cookie;

"CNNid=Ga50a0c6f-14404-1198821758-6; SelectedEdition=www; s_sess=%...”

>>> document.title = ‘Meu título’;

‘Meu título’;

>>> document.referrer; //previously-visited page

"http://www.andrefaria.com/links/js"

>>> document.domain;

www.andrefaria.com

segunda-feira, 17 de agosto de 2009

Page 120: Java Script

Eventos

document.body.addEventListener('click', function(){alert('body')}, false);

document.addEventListener('click', function(){alert('doc')}, false);

window.addEventListener('click', function(){alert('win')}, false);

>>> var para = document.getElementById('closer');

>>> para.addEventListener('click', paraHandler, false);

>>> para.removeEventListener('click', paraHandler, false);

segunda-feira, 17 de agosto de 2009

Page 121: Java Script

Eventos

• Mouse (click, double click, up, down, etc...)

• Keyboard (key down, key up, key press)

• Window (load, abort, resize)

• Form (focus, change, reset, submit)

segunda-feira, 17 de agosto de 2009

Page 122: Java Script

CC Images• http://www.flickr.com/photos/monstershaq2000/3008436618/

• http://www.flickr.com/photos/jantik/254695220/

• http://www.flickr.com/photos/curiousexpeditions/1568278214/

• http://www.flickr.com/photos/slambo_42/1393841369/

• http://www.flickr.com/photos/zenera/462727735/

• http://www.flickr.com/photos/artysmokes/3154354974/

• http://www.flickr.com/photos/dragonflycustomcakes/3650746207/

• http://www.flickr.com/photos/milon15/2382845410/

• http://www.flickr.com/photos/roll_initiative/3278642272/

• http://www.flickr.com/photos/stuartpilbrow/2938100285/

• http://farm3.static.flickr.com/2300/2421129047_22e2176008.jpg

• http://www.flickr.com/photos/cocreatr/2347460526/

• http://www.flickr.com/photos/didier/318620915/

• http://www.flickr.com/photos/jaredchapman/482538719/

• http://www.flickr.com/photos/ericbegin/2462706533/

segunda-feira, 17 de agosto de 2009

Page 123: Java Script

Obrigado!segunda-feira, 17 de agosto de 2009