Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Unidade 4 – Concepção de web sites. Subunidade 3 - Client-side scripting -Geração de scripts client-side - Introdução ao Javascript o Introdução o Noções elementares sobre programação por objectos o Scripts e HTML o Prevenção com a compatibilidade com os browsers – mensagens de erro o Variáveis e tipos de dados o Operações com dados o Estruturas de controlo o Tratamento de excepções o Arrays o Funções o Programação Orientada a Objectos em Javascript o O HTML Document Object Model (DOM) e a Javascript o Alguns Scripts Escola Secundária S. João do Estoril o Bibliografia Paula Cardoso Alcobia -1- Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Introdução ♦ O que são linguagens de scripting As linguagens de scripting são linguagens de programação interpretadas, cujo o código fonte é interpretado directamente pelo programa onde está a ser executado e no momento da sua execução. Estas linguagens utilizam geralmente um menor leque de funções e têm como objectivo acrescentar funcionalidades ao programa onde estão embutidas. Por sua vez, um script é um programa constituído por um conjunto de instruções, escritas numa determinada linguagem e dirigidas para uma aplicação que as execute e interpreta. Como os scripts são fáceis de editar, pois podem ser editados com qualquer editor de texto, eles são vulneráveis. É possível fazer um script para que execute actividades maliciosas ao ser interpretado - são designados por de scripts maliciosos. Esses scripts podem ser programados para editar códigos de outros scripts. Os scripts maliciosos executam actividades de vírus, por exemplo: criar e excluir ficheiros, modificar chaves do registo do windows e fazer download de ficheiros e executá-los. ♦ Client Client-- side e server server-- side scripting Escola Secundária S. João do Estoril Quando se utiliza a designação Client-side scripting, fala-se de códigos de programas que são processados do lado do cliente. Em aplicações ligadas à internet, estes são processados pelo browser que estiver instalado no computador-cliente, quando receber a página web que solicitou. (ver figura) Paula Cardoso Alcobia -2- Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Quando se utiliza a designação server-side scripting, fala-se de códigos de programas que são processados do lado do servidor. Neste caso, o servidor encarrega-se de interpretar o código embebido na página web e envia uma página já processada como resposta ao cliente. Os servidores actuais alojam diferentes tipos de páginas web: dinâmicas, estáticas e activas. As páginas dinâmicas são páginas com capacidade de actualizarem automaticamente os seus conteúdos e de apresentarem interactividade entre cliente e o servidor. Este tipo de página contém códigos que são processados do lado do servidor antes de serem enviadas ao cliente. No processamento destas páginas podem ser executadas: -programas que entendem o servidor, como os CGI (Common Gateway Interface), as API ( Application Program Interface) e os Java Servlets; - código embebido no html como o ASP( Active Server Pages), o JSP(Java Server pages) e o PHP(Personal Home Pages) As páginas activas são páginas que apresentam algum dinamismo desenvolvido do lado do cliente. Estas páginas contêm código que são interpretados pelo browser do cliente, depois de enviadas pelo servidor. No processamento destas páginas podem ser executadas: -código embebido no HTML, como o Javascript, que são interpretadas pelo o browser ao mesmo tempo que a página é descarregada; -código pré-compilados de um objecto do documento, que são depois executados por plug-ins. As páginas estáticas são constituídas apenas por código HTML e não apresentam qualquer actividade ou dinamismo. Escola Secundária S. João do Estoril ♦ A linguagem JavaScript O JavaScript é uma linguagem de programação simples criada para dar mais interactividade e maior funcionalidade às páginas da Web. Foi inicialmente desenvolvida pela Netscape e era designada por LiveScript. Mais tarde resolveram trocar o nome para mostrar a sua proximidade com o JAVA, embora sejam linguagens totalmente distintas. A linguagem JavaScript acabou por dar origem à especificação técnica ECMAScript (ECMA-Europe Computer Manufactures Association), que é um padrão oficial reconhecido pela indústria. Apesar de esta linguagem ser mais conhecida pelo nome de JavaScript, e de a versão produzida pela Microsoft ter recebido o nome de JScript, a verdade é que se tratam de implementações que sendo fiéis à norma ECMAScript lhe acrescentaram novas funcionalidades úteis, mas respeitando sempre as especificações oficiais. Paula Cardoso Alcobia -3- Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano O código escrito em JavaScript destina-se a ser executado pelo web browser quando a página HTML que o contém é visualizada. Ele é uma parte integrante da página e permite que o browser seja capaz de tomar decisões quanto ao modo como o conteúdo é apresentado ao utilizador e como pode ser manipulado. ♦ Compatibilidade com os browsers O inconveniente de se utilizar uma linguagem de scripting é a possibilidade de existir alguma incompatibilidade de interpretação desta por alguns browsers. O Microsoft Internet Explorer, por exemplo é capaz de interpretar o Visual Basic Script, porém o Netscape não o faz sem o auxílio de um plug-in. O Javascript é a linguagem indicada para se poder construir scripts devido à sua compatibilidade com a maioria dos browsers, nomeadamente o Netscape e o Microsoft Internet Explorer, que devem ser de versões iguais ou superiores à 3.0 e 4.0, respectivamente. ♦ O que posso fazer com o Javascript? A linguagem javascript possibilita realizar muitas tarefas importantes para o enriquecimento de uma página web. Da validação de dados à visualização de mensagens e efeitos dinâmicos, tudo é possível. As suas potencialidades são: - O JavaScript dá aos criadores em HTML uma ferramenta de programação Habitualmente, os autores de páginas HTML não são programadores, mas o JavaScript é uma linguagem de script com uma sintaxe muito simples, pelo que possibilita a criação de pequenos “snippets” nas páginas HTML. -O O JavaScript permite inserir texto dinâmico nas páginas HTML Uma instrução em JavaScript tal como: document.write(“<h1>” + name + “</h1>”) permite criar uma variável de texto numa página HTML. - O JavaScript reage a eventos Com JavaScript pode-se definir o que deve ser executado, quando algo acontece, como por exemplo, quando numa página é concluído um download, ou quando o utilizador clica sobre um elemento HTML. Escola Secundária S. João do Estoril -O O JavaScript pode ler e escrever elementos HTML O JavaScript pode ler e alterar o conteúdo de elementos HTML. -O O JavaScript pode ser usado para validar dados O JavaScript pode ser usado para validar dados introduzidos em formulários antes de serem submetidos ao servidor, aliviando - o na sua carga de processamento. Paula Cardoso Alcobia -4- Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ JavaScript é a mesma coisa que Java? Não, o Java e o JavaScript são linguagens completamente diferentes! O Java (desenvolvido pela Sun Microsystems) é uma linguagem de programação muito complexa e poderosa, baseada no paradigma da orientação a objectos, tal como o C++. Noções elementares sobre programação por objectos ♦ O conceito Na programação por objectos temos linguagens orientadas a objectos como o Java e linguagens baseadas em objectos como o JavaScript. Um software orientado a objectos é uma forma de criar software que usa classes e objectos para modelar as características dos objectos reais ou abstractos, utilizando mecanismos de encapsulamento, herança e polimorfismo. Um software baseado em objectos não utiliza os mecanismos de criação de classes e de herança utilizados no software orientado a objectos. ♦ TTerminologia erminologia Numa linguagem de programação orientada a objectos os dois conceitos-chave da programação são as classes e os objectos. Classe Escola Secundária S. João do Estoril Cada objecto é definido pelas suas características (atributos) e pelas suas acções (comportamento). Assim, um veículo motorizado pode ser caracterizado pelo tipo de motor – diesel ou gasolina – pela potência do motor e pela sua cor enquanto que podemos definir acções como acelerar, travar e parar. Consequentemente, podemos referir ao estado do objecto – veículo automóvel – como estando a acelerar ou parado ou a desacelerar. A produção de cada objecto é realizada a partir de uma matriz à semelhança da reprodução de uma publicação, seja livro ou jornal, em que os diversos exemplares são reproduzidos a partir do fotolito nas máquinas da tipografia. Essa matriz, no modelo orientado a objectos, é a classe. Sendo uma matriz, a classe é constituída pelas características do objecto a que passamos a designar por atributos ou variáveis de objecto – variáveis ou dados no modelo modular – e pelas acções que são designadas por métodos – funções e procedimentos no modelo modular –. Com a classe automóvel (matriz) são produzidos dois automóveis (objectos) com as características definidas na matriz: • atributos: quatro rodas, motor e velocidade; • acções: travar e acelerar. Paula Cardoso Alcobia -5- Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Objecto Os objectos são criados à imagem e semelhança das classes. São concretizações das classes. São – em linguagem no modelo orientado a objectos – instâncias das classes. Os métodos (funções e procedimentos) são sempre aplicados a um objecto. Por exemplo, sendo dias um objecto de inteiros. No modelo Orientado a Objectos, poderse-ía escrever a seguinte instrução: dias.setInteger(25); supondo-se que a classe inteiros teria um método setInteger para alterar o valor do objecto dias. Usando o exemplo dos automóveis podíamos ter: táxi.acelerar() para aumentar a velocidade do táxi. No conceito do modelo orientado a objectos quando se aplicam métodos aos objectos, diz-se que estamos a enviar mensagens aos objectos. Por exemplo, para definir o ano do objecto umaData, definido por uma classe Data, que tem um método setYear, dizse que foi enviado ao objecto umaData a mensagem para que este use o método setYear para definir o seu atributo ano com o valor do argumento da mensagem. Mensagens As mensagens são invocações dos métodos, sendo estes a interface de comunicação entre os objectos. A figura exemplifica a comunicação entre dois objectos das classes professor e aluno e quadro identifica as classes, os objectos, os métodos e as mensagens presentes na comunicação. Realizar teste Professora Paula O javascript é uma linguagem baseada em objectos Aluna Cláudia Responder teste Escola Secundária S. João do Estoril sim Classe Instância da classe ou objecto Método Mensagem Paula Cardoso Alcobia Professora Professora Paula Realizar Teste O javascript é uma linguagem baseada em objectos Aluna Aluna Cláudia Responder Teste Sim -6- Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Mecanismos em que se fundamenta Encapsulamento e abstracção A necessidade de construir módulos de software de pequena dimensão, com uma identidade e individualidade próprias é uma estratégia fundamental para levar a bom porto o navio das aplicações complexas e de grande dimensão. Estes módulos de software permitem uma mais fácil detecção e correcção de erros e criar-lhes uma robustez confirmada por testes que darão ao programador a segurança da sua utilização. Acrescenta-se, ainda, a vantagem de promover a reutilização de software. Um módulo de software testado garante a qualidade das aplicações desenvolvidas, assim, não há necessidade de reinventar o que está feito e provado. A esta estratégia dá-se o nome de encapsulamento devido ao isolamento que promove da peça de software. Nas linguagens procedimentais modulares como o C e o Pascal tal é realizado, respectivamente, com as bibliotecas e as unidades (unit). No modelo orientado a objectos usam-se as classes. Numa outra vertente do encapsulamento aparece o isolamento da estrutura interna do módulo sendo criado um interface – esse, público e conhecido pelo programadorque transforma o módulo numa caixa negra produtora de resultados sujeita a regras de utilização conhecidas definidas pelo interface. A isto designa-se por abstracção. Voltando às linguagens referidas a zona interface da unit apresenta a parte pública e interface com o programador isolando a estrutura e implementação dessa unit. Herança Escola Secundária S. João do Estoril As classes podem ser relacionadas entre si por sistemas de herança. Este conceito leva a uma descendência que vai na direcção do refinamento e consequente particularização. Parte-se da generalização do modelo no sentido do particular. Usando a classe automóvel posso construir outras viaturas, um veículo pesado com seis rodas ou um desportivo. Paula Cardoso Alcobia -7- Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano As classes pesado e desportivo são construídas a partir da classe automóvel herdando as suas características. O pesado passa a ter seis rodas (4+2) e além de travar e acelerar também atrela e desatrela os atrelados. Neste caso, seria pertinente construir uma classe atrelado que não seria da família automóvel, pois as suas características são diferentes. Polimorfismo Designa-se polimorfismo à variação de formatos que um objecto pode apresentar. Neste caso vamos debruçar nos métodos, pois nas linguagens em análise esta característica restringe-se aos métodos. Enquanto que na programação procedimental não é possível criar procedimentos ou funções diversas com o mesmo nome, tal é possível no modelo orientado a objectos. Escola Secundária S. João do Estoril As chamadas linguagens no modelo orientado a objectos puras, esta característica é encontrada, também, nas variáveis. Como exemplo, poderia criar novos métodos travar e acelerar na classe desportivo salientando que o carro desportivo acelera e trava como qualquer automóvel, mas de modo diferente. Apesar de os métodos terem o mesmo nome e objectivo, eles funcionam, internamente, de modo diferente dos da classe automóvel. Paula Cardoso Alcobia -8- Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Scripts e HTML ♦ Aspectos relacionados com a inserção de scripts Para inserir código JavaScript dentro do HTML é necessário identificar o início e o fim do código. Para tal, utiliza-se a tag <script>para indicar o início e </script> para indicar o fim do script. Utiliza-se o atributo type para definir a linguagem ou o tipo de texto que vai ser usada na escrita do script: <script type="text/javascript"> <script language=”JavaScript”> A tag <noscript> é utilizada para mostrar um conteúdo alternativo quando o browser não reconhece a tag <script> ou para as situações em que o utilizador desactivou a execução dos scripts no computador. Para indicar o fim deste código, coloca-se a tag </noscript>. ♦ Terminar as instruções com ponto ponto-- e -vígula (;)? O JavaScript não nos obriga a terminar as instruções com ponto e vírgula, visto que é opcional. O Javascript reconhece que uma instrução chegou ao fim quando se muda de linha, não necessitando portanto do ponto e vírgula. No entanto isso torna mais difícil a localização dos erros e pode também contribuir para a criação de mais erros. É conveniente que se terminem todas as instruções com o carácter ; . ♦ Os comandos JavaScript são sensíveis ao tipo de letra (maiúsculas e minúsculas) O JavaSscript é sensível à troca das letras maiúsculas por minúsculas e vice-versa (é Case sensitive). Esta regra aplica-se a nomes de instruções, nomes de variáveis, nomes de funções, nomes de objectos e a tudo o que possa existir num script. Escola Secundária S. João do Estoril ♦ Comentários e blocos de código Os comentários permitem-nos descrever o código JavaScript que produzimos tornandoo mais legível e mais fácil de manter. Em JavaScript podemos usar comentários com uma única linha e comentários com várias linhas. Os comentários com uma única linha começam com os caracteres //. Isto dá ao interpretador de JavaScript a indicação de que o resto da linha é um comentário, pelo que este ignora o resto da linha, continuando a interpretar o código na linha seguinte. Paula Cardoso Alcobia -9- Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Um comentário que se estende por várias linhas começa com a sequência de caracteres /* e continua até ser econtrada a sequência de caracteres */, que marcam o fim do comentário. Ao encontrar a sequência /* o interpretador de JavaScript procura imediatamente a sequência de fecho */, continuando aí a interpretação do código e ignorando o que está no meio. Aqui ficam alguns exemplos de comentários em JavaScript. // Isto é um comentário com uma única linha /* Este comentário ocupa uma só linha mas podia ocupar mais */ /* Este comentário ocupa várias linhas. Tudo o que for escrito aqui dentro será ignorado pelo interpretador de JavaScript */ Blocos de código - Um bloco de código é uma sequência de instruções compostas por várias linhas agrupadas. Para agrupar é necessário colocar a sequência de instruções entre chavetas ({ }.) Exemplo: { var i = 0; var j = i * 3;} ♦ Colocação dos Scripts Os scripts em Javascript podem ser colocados num documento HTML na secção <head>, na secção <body> ou em ambas as secções. Os scripts também pdem ser colocados externamente a um documento HTML. Script Escola Secundária S. João do Estoril internos São escritos no mesmo ficheiro Na secção head São executados despoletados Na secção boby São executados quando a página é carregada externos quando são São escritos noutro ficheiro Quando o script é usado em várias páginas Paula Cardoso Alcobia - 10 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Scripts na secção head - São executados apenas quando são chamados para serem executados quando um evento é despelotado - Os scripts são carregados antes de serem usados Sintaxe: <head> <script type="text/javascript"> sequência de instruções </script> </head> Exemplo: <html> <head> <script type="text/javascript"> <!-- alert("Isto é uma caixa de diálogo") // --> </script> <title></title> </head> <body> </body> </html> Scripts na secção body - São executados quando a página é carregada - Quando um script é colocado na secção body, este cria o conteúdo da página Escola Secundária S. João do Estoril Sintaxe: <head> </head> <body> <script type="text/javascript"> sequência de instruções </script> </body> Paula Cardoso Alcobia - 11 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exemplo: <html> <head> <title></title> </head> <body> <script type="text/javascript"> <!-- document.write("Esta mensagem refere-se ao Javascript") // --> </script> </body> </html> Scripts em ambas as secções head e body -É possível escrever um número ilimitado de scripts no documento -Podem ser colocados em ambas as secções head e body Sintaxe: <html> <head> <script type="text/javascript"> sequência de instruções </script> </head> <body> Escola Secundária S. João do Estoril <script language=”JavaScript”> sequência de instruções </script> </body> Paula Cardoso Alcobia - 12 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Scripts Externos -Escreve-se o script num ficheiro externo, que se grava com a extensão “.js” document.write(“This script is external”) -Invoca-se o script, usando o atributo “src”, nas páginas HTML: Sintaxe: <html> <head> </head> <body> <script type="text/javascript" src=”xxx.js”> </script> </body> Nota: Os scripts externos não devem conter a tag <script> e deve ser colocado exactamente onde se escreveria o script Exemplo: <html> <head> <title></title> </head> <body> <p> O script encontra-se num ficheiro externo designado por "ext.js". </p> Escola Secundária S. João do Estoril <p> <script type="text/javascript" src="ext.js"> </script> </p> </body> </html> Paula Cardoso Alcobia - 13 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Prevenção com a compatibilidade com os browser-mensagem de erro As mensagens de erro podem surgir quando um script está a ser carregado ou executado e podem ser devidas a erros de sintaxe, uso incorrecto dos comandos ou objectos do Javascript e por incompatibilidade com os browsers. A solução na maioria dos casos passa pela correcção dos erros. Os scripts são incompatíveis com alguns browsers, e nestes casos mostram o código script como se fosse o conteúdo de uma página. Para prevenir esta situação, deve usar-se a tag de comentário do HTML ou a tag noscript. Sintaxe: <script type="text/javascript" > <!— sequência de instruções //—> </script> As 2 barras (//) no final do comentário são os símbolos de comentário. Previnem o compilador (interpretador) Javascript de proceder à compilação da linha. Não se pode colocar as 2 barras no início do comentário (e.g. //<!—), porque os browser mais antigos, mostram-nas. Exemplo: <html> <head><title></title></head> <body> <script type="text/javascript"> <!-document.write("<h1>Olá Mundo!</h1>") --> Escola Secundária S. João do Estoril </script> <p> Olá </p> </body> </html> Paula Cardoso Alcobia - 14 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Variáveis e tipos de Dados ♦ O que são as V ariáveis? Variáveis? As variáveis são objectos que servem para guardar informação. Elas permitem-nos dar nomes a cada um dos fragmentos de informação com que temos de lidar. Existem regras a respeitar na atribuição de um nome a uma variável: 1º - O nome das variáveis é case sensitive 2º - Deve começar com uma letra ou um underscore (_) 3º - O nome não deve ser nenhuma palavra reservada 4º- Os restantes caracteres que compoem o nome podem igualmente conter números, letras ou sinal de cifrão ($). Para além do atributo nome, uma variável é caracterizada pelo seu valor e pelo tipo de dados que a identifica. O valor é o conteúdo armazenado no espaço de memória associado à variável. O tipo de dados indica o conjunto de dados que uma variável pode conter. O valor de uma variável pode ser alterado durante o script. Pode-se referir à variável pelo seu nome, para saber o seu valor, para usar o seu valor, para o alterar, para o visualizar, etc. ♦ T ipos de dados Escola Secundária S. João do Estoril Tipo De scr i çã o numérico representa os números inteiros (decimal, octal ou hexadecimal) ou reais de vírgula flutuante. texto Representa uma cadeia de caracteres(string) entre aspas ou plicas. booleano Representa um dos seguintes valores lógicos: True ou False null Representa um valor nulo, ou seja, a inexistência de um valor associado a uma variável. Uma variável inicializada com null não assume qualquer valor, ou seja, está vazia. undefined Representa o conteúdo de variáveis não inicializadas ou indefinidas, ou seja, armazenam o valor especial undefined. objecto Representa um objecto que é uma colecção de valores (propriedades) e métodos (funções). As propriedades podem assumir valores de qualquer tipo. array Representa um tipo de objectos da linguagem JavaScript. Um array é uma colecção sequencial de valores ou elementos. Cada valor pode ser acedido, para leitura ou escrita, através de um número inteiro ou índice. Paula Cardoso Alcobia - 15 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Declaração de V ariáveis - V ariáveis locais e globais Variáveis Variáveis Ao acto de criar uma variável dá-se o nome de declaração. As variáveis que são declaradas fora de qualquer função são designadas por variáveis globais. Aqui o termo global significa que a variável em causa pode ser utilizada em qualquer parte do script; ela está permanentemente acessível. Quando uma variável é declarada dentro de uma função ela é uma variável local porque só pode ser utilizada dentro dessa função. Se tentarmos aceder a uma variável local fora da função em que ela foi declarada é criado um erro porque a variável só existe no universo da função em que foi declarada; ela não faz parte do mundo exterior a essa função e como tal não pode ser aí utilizada. Exemplos de declaração de variáveis: divisor = 3; cor=”amarelo”; pi = 3.14159; As variáveis declaradas nos exemplos acima são variáveis globais. Para declarar variáveis locias (variáveis cuja existência se limite a uma pequena secção do código) usamos a declaração var, assim: var divisor = 3; Se a declaração var for utilizada fora de qualquer função então, a variável é declarada na base da estrutura do código, e sendo assim a variável é global.Numa variável global não existe a necessidade de colocar a declaração var, pois esta é opcional. Escola Secundária S. João do Estoril Exemplo: <html> <head> <title></title> </head> <body> <script type=”text/JavaScript”> var a = 5, b = 8 var soma soma = a + b alert(“Resultado da soma: “ + soma) </script> </body> </html> Paula Cardoso Alcobia - 16 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Variáveis locais e globais globais-- resumidamente Variável LLocais ocais - São variáveis declaradas dentro de funções - Apenas podem ser acedidas dentro da função - Quando a função termina, a variável é destruída - Podem existir variáveis locais com o mesmo nome em diferentes funções, porque cada uma delas só é reconhecida dentro da função onde se encontra declarada Variável Globais - São variáveis declaradas fora de uma função - Todas as funções da página podem aceder a ela - Estas variáveis são criadas quando são declaradas e só deixam de existir quando a página é fechada ♦ Atribuição de V ariáveis Variáveis Para atribuir um valor a uma variável, este deve ser colocado do lado direito do sinal de igual, enquanto que o nome da variável se encontra do lado esquerdo. Exemplo: var cor=”azul” Uma variável é inicializada quando lhe é atribuído um valor. Neste exemplo acima a variável cor foi inicializada com o valor azul. Outras atribuições de variáveis: Escola Secundária S. João do Estoril var x=1, y , z=0 - declaração de três variáveis na mesma linha. Duas foram inicializadas, uma com o valor de 1 e outra com o valor de 0. A variável y foi inicializada com o valor undefined. var nome= “Paula Alcobia” - declara a variável nome e inicializa-a com o valor Paula Alcobia do tipo string. Paula Cardoso Alcobia - 17 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Constantes As constantes constantes, têm a mesma função que as variáveis, mas o valor de uma constante não pode ser alterado. Na declaração de uma constante utiliza-se a palavra reservada const. Exemplo: const maximo=10; Não se pode declarar uma constante dentro do corpo de uma função. Também não se pode declarar uma constante com o nome de uma variável existente. // Estas declarações estão incorrectas function f { const g=5; var g; } ♦ Literais As expressões literais representam valores fixos e não variáveis. Tipo Escola Secundária S. João do Estoril numérico Exe m p l o 54 Inteiro decimal 0xA 153 Inteiro hexadecimal( número que começa por 0x) 0671 Inteiro Octal (número que começa por 0) 5,41 - 2E8 3E- 10 Real ou vírgula flutuante Infinity Infinito positivo (x/0) - Infinity Infinito negativo (- x/0) Na N Indeterminação (0/0) (Not a Number) string "Isto é uma string" "50" "amarelo" booleano true false null null undefined undefined array ["aluno, "professor", funcionário"] Paula Cardoso Alcobia - 18 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Números inteiros Os números inteiros podem ser expressos na forma decimal (base 10), hexadecimal (base 16) ou octal (base 8). Um número decimal consiste numa sequência de dígitos que nunca deve começar por 0 (zero). Se escrevermos um número com um zero no início isso significa que se trata de um número escrito na forma octal. Por outro lado, se no início escrevermos os caracteres 0x (ou 0X) isso significa que o número está escrito na forma hexadecimal. Os números escritos na forma decimal podem conter os dígitos (0-9), a forma octal aceita apenas dígitos de (0-7) e a forma hexadecimal aceita os dígitos (0-9) mais as letras a-f e A-F. Números com vírgula flutuante Uma expressão literal com vírgula flutuante representa um número que não é inteiro mas que contém uma parte inteira e uma parte fraccionária. Os números 21.37e 0.0764 são exemplos disto. A representação que a máquina constrói para estes números baseia-se na notação científica. Por exemplo, o número -7645.4532 é igual a -7.64532 a multiplicar por 10 elevado a 3, e escreve-se como -7.6454532E3, em que E3 representa 10 elevado a 3. Um outro exemplo é o número 0.00045431, que é representado na forma 4.5431E-4, ou seja 4.5431 a multiplicar por 10 elevado a 4. Expressões de texto Escola Secundária S. João do Estoril Uma expressão de texto é composta zero ou mais caracteres colocados entre aspas ("), como por exemplo "esta é uma expressão de texto", ou entre plicas ('), como por exemplo 'esta é outra expressão de texto'. Para além dos caracteres normais, as expressões de texto podem conter os caracteres especiais apresentados na lista seguinte: Ca r á ct e r S i g ni fi ca d o \b backspace \f form feed \n new line \r carriage return \t ta b \\ backslash Cada um destes caracteres produz o mesmo resultado que se obtém carregando na tecla indicada na segunda coluna. Assim o carácter \b equivale a carregar na tecla backspace (apagar o carácter à esquerda). O carácter \n provoca uma mudança de linha tal como a tecla "enter". O carácter \ é usado como prefixo dos outros caracteres especiais, o que faz também dele um carácter especial. Por isso, para obtermos este carácter temos de temos escrevê-lo duas vezes (\\). Paula Cardoso Alcobia - 19 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Caracteres Unicode O uso de caracteres Unicode permite que os computadores processem caracteres de diversas línguas. As novas versões da linguagem Javascript suportam nativamente caracteres Unicode, enquanto que as versões anteriores à 1.3 não o faziam. O código Unicode permite codificar uma enorme quantidade de caracteres e é compatível com o código ASCII e ISO (International Standard ISO). Sequências de escape Unicode - podemos utilizar sequências de escape Unicode em literais de strings (conforme página 19). A sequência de escape consiste na utilização de seis caracteres ASCII: \u e mais 4 caracteres hexadecimais. Por exemplo: \u00A9 que representa o símbolo de copyright. Cada sequência de escape Unicode no Javascript é interpretado como um caracter. Lista de alguns caracteres de sequência de escape C ategoria V alor U nicode N om e F orm ato \u0009 Tab <TA B > \u000B V erticalTab <V T> \u000C Form Feed <FF> \u0020 S pace ( espaço) <S P > \u000A Line Feed <LF> \u000D C arriage R eturn <C R > \u000b B ackspace <B S > \u0009 H orizontalTab <H T> \u0022 D ouble Q uote ( aspas) " \u0027 S ingle Q uote( plicas) ' \u005C B ackslash ( barra) \ E spaços em branco V alores de fim de linha Escola Secundária S. João do Estoril V alores adicionais de S equencias de escape Para obter mais informações sobre Unicode, consulte o site Unicode Consortium Web site:http://www.unicode.org/. Paula Cardoso Alcobia - 20 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Operações com dados As operações com dados permitem criar expressões que são sequências de operadores (aritméticos e outros) e operandos(variáveis, literais e subexpressões), cujo resultado pode originar valores do tipo número, string, booleano, null e undefined. ♦ Operadores de atribuição de valor Um operador de atribuição é um operador que afecta o lado esquerdo do sinal de igual(=) com o valor resultante da expressão do seu lado direito. O perador E xem plo E quivalência = x=y x=y += x+=y x=x+y -= x-=y x=x-y *= x*=y x=x*y /= x/=y x=x/y %= x% =y x=x% y Os operadores mais conhecidos são as quatro operações aritméticas básicas (adição subtracção, multiplicação e divisão.) Para estes a linguagem JavaScript define as seguintes versões curtas. ♦ Operador String Uma string é uma sequência de caracteres (letras, números, pontuação, etc). Por exemplo: “Olá Mundo!”. Para concatenar duas ou mais strings, usa-se o operador “+”. Exemplo: txt1=”O meu nome é: “ txt2=”Paula Cardoso Alcobia” Escola Secundária S. João do Estoril txt3=txt1+” “+txt2 O resultado da variável txt3 seria: O meu nome é Paula Cardoso Alcobia Outro exemplo: a= 6 b=Dto c= a+b Quando um do operandos não é do tipo string (variável a)é feita a conversão automática desse operando para o tipo string. O resultado da variável c seria 6Dto Paula Cardoso Alcobia - 21 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Operadores de aritméticos Um operador aritmético recebe valores numéricos (tanto variáveis como expressões literais) e produz um valor numérico como resultado. Os operadores numéricos mais importantes são a adição (+), a subtracção (-), a multiplicação (*), a divisão (/) e o resto da divisão (%). O funcionamento destes operadores em JavaScript respeita todas as regras da álgebra. O perador D escrição E xem plo R esultado + adição x=2 x+2 4 - subtracção x=2 5-x 3 * m ultiplicação x=4 x*5 20 / divisão 15/5 5/2 3 2.5 % m ódulo ( obtém o resto de um a divisão inteira) 5% 2 10% 8 10% 2 1 2 0 x=5 x++ 6 ++ increm ento -- decrem ento x=5 x-- 4 - m enos unário x=3 -x -3 O seguinte quadro mostra as formas de incrementar e decrementar um determinado valor. Escola Secundária S. João do Estoril Exp r e ssã o X A X=A++ A+1 A+1 X=++A A A+1 X=A-- A-1 A-1 X=--A A A-1 Paula Cardoso Alcobia - 22 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Operadores de comparação Um operador de comparação compara os valores que lhe são fornecidos e retorna um valor lógico que indica se o resultado da comparação é verdadeiro ou falso. Op era d or De scr i çã o Igualdade (==) Verifica se os dois operandos são iguais Desigualdade (!=) Verifica se os operandos são desiguais Maior do que (>) Verifica se o operando da esquerda é maior do que o da direita Verifica se o operando da Maior ou igual esquerda é maior ou igual (>=) ao da direita Exe m p l o x==y dá true se x igualar y 5==8 Devolve Falso x!=y dá true se x não 5!=8 Devolve for igual a y verdadeiro x>y dá true se x for maior do que y x>=y dá true se x for 5>=8 Devolve maior ou igual a y falso Verifica se o operando da x<y dá true se x for Menor do que esquerda é menor do que o menor do que y (<) da direita verifica se o operando da Menor ou igual esquerda é menor ou igual (<=) ao da direita 5>8 Devolve Falso 5<8 Devolve verdadeiro x<=y dá true se x for 5<=8 Devolve menor ou igual a y verdadeiro Para comparar diferentes operandos entre si, é necessário salientar algumas regras: -o valor null é igual ao valor undefined; -dois valores booleanos são iguais se forem ambos true e false; - duas strings são iguais se contiverem a mesma sequência de caracteres; Escola Secundária S. João do Estoril - duas variáveis diferentes são iguais se referenciarem o mesmo objecto. A comparação de strings é feita por ordem alfabética. No caso de um dos operandos ser do tipo número, o interpretador faz a conversão do operando string para número e faz uma comparação numérica. Exe m p l o T i p o d e co m p a r a çã o Re s ul t a d o "12"<"5" A lfabética verdadeiro "12"<5 Numérica- o"12" é convertido em12 falso "doze"<5 Numérica- "doze" não pode ser convertido em número e a conversão resulta em NaN. falso Paula Cardoso Alcobia - 23 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Operadores lógicos Os operadores lógicos aceitam os valores lógicos true e false (verdadeiro e falso) como operandos e retornam valores lógicos como resultado. Os operadores lógicos base encontram-se listados a seguir: Op era d or e (&&) ou (||) U t i l i za çã o b && c b || c negação (!) !b De scr i çã o Dá true se b for true e c for true. Dá false se b for false e c for false. Dá true nos casos restantes. Dá true se b for false e dá false se b for true. Exp r e ssã o EX P 1 && EX P 2 Escola Secundária S. João do Estoril EX P1 || EX P2 !EX P1 Paula Cardoso Alcobia Exe m p l o x=6 y=3 (x<10 && y>1) devolve verdadeiro x=6 y=3 (x==5 ||==5) devolve falso x=6 y=3 !(x==y) devolve verdadeiro EX P1 EX P2 Re s ul t a d o V V V V F F F V F F F F V V V V F V F V V F F F V F F V - 24 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Outros operadores Existem outros operadores que são designados por operadores especiais, visto que não se encaixam nas categorias anteriores, que são: ♦ Operador Condicional (?:) ♦ Operador vírgula (,) ♦ Operador Delete ♦ Operador In ♦ Operador Instanceof ♦ Operador New ♦ Operador This ♦ Operador Typeof ♦ Operador void ♦ Operador Condicional (?:) O operador condicional é o único operador que no Javascript admite três operandos. O operador pode ter um ou dois valores baseado numa condição (permite implementar um if-else). A sintaxe é a seguinte: condição? val1: val2 é equivalente a : if (condição) val1 else val2 Se a condição for verdadeira, o operador assume o valor de val1, caso contrário assume o valor val2. Exemplo: Escola Secundária S. João do Estoril status= (idade>=18)? “adulto”: “menor” Esta expressão assume o valor de adulto se a idade for 18 ou mais, caso contrário assume o valor de menor. ♦ Operador vírgula (,) Permite criar uma expressão através da concatenação de outras expressões. Este operador é basicamente utilizado dentro de um ciclo FOR, para permitir a actualização de multiplas variáveis ao longo ciclo. Paula Cardoso Alcobia - 25 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exemplo: for (var i=0, j=9; i <= 9; i++, j--) document.writeln("a["+i+","+j+"]= " + a[i,j]) ♦ Operador Delete Permite eliminar um objecto, uma propriedade de um objecto ou um elemento com um determinado índice num array. A sintaxe é a seguinte: delete objecto delete objecto.propriedade delete objecto[índice] delete propriedade //permitido apenas dentro da instrução with Exemplos: x=42 var y= 43 myobj=new Number() myobj.h=4 // cria a propriedade h delete myobj.h // apaga a propriedade delete myobj // apaga o objecto ♦ Operador In Devolve verdadeiro(true) se uma determinada propriedade existe num determinado objecto. Sintaxe: Propriedade in objecto ♦ Operador Instanceof Devolve verdadeiro(true) se um determinado objecto é um determinado tipo de objecto. Escola Secundária S. João do Estoril Sintaxe: Objecto instanceof tipoObjecto ♦ Operador New Permite criar uma instância de um objecto de um tipo definido pelo utilizador ou de um dos tipos já construídos no JavaScript: Array, Boolean, Date, Function, Image, Number, Object, Option, RegExp, ou String. No servidor podemos usar também DbPool, Lock, File, ou SendMail. Sintaxe do new:objecto = new tipoobjecto ([param1] [,param2] ...[,paramN]) Paula Cardoso Alcobia - 26 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Operador This Palavra-chave que é usada para referir um objecto em uso. Sintaxe: this[.propriedade] this[.método] Exemplo: <B>Insira a idade entre 18 e 99:</B> <INPUT TYPE = "text" NAME = "age" SIZE = 3 onChange="validate(this, 18, 99)"> ♦ Operador TTypeof ypeof O typeof é utilizado de uma das seguintes formas: 1. typeof operando 2. typeof (operando) O operador typeof retorna uma string indicando o tipo da variável. Os parêntesis são opcionais. ♦ Operador void O void é utilizado de uma das seguintes formas: 1. void expressão 2. void (expressão) O operador void especifica uma expressão para ser avaliada , mas não retorna nenhum valor. Os parêntesis são opcionais. Escola Secundária S. João do Estoril Exemplo:<A HREF="javascript:void(0)">Clique aqui</A> A presente expressão cria uma hiperligação que não faz nada quando o utilizador clica no link. Quando o utilizador clica no link, void(0) retorna 0, o que não tem nenhum efeito no Javascript. O exemplo a seguir, cria uma hiperligação que submete um form quando o utilizador clica no link. <A HREF="javascript:void(document.form.submit())"> Clique aqui para submeter o form.</A> Paula Cardoso Alcobia - 27 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Precedências dos Operadores A precedência dos operadores determina a ordem pela qual é avaliada uma expressão. Pode-se ultrapassar esta precedência usando-se parêntesis. A tabela a seguir apresenta a precedência dos vários operadores da ordem mais alta para a mais baixa. Ord em Op era d or De scr i çã o 1 .[]() 2 - ! ~ ++ -new delete void typeof 3 */% 4 +- 5 >> << >>> 6 > >= < <= in 7 = == != === !== 8 & E sobre Bits 9 ^ Ou exclusivo sobre Bits 10 | Ou sobre Bits 11 && 12 || OU lógico 13 ?: Condicional ou decisão binária com operador ternário 14 = += -= *= /= %= <<= >>= >>>= &= ^= 15 , Acesso a propriedade, indexação em array, chamada a função e agrupamento de expressões Peradores unários e de objectos Multiplicação, divisão e resto Adição/ concatenação e subtracção Deslocamentos Comparação Igualdade e desigualdade E lógico Atribuição e atribuição com operação associada Escola Secundária S. João do Estoril Avaliação múltipla Paula Cardoso Alcobia - 28 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Estruturas de controlo Existem dois tipos de estruturas de controle: estruturas de repetição(ciclos) e estruturas de decisão(condicionais).. A estrutura de repetição permite que um bloco de instruções seja executado repetidamente uma quantidade controlada de vezes. A estrutura de decisão permite executar um entre dois ou mais blocos de instruções. ♦ Estruturas de decisão - condicionais As instruções condicionais testam uma condição e com base no resultado do teste decidem se uma parte do código deve ou não ser executada. Elas permitem-nos executar código diferente em situações diferentes. ♦ A instrução if A instrução if é utilizada para testar uma condição e executar um bloco de código apenas quando ela é satisfeita. Sintaxe: if (condição) { bloco de instruções } Se a condição for verdadeira, o bloco é executado. Caso contrário, o bloco não é executado. Exemplo: <script language=“JavaScript”> // Se o tempo no browser for inferior a 12, aparecerá escrito “Bom dia” Escola Secundária S. João do Estoril var d=new Date() var tempo=d.getHours() if (tempo<10) { document.write(“<b>Bom dia</b>”) } </script> Paula Cardoso Alcobia - 29 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ A instrução if ... else A instrução if ... else é utilizada para testar uma condição. Se a condição for satisfeita é executado um bloco de código e no caso de não satisfazer a condição é executado um outro bloco de código alternativo. Sintaxe: if(condição) { bloco 1 } else { bloco 2 } Se a condição for verdadeira o bloco 1 é executado. Caso contrário, o bloco 2 é executado. Exemplo: <script language=“JavaScript”> //Se o tempo no browser é inferior a 12, sera ecrito “Bom dia” //Caso contrário será escrito”Boa tarde” var d = new Date() var tempo = d.getHours() if (tempo < 10) { document.write(“Bom dia!”) } Escola Secundária S. João do Estoril else { document.write(“Boa tarde!”) } </script> Paula Cardoso Alcobia - 30 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ A instrução if ... else if ... else if... Também é possível escrever uma estrutura que execute um entre múltiplos blocos de instruções. Sintaxe: if(condição 1) { bloco 1 ... } else if(condição N) { bloco N Escola Secundária S. João do Estoril } else { bloco P } Paula Cardoso Alcobia Se a condição 1 for verdadeira o bloco 1 é executado. Caso contrario, a condição 2 é avaliada. Se a condição 2 for verdadeira o bloco 2 é executado. Caso contrario, a condição 3 é avaliada e assim sucessivamente. Se nenhuma condição é verdadeira bloco P é executado. Observe que apenas um dos blocos é executado. - 31 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Atribuição condicional de valores A linguagem JavaScript possui um operador que nos permite escolher o valor a atribuir a uma variável consoante o resultado do teste que é feito a uma condição. Esse operador é um operador condicional de atribuição de valor e é composto por diversas partes: uma condição, um ponto de interrogação e dois valores que podem ser atribuídos à variável separados pelo carácter : (dois pontos). Sintaxe: variável = (condição) ? valor1 : valor2 Este operador actua do seguinte modo: se a condição for verdadeira a variável passará a ter o valor1; se a condição não for satisfeita será atribuído o valor2 à variável. ♦ Estrutura switch...case A estrutura switch...case é uma estrutura de decisão que permite comparar o valor do seu argumento (uma variável ou uma expressão) com vários valores. Para cada caso em que houver uma igualdade será executada uma determinada porção de código. Sintaxe: switch (expressão) { case label1: código a ser executado se expressão = label1 break case label2: código a ser executado se expressão = label2 break default: código a ser executado se expressão for diferente de label1 e label2 Escola Secundária S. João do Estoril } Modo de funcionamento do switch - Parte-se de uma expressão simples (frequentemente uma variável), que é avaliada. - O valor dessa expressão é comparado com os valores de cada um dos casos existentes na estrutura. - Se coincide, é executado o bloco de instruções associado a esse caso. Paula Cardoso Alcobia - 32 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano - Usa-se o break no final do bloco de instruções para impedir que sejam as instruções contíguas (já pertencentes a outro bloco subsequente) - O valor “default” é usado para representar os casos em que “expressão” assume valores diferentes de label1, label2, … Exemplo: // este exemplo usa a instrução switch para dizer se um número i // pertence ou não ao conjunto {6, 12, 32, 66} var i = 12 var s = "O número " + i switch(i) { case 6: s += " pertence " break case 12: s += " pertence " break case 32: s += " pertence " break case 66: s += " pertence " break default: s += " não pertence " } s += "ao conjunto {6, 12, 32, 66}" Escola Secundária S. João do Estoril document.write(s) Paula Cardoso Alcobia - 33 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Estruturas de R epetição - ciclos Repetição As estruturas de repetição são usados para executar o mesmo bloco de código diversas vezes. Em JavaScript existem os seguintes ciclos de repetição: -for - executam um bloco de código enquanto uma condição for satisfeita. -while - repetem a execução de um bloco de código enquanto uma condição for satisfeita. - do...while - repetem a execução de um bloco de código enquanto uma condição for satisfeita mas executam-no pelo menos uma vez, mesmo que a condição nunca seja satisfeita. ♦ Estrutura for A estrutura for costuma ser utilizada quando se quer um número determinado de ciclos. A contagem dos ciclos é feita por uma variável chamada de contador. A estrutura for é, as vezes, chamada de estrutura de repetição com contador. A sintaxe é a seguinte: for(inicialização; condição;pós-instrução) { bloco } onde: inicialização é uma expressão de inicialização do contador. condição é uma expressão lógica de controle de repetição. pós-instrução é uma expressão de incremento/decremento do contador. Escola Secundária S. João do Estoril bloco é um conjunto de instruções a ser executado. Nota: O ciclo for identifica três componentes, separadas por ponto e vírgula. Se for necessário realizar mais do que uma inicialização ou pós-instrução, estas deverão ser separadas por vírgulas. Exemplo: for (i = 0; i < 2; i++) { a=i } Paula Cardoso Alcobia - 34 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Estrutura while A estrutura de repetição condicional while é semelhante a estrutura do...while. A sintaxe é a seguinte: while(condição) { bloco } Esta estrutura faz com que a condição seja avaliada em primeiro lugar. Se a condição é verdadeira o bloco é executado uma vez e a condição é avaliada novamente. Caso a condição seja falsa a repetição é terminada sem a execução do bloco. Observe que nesta estrutura, ao contrário da estrutura do...while, o bloco de instruções pode não ser executado nenhuma vez, basta que a condição seja inicialmente falsa. Exemplo: <script type="text/javascript"> <!-var i = 0 while (i <= 5) { document.write("O número é " + i) document.write("<br/>") i++ } document.write("O ciclo terminou<br/>") Escola Secundária S. João do Estoril // --> </script> Paula Cardoso Alcobia - 35 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Estrutura do...while Esta é uma estrutura básica de repetição condicional. Permite a execução de um bloco de instruções repetidamente. A sintaxe é a seguinte: do { bloco }while(condição) Esta estrutura faz com que o bloco de instruções seja executado pelo menos uma vez. Após a execução do bloco, a condição é avaliada. Se a condição é verdadeira o bloco é executado outra vez, caso contrário a repetição é terminada. Exemplo: <script type=”text/javascript”> <!— i=0 do { document.write(“O número é “ + i) document.write(“<br/>”) i++ } while (i <= 5) document.write(“O ciclo terminou<br/>”) // —> </script> ♦ Ciclos Infinitos Ciclos infinitos, são ciclos que nunca terminam, isto é, apresentam condições que são sempre verdadeiras. Escola Secundária S. João do Estoril Exemplos: do while (1) instrução instrução for ( ; ; ) instrução while (1) Paula Cardoso Alcobia - 36 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Outros tipos de Instruções ♦ A instrução break --Esta instrução serve para terminar a execução das instruções de um ciclo de repetição (for, do...while, while) ou para terminar um conjunto switch. Quando em um ciclo de repetição, esta instrução força a interrupção do ciclo independentemente da condição de controle. Exemplo: for (i = 0; i < a.length; i++) { if (a[i] = theValue); break; } ♦ A instrução continue - Esta instrução opera de modo semelhante à instrução break dentro de um ciclo de repetição. Quando executada, ela salta as instruções de um ciclo de repetição sem sair do ciclo. Isto é, a instrução força a avaliação da condição de controle do ciclo. Exemplo: i=0 n=0 while (i < 5) { i++ if (i == 3) continue n += i } ♦ A instrução return(expressão) - só pode ser usada dentro das funções, terminando de imediato a sua execução a partir do local onde está inserida. A expressão associado (opcional) é o valor retornado pela função. Exemplo: Escola Secundária S. João do Estoril function factorial(n) { if ((n == 0) || (n == 1)) return 1 else { result = (n * factorial(n-1) ) return result } } Paula Cardoso Alcobia - 37 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Tratamento de excepções Por vezes surgem situações em que uma parte de um script é executada em condições desfavoráveis. Isso acontece sempre que um script tenta usar um objecto que não está definido ou tenta realizar uma operação que não pode ser realizada. Sempre que aparece uma situação deste tipo surge uma excepção na execução do código. O comportamento normal do interpretador de JavaScript é parar a execução do script porque não sabe o que deve fazer a seguir. Porém, há situações adversas das quais o script pode recuperar em boas condições desde que o programador lhe dê instruções para tal. Isso consegue-se fazendo a captura da excepção criada pelo erro e executando código capaz de fazer a recuperação. ...catch, que têm a sintaxe seguinte: Para tal usa-se as instruções try try...catch, try { bloco com código normal mas que pode gerar erros } catch(excepção) { bloco com código capaz de fazer a recuperação dos erros } A secção try contém o código normal logo a seguir à instrução try. Ao chegar a esta instrução o interpretador de JavaScript tenta executar esse bloco da forma habitual. Se não ocorrer nenhum erro o interpretador ignora o código que está na secção catch e continua a executar o resto do script. Se ocorrer um erro no bloco try esse erro é capturado pelo bloco catch. É aí que o interpretador de JavaScript continua a executar o código imediatamente após o erro. No bloco catch devemos colocar o código de recuperação. Exemplo: Escola Secundária S. João do Estoril try { s = a[1].substring(0,4) } catch(e) { s = “Ocorreu um erro no script: “+e } Paula Cardoso Alcobia - 38 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Throw A instrução throw é utilizada para lançar uma excepção e quando utilizada na instrução try, permite controlar o fluxo do programa, criando mensagens de erro para a instrução cacth. Sintaxe: throw expressão Arrays Definição: - O objecto Array é usado para armazenar um conjunto de valores numa única variável. -Este tipo de objectos é constituído por diversos compartimentos, em que cada um destes armazena um valor. -Cada valor armazenado num dos campor do array encontra-se associado a um índice. Exemplo: var frutas_tropicais = new Array("Goiaba", "Manga", "Maracujá"); var frutas_nacionais = new Array(3); frutas_nacionais[0] = "Maçã"; frutas_nacionais[1] = "Cereja"; frutas_nacionais[2] = "Laranja"; Escola Secundária S. João do Estoril Ao declararmos a variável frutas_tropicais nós declarámos o Array e atribuímos-lhe os valores numa única operação. Já no segundo caso primeiro declarámos o Array e só depois definimos os valores que ele deve conter. Neste caso temos que a variável frutas_tropicais[3] possui o valor "Maracujá" e a variável frutas_nacionais[0] possui o valor "Maçã". Em JavaScript as variáveis não têm um tipo definido, por isso um array pode conter valores de tipos diferentes que podemos alterar sempre que necessário. Paula Cardoso Alcobia - 39 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exemplo: var sortido = new Array(8975, "Livro", false, -27.765, "Bolachas"); document.write("sortido = " + sortido); sortido[0] = 0.0004763; sortido[2] = true; sortido[6] = "Caderno"; document.write("<br/>"); document.write("sortido = " + sortido); Se atribuirmos um valor a um elemento do array com um índice mais alto do que o seu comprimento, o sistema JavaScript resolve o problema aumentando o tamanho do array até chegar ao índice pretendido. É isso que acontece no exemplo anterior quando se chega à linha que tem sortido[6] = "Caderno"; Os arrays são objectos, e entre as suas propriedades conta-se a propriedade length, que nos dá o número de elementos (variáveis) que ele contém num determinado momento. Assim, se ao exemplo anterior juntarmos uma linha com o seguinte código: var numeroDeElementos = sortido.length; a variável numeroDeElementos ficará com o valor 7 (repare que inserimos um elemento adicional com o índice 6, o que fez crescer o array). De forma análoga se usarmos frutas_nacionais.length iremos obter 3. ♦ Criação de um Array - Para criar um objecto Array usa-se a palavra-chave “new” Exemplo: var familia_nomes=new Array(3) Escola Secundária S. João do Estoril var familia_nomes =new Array(“Maria”,”João”,”Pedro”) Neste exemplo são criados dois arrays, ambos com 3 elementos. Na primeira linha é apenas criado o array. Na segunda linha, além de ser criado o array, são atribuídos valores a cada um dos seus elementos. ♦ Acesso a um Array Para aceder a um elemento do array é necessário referir: - O nome do array - O número do índice Paula Cardoso Alcobia - 40 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Depois de criado um array, pode ser atribuído o valor aos seus elementos (todos ou parte).Exemplo 1: var familia_nomes=new Array(3) familia_nomes [0]=”Cláudia” familia_nomes [1]=”Rafela” familia_nomes [2]=”Daniel” Exemplo 2: var familia_nomes =new Array(“Cláudia”,”Rafaela”,”Daniel”) familia_nomes [0]=”Maria” familia_nomes [1]=”Inês” familia_nomes [2]=”Diogo” O acesso ao valor de um elemento pode ser realizado da seguinte forma: mae= familia_nomes [0] pai= familia_nomes [1] ♦ R eferência a elementos de um array -resumo array-resumo Cada elemento de um array é referenciado pelo nome do array seguido de um índice inteiro. O primeiro elemento do array tem índice 0 e o último tem índice tam-1. O índice de um array deve ser inteiro inteiro. ♦ Arrays (vectores) Multidimensionais Escola Secundária S. João do Estoril Podemos ter vectores de duas, três, ou mais dimensões. Podemos entender um vector de duas dimensões associando-o aos dados de um tabela. Neste caso, cada dado é referenciado por dois índices e dizemos que se trata de um vector bidimensional (ou matriz matriz). Assim o primeiro número de um índice indica o array dentro da matriz e o segundo número do índice idêntica a posição do conteúdo no array. Exemplo (forma de aceder): brinquedo [0][2] Paula Cardoso Alcobia - 41 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Funções Definição: designamos por função um bloco de código, a que foi atribuído um nome para que possa ser chamada várias vezes em diferentes locais. Em Javascript existem dois tipos de funções: - As funções próprias do Javascript- que chamamos de métodos. Elas são associadas a um objecto bem particular como o caso do método Alert() com o objecto window. - As funções escritas pelo programador para executar um script. As funções são definidas no início de um documento (na secção head) e são chamadas posteriormente no mesmo documento (na secção body). ♦ Declaração de funções Para declarar ou definir uma função utiliza-se a palavra function. A sintaxe é a seguinte: function nome_da_função(argumentos){ …. Instruções … } O nome de uma função segue as regras das variáveis (começa por uma letra, etc). Não esquecer que o Javascript é case sensitive, pois função() é diferente de Função(). Todos os nomes de funções num script devem ser únicos. - Uma função sem argumentos tem que continuar a conter parêntesis: function segunda() { instruções } Escola Secundária S. João do Estoril - Os argumentos são variáveis usadas na função. Os valores dessas variáveis são passados quando a função é chamada. - Função com argumentos: function primeira(argumento1,argumento2,etc) { instruções } Paula Cardoso Alcobia - 42 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Invocação de funções A invocação de uma função faz-se através do nome da função com parêntesis. Sintaxe: nome_da_função(); Convém verificar se a função foi definida antes de a chamar. Exemplos: - Chamar uma função que contém argumentos, fazendo a subtituição por valores concretos: primeira(valor1,valor2, etc) - Ou sem argumentos: segunda() ♦ Passagem de parâmetros Pode-se passar valores ou parâmetros nas funções em Javascript. - FFunções unções com um número fixo de argumentos - uma função que recebe um número como argumento, soma duas unidades a esse número e devolve o valor da soma: function somar(n) { var soma = n + 2 return soma } Para usarmos esta função basta escrever: var r = somar(5) e a variável r passará a ter o valor 7. Escola Secundária S. João do Estoril Se precisarmos de usar mais argumentos basta especificá-los ao declarar a função, separando os argumentos por vírgulas: function multiplicar(p, q) { var m = p*q return m } Para usarmos esta função basta que escrevamos: var produto = multiplicar(5, 4) e a variável produto passará a ter o valor 20, que é igual a 5 vezes 4. Paula Cardoso Alcobia - 43 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano argumentos Há casos em que o - Funções que aceitam um número variável de argumentosnúmero de argumentos que são passados a uma função pode variar. Numa situação dessas pode ser preciso atribuir valores por omissão aos argumentos que possam estar em falta. Para tal é necessário distinguir que: 1) Todos os argumentos são declarados ao definir a função; 2) Nenhum argumento é declarado ao definir a função. 1) TTodos odos os argumentos são declarados ao definir a função Esta situação ocorre quando os argumentos têm naturezas diferentes. Alguns argumentos são obrigatórios mas outros são opcionais. Quando um argumento opcional não é fornecido a função deve dar-lhe um valor por omissão. Exemplo: function multiplicar(p, q) { var m = p*q return m } 2) Não são declarados argumentos ao definir a função Esta situação ocorre normalmente quando os argumentos são todos do mesmo tipo (são todos números ou são todos strings.) Exemplo: function somar() { var soma=0 for(var i=0;i<somar.arguments.length;++i) soma += somar.arguments[i] return soma Escola Secundária S. João do Estoril } ♦ R etorno de valores Quando se pretende que uma função devolva ou retorne um valor para o corpo principal do programa. Dela deve conter a instrução return dentro do seu bloco de código. O valor de retorno de uma função pode ser de qualquer tipo. Esta instrução é facultativa e podemos encontrar vários return na mesma função. Paula Cardoso Alcobia - 44 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exemplo: function resultado(a,b){ var c = a + b return c } Esta função calcula a soma de dois números e devolve o resultado: soma=resultado(2,3). Quando a função é invocada, dão entrada dois valores (parâmetros) para dentro da função. O valor que é devolvido (valor de retorno) é 5 e é armazenado na variável soma. <html> <head> <title></title> <script type="text/javascript"> <!-function multiplicar(p, q) { var m = p*q return m } // --> </script> </head> <body> <p> O valor devolvido pela função é: Escola Secundária S. João do Estoril <script type="text/javascript"> <!-document.write('multiplicar(5, 6) = '+multiplicar(5, 6)) // --> </script> </body> </html> Paula Cardoso Alcobia - 45 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Programação Orientada a Objectos em Javascript A linguagem JavaScript é uma linguagem orientada para objectos. Isto significa que em JavaScript tudo são objectos. Um objecto é uma estrutura que pode conter uma colecção de propriedades(variáveis) e métodos (funções que manipulam as variáveis). O javascript tem objectos predefinidos como strings, Date, Array, Math e outros, com métodos e propriedades predefinidos. No entanto é possível criar novos objectos com propriedades e métodos associados. ♦ Propriedades de objectos Uma propriedade é um atributo, uma característica, um descrição do objecto. Para definir uma propriedade , identifica-se o nome da variável e para a criar basta associála a um valor através de uma atribuição. Sintaxe: nome Propriedade= valor As propriedades podem também estar associadas a objectos. Neste caso para indicar as propriedades que pertencem a um objecto, basta ligá-las ao objecto através do operador ponto(.). Sintaxe: nome_do_objecto. nome_da_propriedade Para atribuir valores às propriedades de um objecto, utiliza-se a seguinte sintaxe sintaxe: nome_do_objecto. nome_da_propriedade= valor ♦ Métodos Escola Secundária S. João do Estoril Os métodos de um objecto são funções que pertencem a esse objecto. Enquanto que as propriedades correspondem a variáveis, os métodos correspondem a funções. Os métodos realizam transformações no objecto a que pertencem e devolvem o resultado da sua actuação. A sintaxe para definir um método é a seguinte: function nome_do_método([parâmetro1][,parâmetro2][…,parâmetro N]) { Corpo do método } Paula Cardoso Alcobia - 46 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Qualquer informação que seja preciso passar para um método é recebida pelas variáveis especificadas dentro do par de parêntesis que segue o nome do método. Essas variáveis são designadas por parâmetros. Se um determinado método não precisar de nenhum parâmetro, é necessário incluir um parêntesis vazio. Os métodos podem também estar associados a objectos. Neste caso, para indicar os métodos que pertencem a um objecto, basta ligá-los ao objecto através do operador ponto(.). Sintaxe: Nome_do_objecto. nome_do_método([parâmetro1][,parâmetro2][…,parâmetro N]) ♦ Métodos estáticos Alguns objectos oferecem métodos estáticos. Esses métodos diferem dos métodos normais pelo facto de não pertencerem a um objecto criado com a instrução new. Os métodos estáticos estão sempre disponíveis para ser usados, não é preciso criar um objecto para usá-los. Um exemplo de um método estático é o método String.fromCharCode(). Por ser um método estático do objecto String ele deve ser sempre invocado na forma String.fromCharCode () e antes de .fromCharCode () nunca se deve colocar o nome de uma variável. Quando utilizado deve começar sempre por String. ♦ Criação de novos objectos Um objecto é definido por uma função especial designada por construtora e criado ou instanciado com o operador new. Sintaxe para criar um novo objecto: Escola Secundária S. João do Estoril Novo_objecto= new nome_construtor([parâmetro1][,parâmetro2][…,parâmetro N]) O Javascript permite criar objectos instanciando directamente as funções predefinidas da linguagem. Mas, para criar um objecto com propriedades e métodos definidos por nós, é necessário construir previamente o construtor para depois se criar uma instância do mesmo através do operador new. O construtor é o modelo do objecto a criar e é descrito por uma função. Sintaxe para definir um construtor: function nome_do_construtor([parâmetro1][,parâmetro2][…,parâmetro N]) { Corpo do construtor } Paula Cardoso Alcobia - 47 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ As declarações this e with - A declaração this this-- A declaração this representa o próprio objecto em que é usada. Esse objecto pode ser uma função, uma ligação de hipertexto, uma imagem, etc. Esta declaração é bastante útil em HTML Dinâmico porque nos ajuda muito a construir funções que respondem a eventos sabendo sempre qual foi o objecto que originou o evento e funcionam correctamente em todos os browsers. - A declaração with with- Esta declaração estabelece o objecto ao qual se aplica uma série de instruções. Os dois exemplos seguintes usam o objecto Math para ilustrar o uso desta declaração e são totalmente equivalentes Versão 1: x = Math.cos(3 * Math.PI) + Math.sin(Math.LN10) y = Math.tan(14 * Math.E) Versão 2 (equivalente à anterior.) Repare que não foi preciso colocar a parte Math. antes dos nomes dos métodos cos(), sin() ou tan(). with (Math) { x = cos(3 * PI) + sin (LN10) y = tan(14 * E) } Quando o número de instruções é pequeno não vale a pena usar a declaração with, mas se esse número crescer muito o código será mais compacto e fácil de ler se usarmos esta declaração. Escola Secundária S. João do Estoril ♦ Principais objectos predefinidos em Javascript Os objectos predefinidos em Javacript estão associados a funções construtoras predefinidas, podendo evocar propriedades e métodos dessas funções. As funções construtoras devem ser evocadas através do operador new para que o objecto seja criado. Paula Cardoso Alcobia - 48 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Objecto Array O objecto Array é usado para armazenar um conjunto de valores numa única variável. Este tipo de objectos é constituído por diversos compartimentos, em que cada um destes armazena um valor. Cada valor armazenado num dos campos do array encontrase associado a um índice. Propriedades do objecto Array Sintaxe Sintaxe: objecto.nome_da_propriedade Pr o p r i e d a d e length De scr i çã o Fornece o número de elementos que estão no Array. O valor desta propriedade é estabelecido quando o Array é criado, mas pode crescer se formos juntando mais elementos ao Array. Método do objecto Array Sintaxe Sintaxe: objecto.nome_do_método Mé t o d o chop() concat() join() Escola Secundária S. João do Estoril pop() push() reverse() De scr i çã o Permite truncar o último caracter de um array Concatena 2 ou mais arrays e devolve um novo array. S i nt a xe array.chop() array.concat(nome_array2,nome_array3,...,nome_arrayN) Coloca todos os elementos de um array em strings separadas para um caracter array.join(separator) (por defeito é a vírgula). Remove e devolve o ultimo elemento de array.pop() um array. Adiciona 1 ou mais elementos ao fim de um array e devolve o novo comprimento. array.push(elemento1,...,elementoN) Devolve um novo Array em que a ordem dos elementos está invertida (em aprticular temos que o elemento que array.reverse() tinha o índice zero passa a ter o índice mais alto e vice versa). Paula Cardoso Alcobia - 49 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Método do objecto Array(continuação) Mé t o d o De scr i çã o Remove e devolve o primeiro elemento de um array, alterando o seu comprimento. shift() Cria um novo array a partir de uma secção seleccionada de um array já existente slice() array.shift() array.slice(begin[,end]) sort() Devolve um novo array em que os elementos estão ordenados (geralmente array.sort(compara function) por ordem crescente) splice() Adiciona e/ou remove os elementos de um array. array.splice(index,howmany[,el1,el2]) split() divide uma string e devolve um array. array.split(separator) Devolve uma string que representa o toSource() código fonte do array Converte um array numa string e devolve o resultado. toString() Adiciona um ou mais elementos ao início de um array e devolve o novo comprimento. unshift() valueOf() Escola Secundária S. João do Estoril S i nt a xe Devolve o primeiro valor de um array. array.toSource() array.toString() array.unshift(elemento1,...,elementoN) array.valueOf() Exemplo de um array que inverte a ordem dos elementos: <html> <head> <title></title> </head> <body> Paula Cardoso Alcobia - 50 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano <script type="text/javascript"> <!-var fruta = new array("Laranja","Banana","Morango","Ananás","Maçã","Kiwi") // Agora ordenamos o Array por ordem alfabética invocando o método sort() fruta.sort() // --> </script> <table> <tr> <td width="140"><b>Ordem alfabética</b></td> <td><b>Ordem inversa</b></td> </tr> <td> <script type="text/javascript"> <!-for (var i=0; i<6; i++) document.write(fruta[i] + "<br/>") // --> </script> </td> <td> <script type="text/javascript"> <!-// Agora invertemos a ordem do Array invocando o método reverse() fruta.reverse() for (var i=0; i<6; i++) document.write(fruta[i] + "<br/>") Escola Secundária S. João do Estoril // --> </script> </td> </tr> </table> </body> </html> Paula Cardoso Alcobia - 51 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Objecto Boolean Cria um objecto do tipo boolean com valor inicial false, se for chamado sem argumentos, ou com um valor especificado. O objecto Boolean tem o valor false (falso) se: - não se encontra inicializado - tem valor 0 (zero) - tem o valor null - tem o valor “” (string vazia) - tem o valor falso - tem o valor NaN - O objecto Boolean tem o valor true (verdadeiro) se:se não se verificr nenhuma das situações acima citadas. Linhas de código onde são criados objectos Boolean com o valor inicial false: var b1=new Boolean() var b2=new Boolean(0) var b3=new Boolean(null) var b4=new Boolean(“”) var b5=new Boolean(false) var b6=new Boolean(NaN) Linhas de código onde são criados objectos Boolean com o valor inicial true: var b1=new Boolean(“true”) var b2=new Boolean(“Paula”) Propriedades do objecto Boolean Escola Secundária S. João do Estoril Sintaxe: objecto.nome_da_propriedade Pr o p r i e d a d e De scr i çã o constructor Contém a função que cria uma protótipo do objecto prototype Possibilita a adição de Propriedades e métodos ao objecto Paula Cardoso Alcobia - 52 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Método do objecto Boolean Sintaxe: objecto.nome_do_método Mé t o d o toString() valueOf() De scr i çã o Converte um valor Boolean numa string. Este método é chamado automaticamente pelo JavaScript sempre que um objecto Boolean é usado numa situação que requere uma string. Devolve o valor "true" ou "false" de um objecto Boolean Exemplo: <html> <body> <script language=“JavaScript”> var b1= new Boolean(0) var b2= new Boolean(1) var b3= new Boolean(“”) var b4= new Boolean(null) var b5= new Boolean(NaN) var b6= new Boolean(“false”) document.write(“0 é booleano e tem o valor <b>” + b1 + “</b><br/>”) document.write(“1 é booleano e tem o valor <b>” + b2 + “</b><br/>”) document.write(“Uma string vazia é booleano e tem o valor <b>” + b3 + “</b><br/>”) document.write(“null é booleano e tem o valor <b>” + b4 + “</b><br/>”) Escola Secundária S. João do Estoril document.write(“NaN é booleano e tem o valor <b>” + b5 + “</b><br/>”) document.write(“A string ‘false’ é booleano e tem o valor <b>” + b6 + “</b><br/>”) </script> </body> </html> Paula Cardoso Alcobia - 53 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Objecto Date O objecto Date permite-nos ler, construir e realizar operações com datas e horas. Propriedades do objecto Date Sintaxe: objecto.nome_da_propriedade Pr o p r i e d a d e De scr i çã o constructor Contém a função que cria uma protótipo do objecto prototype Possibilita a adição de Propriedades e métodos ao objecto Métodos do objecto Date Sintaxe: objecto.nome_do_método Escola Secundária S. João do Estoril Mé t o d o De scr i çã o S i nt a xe getDate() Devolve o dia do mês (de 1 a 31) que está guardado no objecto Date object.getDate() getDay() Devolve o dia da semana (de 0=Domingo até 6=Sábado) guardado no objecto Date object.getDay() getMonth() Devolve o mês (de 0=Janeiro até 11=Dezembro) guardado no objecto Date object.getMonth() getFullYear() Devolve o valor completo do ano (quatro dígitos) guardado no objecto Date object.getFullYear() getYear() getHours() Paula Cardoso Alcobia Devolve o valor incompleto do ano (apenas dois dígitos) guardado no objecto Date. Não use este método, use antes o getFullYear. Devolve o valor da hora (de 0 a 23) guardada no objecto Date. object.getYear() object.getHours() - 54 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Métodos do objecto Date(continuação) Mé t o d o S i nt a xe getMinutes() Devolve o valor dos minutos (de 0 a 59) guardados no objecto Date. object.getMinutes() getSeconds() Devolve o valor dos segundos (de 0 a 59) guardados no objecto Date object.getSeconds() getMilliseconds() Devolve o valor dos milisegundos (de 0 a 999) guardados no objecto Date object.getMilliseconds() getTime() getTimezoneOffset() getUTCDate() getUTCDay() getUTCMonth() Escola Secundária S. João do Estoril De scr i çã o getUTCFullYear() getUTCHours() Paula Cardoso Alcobia Devolve a quantidade de milisegundos decorridos desde as zero horas do dia 1 de object.getTime() Janeiro de 1970 até à data que está guardada no objecto Date Devolve a diferença de tempo entre o fuso horário do computador que está a ser usado e o Tempo Médio de Greenwich ("Greenwich Mean Time", ou GMT) Devolve o dia do mês (de 1 a 31) guardado no objecto Date medido no padrão de tempo universal (UTC) Devolve o dia da semana (de 0 a 6) guardado no objecto Date medido no padrão de tempo universal (UTC) Devolve o valor do mês (de 0 a 11) guardado no objecto Date medido no padrão de tempo universal (UTC) Devolve o valor completo do ano (com quatro dígitos) guardado no objecto Date medido no padrão de tempo universal (UTC) Devolve a hora (de 0 a 23) guardada no objecto Date medida no padrão de tempo universal (UTC) object.getTimezoneOffset() object.getUTCDate() object.getUTCDay() object.getUTCMonth() object.getUTCFullYear() object.getUTCHours() - 55 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Métodos do objecto Date(continuação) Mé t o d o getUTCMinutes() getUTCSeconds() Escola Secundária S. João do Estoril getUTCMilliseconds() De scr i çã o Devolve o valor dos minutos (de 0 a 59) guardados no objecto Date medidos no padrão de tempo universal (UTC) Devolve o valor dos segundos (de 0 a 59) guardados no objecto Date medidos no padrão de tempo universal (UTC) Devolve o valor dos milisegundos (de 0 a 999) guardados no objecto Date medidos no padrão de tempo universal (UTC) S i nt a xe object.getUTCMinutes() object.getUTCSeconds() object.getUTCMilliseconds() setDate(valor) Acerta o valor do dia (de 1 a 31) do mês guardado no objecto Date setFullYear(valor) Acerta o valor do ano (com quatro dígitos) guardado no objecto Date object.setFullYear(ano[,mês,dia]) setHours(valor) Acerta o valor da hora (de 0 a 23) guardada no objecto Date setMilliseconds(milisegundos) Acerta o valor dos milisegundos (de 0 a 999) guardados no objecto Date setMinutes(valor) Acerta o valor dos minutos (de 0 a 59) guardados no objecto Date setMonth(valor) Acerta o valor do mês (de 0=Janeiro a 11=Dezembro) guardado no objecto Date object.setMonth(mês[,dia]) Acerta o valor dos segundos (de 0 a 59) guardados no objecto Date object.setSeconds(segundos[,milissegundos]) setSeconds(valor) setTime(valor) Paula Cardoso Alcobia object.setDate(valor) object.setHours(horas[,minutos,segundos,milissegundos]) object.setMilliseconds(milisegundos) object.setMinutes(minutos[,segundos,milissegundos]) Acerta a data e a hora guardadas no objecto Date para o valor correspondente às zero horas do dia 1 de Janeiro de 1970 object.setTime(data_numérica) mais o número de milisegundos que é fornecido como argumento do método - 56 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Métodos do objecto Date(continuação) Mé t o d o setYear(ano) setUTCDate(dia_mês) setUTCDay(dia_semana) setUTCMonth(mês) setUTCFullYear(ano) setUTCHour(horas) Escola Secundária S. João do Estoril setUTCMinutes(minutos) setUTCSeconds(segundos) setUTCMilliseconds(milisegundos) Paula Cardoso Alcobia De scr i çã o Acerta o valor do ano guardado no objecto Date. Não use este método, use antes o método setFullYear. S i nt a xe object.setYear(ano) Acerta o valor do dia (de 1 a 31) do mês guardado no objecto Date usando o padrão de tempo object.setUTCDate(dia_mês) universal (UTC) Acerta o valor do dia da semana (de 0=Domingo a 6=Sábado) guardado no objecto Date usando object.setUTCDay(dia_semana) o padrão de tempo universal (UTC) Acerta o valor do mês (de 0=Janeiro a 11=Dezembro) guardado no objecto Date usando object.setUTCMonth(mês) o padrão de tempo universal (UTC) Acerta o valor do ano (com quatro dígitos) guardado no objecto Date object.setUTCFullYear(ano) Acerta o valor da hora (de 0 a 23) guardada no objecto Date usando o padrão de tempo universal object.setUTCHour(horas) (UTC) Acerta o valor dos minutos (de 0 a 59) guardados no objecto Date usando o padrão de tempo object.setUTCMinutes(minutos) universal (UTC) Acerta o valor dos segundos (de 0 a 59) guardados no objecto Date usando o padrão de tempo universal (UTC) Acerta o valor dos milisegundos (de 0 a 999) guardados no objecto Date usando o padrão de tempo universal (UTC) object.setUTCSeconds(segundos) object.setUTCMilliseconds(milisegundos) - 57 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Métodos do objecto Date(continuação) Mé t o d o De scr i çã o S i nt a xe Devolve uma representação textual (a data e a hora escritas por extenso) usando como referência o fuso horário do Tempo Médio de Greenwich (GMT) toGMTString() Devolve uma representação textual (a data e a hora escritas por extenso) no fuso horário do computador local. toLocaleString() Fornece uma representação textual (a data e a hora escritas por extenso) da data contida no objecto Date medida no padrão UTC. toUTCString() object.toGMTString() object.toLocaleString() object.toUTCString() Métodos estáticos do objecto Date Mé t o d o De scr i çã o Date.parse(data_texto) Devolve o número de milisegundos decorridos entre as zero horas do dia 1 de Janeiro de 1970 e a data indicada por data_texto (formato de texto) Date.UTC(ano, mês, dia, horas, minutos, segundos, milisegundos) Devolve o número de milisegundos que separam a data fornecida como argumento das 0 horas do dia 1 de Janeiro de 1970. É obrigatório indicar o ano, o mês e o dia. As horas, os minutos, os segundos e os milisegundos são facultativos. Exemplo: Exemplo:<html> <body> <script language=“JavaScript”> Escola Secundária S. João do Estoril var d= new Date() document.write(d.getHours() + “.”) document.write(d.getMinutes() + 1+ “.” ) document.write(d.getSeconds()) </script> </body> </html> Paula Cardoso Alcobia - 58 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Object A função Object é um construtor utilizado para criar qualquer objecto com o operador new. Sintaxe para criar um objecto qualquer: nome_do_objecto=new object() ♦ Objecto String O objecto String é usado para trabalhar com texto. Uma string é uma cadeia de caracteres, que pode conter: - letras - números - pontos - outros caracteres (#, &, $, …) Propriedades do objecto String Sintaxe: objecto.nome_da_propriedade Pr o p r i e d a d e De scr i çã o constructor Função que cria o objecto length Devolve o comprimento de uma string prototype Permite acrescentar Propriedades e métodos ao objecto Métodos estáticos do objecto String Escola Secundária S. João do Estoril Sintaxe: objecto.nome_do_método() Mé t o d o String.fromCharCode() De scr i çã o Devolve o carácter correspondente ao código Unicode fornecido Este objecto é muito importante em diversas tarefas que podemos realizar em JavaScript: validar formulários, trabalhar com cookies, etc. Paula Cardoso Alcobia - 59 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Métodos do objecto String Mé t o d o S i nt a xe anchor() Cria uma âncora HTML object.anchor() big() Escreve uma string em fonte big object.big() blink() Escreve uma string a piscar object.blink() bold() Escreve uma string a bold object.bold() charAt() Devolve o caracter que se encontra numa determinada posição object.charAt(index) charCodeAt() Devolve o Unicode de um caracter object.charCodeAt(index) numa determinada posição concat() Concatena 2 ou mais strings object.concat(nome1,nome2,...nome[n]) fixed() Escreve uma string como as texto teletype object.fixed() fontcolor() Escreve uma string numa determinada cor object.fontcolor(color) fontsize() Escreve uma string num determinado tamanho object.fontsize("fontsize") fromCharCode() Tendo em conta o valor do Unicode especificado, devolve a string indexOf() Devolve a posição da 1ª ocorrência de uma string noutra object.indexOf(nome,[index]) italics() Escreve uma string em itálico object.italics() Devolve a posição da útima ocorrência de uma determinada string noutra. object.lastindexOf(nome,[index]) link() Escreve uma string como um hyperlink object.link("url_destino") match() Procura por uma string noutra object.match(expressão_regular) replace() Substitui alguns caracteres por outros, numa string object.replace(expressão_regular,nova_string) search() Procura uma string object.replace(expressão_regular) Extrai uma parte de uma string e devolve a parte extraída, como uma nova string object.slice(inicio_secção,fim_secção) Escreve uma string em fonte small object.small() lastIndexOf() Escola Secundária S. João do Estoril De scr i çã o slice() small() Paula Cardoso Alcobia - 60 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Métodos do objecto String (continuação) Mé t o d o De scr i çã o S i nt a xe split() Divide uma string num array de strings object.split([separator][,número_limite]) strike() Escreve uma string com um a strikethrough object.strike() sub() Escreve uma string subscrita object.sub() Extrai um determinado número de caracteres de uma string, a partir de um determinado índice de início object.substr() substring() Extrai os caracteres de uma string entre 2 índices especificados object.substring() sup() Escreve uma string superscrita object.sup() toLowerCase() Escreve uma string em minúsculas object.toLowerCase() toUpperCase() Escreve uma string em maiúsculas object.toUpperCase() toSource() Representa o código fonte de um objecto object.toSource() valueOf() Devolve o valor primitivo de um objecto String object.valueOf() substr() Exemplo: <html> <body> <script language=“JavaScript”> var str=”Olá mundo” Escola Secundária S. João do Estoril document.write(“<p>” + str + “</p>”) document.write(“comprimento da string: “ + str.length) </script> </body> </html> Este exemplo devolve uma string, guardada previamente numa variável e escreve também o comprimento (número de caracteres) dessa string, usando a propriedade length, do objecto string.. Paula Cardoso Alcobia - 61 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Objecto Math O objecto Math é um objecto intrínseco do sistema JavaScript. Ele não deve ser criado explicitamente pelo programador porque é o próprio sistema que o cria automaticamente ao arrancar. Para armazenar um número aleatório entre 0 e 1, usa-se uma variável designada “r_number”: r_number=Math.random(). Para armazenar o valor arredondado de 8.6 numa variável designada “r_number”: r_number=Math.round(8.6). Propriedades do objecto Math Sintaxe: objecto.nome_da_propriedade Pr o p r i e d a d e E L N2 LN10 LOG2E LOG10E PI SQRT1_2 Escola Secundária S. João do Estoril SQRT2 De scr i çã o Contém a base dos logaritmos naturais (número de Euler) Contém o logaritmo natural de 2 (base E) Contém o logaritmo natural de 10 (base E) Contém o logaritmo de E na base 2 Contém o logaritmo de E na base 10 Contém o número PI (3.1415927...) Contém 1 a dividir pela raiz quadrada de 2 Contém a raiz quadrada de 2 Métodos do objecto Math Sintaxe: objecto.nome_do_método Todos os métodos do objecto Math aceitam um, dois ou nenhum números como argumentos e devolvem um número como resultado. Paula Cardoso Alcobia - 62 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Métodos do objecto Math (continuação) Mé t o d o S i nt a xe math.abs(x) abs(x) Devolve o valor absoluto de x acos(x) Devolve o valor do arco (radianos) cujo math.acos(x) cosseno é x asin(x) Devolve o valor do arco (radianos) cujo math.asin(x) seno é x atan(x) Devolve o valor do arco (radianos) cuja math.atan(x) tangente é x atan2(x, y) Devolve o valor do ângulo formado pelo eixo dos xx com a linha que une a origem dos eixos ao ponto de coordenadas (x, y) ceil(x) Devolve o número inteiro mais próximo math.ceil(x) de x e não inferior a x cos(x) Devolve o cosseno de x math.cos(x) exp(x) Devolve o valor da exponencial de x (E elevado à potência x) math.exp(x) floor(x) Devolve o número inteiro mais próximo math.floor(x) de x e não superior a x log(x) Devolve o logaritmo natural de x math.log(x) max(x,y) Devolve o maior dos números (x, y) math.max(x,y) min(x,y) Devolve o menor dos números (x, y) math.min(x,y) pow(x,y) Escola Secundária S. João do Estoril De scr i çã o Devolve o valor x elevado à potência y math.atan2(x, y) math.pow(x,y) random() Devolve um número aleatório situado entre 0 e 1 (não aceita argumentos) round(x) Devolve o número inteiro mais próximo math.round(x) de x sin(x) Devolve o seno de x math.sin(x) sqrt(x) Devolve a raiz quadrada de x math.sqrt(x) tan(x) Devolve a tangente de x math.tan(x) Paula Cardoso Alcobia math.random() - 63 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exemplo: <html> <body> <script language=“JavaScript”> document.write(“Arredondamento <br>”) document.write(Math.round(7.25) ) document.write(“<br><br>Máximos e Mínimos “) document.write(“<br>” + Math.max(2,4)) document.write(“<br>” + Math.min(10, 67)) document.write(“<br><br>Potências “) document.write(“<br>” + Math.pow(2,3)) </script> </body> </html> Este exemplo mostra o uso de algumas funções matemáticas, que possibilitam calcular o arredondamento de um número, o máximo e o mínimo entre 2 valores e Escola Secundária S. João do Estoril ainda a potência de um número. Paula Cardoso Alcobia - 64 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Eventos Eventos são acontecimentos ocorridos durante a execução do programa, que podem ser detectadas pelo JavaScript, como por exemplo: - Um clique do rato - O carregamento de uma página WEB, ou mesmo de uma imagem - Deslocar o rato sobre uma determinada zona de uma página - Seleccionar uma caixa de input num formulário HTML - Submeter um formulário HTML - Carregar numa tecla O JavaScript detecta e interpreta os diversos eventos. Os eventos são definidos, usando as tags do HTML, que correspondem a cada elemento. Os eventos Javascript, associados às funções, aos métodos e aos formulários, abrem uma grande porta para uma verdadeira interactividade das páginas web. Sintaxe: <elemento tipo_de_gestor_de_evento=”função_gestora”> Lista de eventos Ev e nt o Abort Blur Change Escola Secundária S. João do Estoril Click DblClick Error Gestor d o Ev e nt o A p l i ca d o a : De scr i çã o onAbort i m a g es Quando o carregamento de uma imagem é interrompida. onBlur windows e todos os elementos de formulário Quando se retira o focus de uma janela ou de um elemento. onChange text fields, textareas, select lists Quando o conteúdo de um campo é modificado. onClick buttons, radio buttons, checkboxes, submit buttons, reset buttons, links Quando se clica num objecto como um botão, um link ou outro elemento. onDblClick documents, links Quando se efectua um duplo clique num objecto como um botão, um link ou outro elemento. onError images, windows Quando ocorre um erro. Paula Cardoso Alcobia - 65 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Lista de eventos(continuação) Ev e nt o Focus KeyDown KeyPress KeyUp L oa d MouseDown MouseMove MouseOut MouseOver MouseUp Move Reset Escola Secundária S. João do Estoril Resize Select Submit Unload Gestor d o Ev e nt o A p l i ca d o a : De scr i çã o onFocus windows e todos os elementos de formulário Quando o elemento obtém o foco. onKeyDown documents, images, links, text areas Quando é pressionada uma tecla. onKeyPress documents, images, links, text areas Quando é pressionada e libertada uma tecla. onKeyUp documents, images, links, text areas Quando é libertada uma tecla. onLoad corpo do documento(document body) Quando o objecto é carregado. onMouseDown documents, buttons, links Quando o botão do rato é pressionado. onMouseMove nada por defeito (nothing by default) Quando é movido o cursor do rato. onMouseOut areas, links Quando o cursor do rato está parado ou sai de uma ligação. onMouseOver links Quando o cursor do rato está sobre uma ligação ou outro elemento. onMouseUp documents, buttons, links Quando é libertado o botão do rato. onMove windows Quando se move uma janela onReset forms Quando é efectuado um clique sobre um botão reset, restaurando-se um objecto. onResize windows Quando a janela ou frame são redimensionadas. onSelect text fields, textareas Quando é seleccionado algum texto. onSubmit forms Quando é efectuado um clique sobre um botão submit, enviando-se um objecto. onUnload corpo do documento(document body) Quando se sai de uma página. Paula Cardoso Alcobia - 66 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Associação entre elementos do HTML e eventos Cada evento descrito anteriormente, está associado apenas a determinados elementos HTML.Existem alguns elementos HTML que nem sequer se encontram associados a nenhum evento. Os eventos são associados a tags do HTML El e m e nt o Á rea <á r e a > Body <b o d y> B ut t o n <i np ut t yp e = "b ut t o n"> d o cum e nt che ckb o x Escola Secundária S. João do Estoril <i np ut t yp e = "che ckb o x"> Paula Cardoso Alcobia G e s t o r d e Ev e nt o onmouseover onmouseout ondblclick onclick ondblclick onkeydown onkeyup onkeypress onmousedown onmouseup onblur onclick onfocus onmousedown onmouseup onclick ondblclick onkeydown onkeyup onkeypress onmousedown onmouseup onblur onclick onfocus Fi l e U p l o a d onblur onchange onfocus Fr a m e Fr a m e s e t Wi nd o w onblur onerror onfocus onload onresize onunload - 67 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Os eventos são associados a tags do HTML(continuação) El e m e nt o Wi nd o w img Ra d i o <i np ut t yp e = " r a d i o "> Escola Secundária S. João do Estoril L i nk <a > G e s t o r d e Ev e nt o onreset onsubmit onabort onerror onkeydown onkeyup onkeypress onload onblur onclick onfocus onclick ondblclick onkeydown onkeyup onkeypress onmousedown onmouseup onmouseout Pa s s w o r d onblur onfocus Re s e t <i np ut t yp e = " r e s e t "> onblur onclick onfocus S e l e ct <i np ut t yp e = " s e l e ct "> onblur onchange onfocus S ub m i t <i np ut t yp e = " s ub m i t "> onblur onclick onfocus Te x t <i np ut t yp e = " t e xt "> onblur onchange onfocus onselect Te x t A r e a onblur onchange onfocus onselect onkeydown onkeyup onkeypress Paula Cardoso Alcobia - 68 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano O HTML Document Object Model (DOM) e a Javascript ♦ O que é o DOM. O DOM (Document Object Model) é um standard para o desenvolvimento web, independente de qualquer linguagem de programação. Este standard define a estrutura lógica dos Documentos XTML e XML e as interfaces pelas quais são acedidas e manipuladas. O DOM foi desenvolvido pela W3C ( World Web Consortium) para colocar alguma ordem de desenvolvimento de páginas web, criando um ambiente e homogéneo a todos os browsers actuais. O standard DOM é constituído pelas partes Core, HTML e XML e subdividido pelos níveis 1,2 e 3. O Core(núcleo) fornece um conjunto de objectos de baixo nível que podem representar qualquer tipo de documento de forma estruturada, enquanto que o HTML DOM e XML DOM definem um conjunto de objectos específicos para documentar HTML e em XML. - O nível 1 especifica funcionalidades para navegar e manipular documentos em HTML e XML. - O nível 2 especifica funcionalidades para manipular informação sobre o estilo de um documento e define um modelo de eventos, assim como acrescenta outras funcionalidades para aceder e actualizar o conteúdo e a estrutura de documentos. - O nível 3 expande as funcionalidades do nível 2, assim como define funcionalidades para carregar, guardar e validar documentos e modelos de conteúdos. ♦ Os objectos DOM No DOM, os elementos ou objectos de um documento dispõem-se segundo uma estrutura lógica em forma de árvore e cada objecto é um conjunto de propriedades e métodos, associados a um nó dessa estrutura. Desta forma, O DOM permite especificar: - os objectos utilizados para representar e manipular um documento e as interfaces a partir das quais é possível navegar através da estrutura dos documentos; Escola Secundária S. João do Estoril - a semântica das interfaces e dos objectos; - o relacionamento entre estas interfaces e os objectos. Em suma, o DOM apresenta os documentos como uma hierarquia de objectos do tipo nó. Alguns tipos de nós podem conter nós filhos e outros serem, apenas , nós finais. Estes vários nós comunicam entre si através de interfaces que devem ser implementadas segundo as regras do DOM. Paula Cardoso Alcobia - 69 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Descrição de alguns dos principais tipos de nós do núcleo (core) DOM: ♦ Node – a interface Node implementa o primeiro nó DOM ♦ Document – a interface implementada com document representa o objecto de mais alto nível, isto é representa todo o documento em HTML. A partir deste nó, a interface Document contém métodos necessários à criação de outros objectos do documento. ♦ Element – a grande maioria dos objectos num documento é o nó Element. Estes podem ter atributos e métodos para obter o objecto Attr. O nó Element representa as tags de um documento em HTML. ♦ Attr – os nós attr representam os atributos das tags num documento, isto é a interface Attr representa um atributo no objecto Element. Os nós Attr não fazem parte da árvore do documento desde que estejam associados com o nó Element. ♦ Text – os nós Text representam texto nas tags de um nó Element ou o valor de um nó Attr. Um nó Text não deve ter qualquer nó filho. O standard DOM, para além do Core, é constituído pelo HTML DOM. Este fornece interfaces de alto nível específicas para tipos particulares de nós e que são usadas com o Core Dom, fundamentais para fornecerem uma representação de um documento HTML. Escola Secundária S. João do Estoril O HTML DOM define um documento HTML como uma colecção de objectos, onde todas as propriedades, métodos e eventos disponíveis para manipular e criar páginas web organizadas em objectos. A raiz de um documento HTML é o objecto HTML Document. Por outro lado, todas as tags HTML correspondem a objectos HTML DOM e os atributos são as suas propriedades. Quando um browser carrega uma página ele cria uma representação hierárquica do seu conteúdo que se assemelha à sua estrutura HTML. Isto resulta numa árvore organizada em nós, cada um representando uma tag, um atributo, um conteúdo ou outro objecto. A raiz da árvore do documento é acedida pela interface document. Paula Cardoso Alcobia - 70 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Uso de objectos DOM com Javascript Os browsers modernos colocam ao dispor dos criadores de páginas um conjunto numeroso de objectos que permitem ler e manipular todo o conteúdo de uma página web e métodos para manipular janelas. Estes métodos que manipulam janelas e documentos são normalmente invocados por uma linguagem de scripting, como o Javascript. Entretanto as especificações DOM fornecem as formas para manipular documentos em HTML através de scripts. Quando um documento em HTML é aberto na janela do browser este cria uma estrutura hierárquica em árvore com os objectos que o constituem. O primeiro objecto criado é o objecto window que representa a janela do browser. Este objecto pode incluir outros objectos como barras e menus, outras janelas, frames e, principalmente, documentos em HTML. Os principais objectos que compõem o objecto window são: -document – que contém propriedades e objectos do documento actual; - location – que contém propriedades baseadas na URL actual; - history – que contém a história da navegação das URL previamente acedidas; - frame . que contém as propriedades sobre outras janelas; - event – que contém informação sobre acontecimentos que resultam de acções do utilizador sobre a página web; - navigator – que contém informação sobre o browser que apresenta a página web - screen – que contém informação sobre o ecrã em que a página está a ser visualizada. Escola Secundária S. João do Estoril A figura seguinte apresenta a hierarquia de alguns dos objectos que podem estar presentes num documento em HTML. É de observar que o document contém a representação da página HTML. Cada um dos objectos ou tags que compõem a página(formulários, parágrafos, imagens, links e outros) podem ser lidos e manipulados através deste objecto. Paula Cardoso Alcobia - 71 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Descrição dos objectos: Screen – criado automaticamente pelo Javascript, contém informação sobre o ecrã do utilizador. Navigator – Contém informação sobre o browser do utilizador. W indow – Corresponde à janela do browser do computador. É automaticamente criado com cada instância da tag <body> ou <frameset>. Event – representa o estado de um evento, assim como o estado do elemento em que o evento ocorre, o estado das teclas do teclado, a localização do cursor do rato e dos botões do rato. Escola Secundária S. João do Estoril History – objecto predefinido que pode ser acedido através do histórico do objecto window. Este objecto consiste num array de URL. Frame – representa o elemento HTML frame. Frameset – representa o elemento HTML frameset. L ocation – contém informação sobre o URL actual. Iframe – representa o elemento HTML inline-frame. Document – objecto que permite aceder a todos os elementos de uma página. Meta – representa o elemento HTML meta. Paula Cardoso Alcobia - 72 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Body - representa o elemento HTML body. Anchor - representa o elemento HTML de uma hiperligação. Area – representa uma área de um mapa de imagem com uma hiperligação associada. Base - representa o elemento HTML base. Image - representa o elemento HTML img. Link - representa o elemento HTML link. Este elemento só pde ser usado com a tag <head>. Style Style- representa o elemento HTML style. Object - representa o elemento HTML object, que é usado para colocar um conteúdo executável na página. Table - representa o elemento HTML table. TableData - representa o elemento HTML td. TableHeader - representa o elemento HTML th. TableR ow - representa o elemento HTML tr. ableRow Form - representa o elemento HTML form. Button - representa um botão de um formulário HTML. Textarea - representa o elemento HTML textarea Text – representa um campo de teto de um formulário HTML File Upload - criado para cada instância da tag HTML <input type=”file”> de um formulário, permite o upload de ficheiros para o servidor. Hidden – representa um campo escondido num formulário HTML. Password – representa o campo password de um formulário HTML. Rádio – representa o botão rádio de um formulário HTML. R eset – Representa o botão reset num formulário HTML. Select – representa uma lista de selecção de um formulário HTML. Option – representa uma opção numa lista de selecção num formulário HTML. Escola Secundária S. João do Estoril Submit – representa um botão de envio de um formulário HTML. Paula Cardoso Alcobia - 73 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ♦ Criação de scripts em Javascript com os objectos DOM Neste ponto serão apresentados alguns exemplos que tentarão dar uma ideia da utilização dos objectos DOM em scripts na linguagem JavaScript. Exemplo que mostra qual foi o tipo de elemento clicado: <html> <head> <script type="text/javascript"> function whichElement(e) { var targ if (!e) var e = window.event if (e.target) targ = e.target else if (e.srcElement) targ = e.srcElement if (targ.nodeType == 3) // defeat Safari bug targ = targ.parentNode var tname tname=targ.tagName alert("You clicked on a " + tname + " element.") } </script> </head> <body onmousedown="whichElement(event)"> Escola Secundária S. João do Estoril <p>Click somewhere in the document. An alert box will alert the tag name of the element you clicked on.</p> <h3>This is a header</h3> <p>This is a paragraph</p> <img border="0" src="ball16.gif" width="29" height="28" alt="Ball"> </body> </html> Paula Cardoso Alcobia - 74 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exemplo que conta o número de imagens num documento: <html> <body> <img border="0" src="hackanm.gif" width="48" height="48"> <br /> <img border="0" src="compman.gif" width="107" height="98"> <br /><br /> <script type="text/javascript"> document.write("This document contains: " + document.images.length + " images.") </script> </body> </html> Exemplo altera a largura e altura de uma imagem quando clico no botão: <html> <head> <script type="text/javascript"> function changeSize() { document.getElementById("compman").height="250" document.getElementById("compman").width="300" } </script> Escola Secundária S. João do Estoril </head> <body> <img id="compman" src="compman.gif" width="107" height="98" /> <br /><br /> <input type="button" onclick="changeSize()" value="Change size of image"> </body> </html> Paula Cardoso Alcobia - 75 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Alguns Scripts Exercício 1 - Janela animada <HEAD> <SCRIPT LANGUAGE=”JavaScript”> <!— Begin function moveWin() { for (var i = 1; i < 1001; i++) window.moveBy(1, 1); window.moveBy(-1000, -1000); } // End —> </script> </HEAD> <!— Inserir a primeira parte do script entre os <HEAD></HEAD> tags . E o resto do script em qualquer parte da página, dentro de (body) —> <BODY> <form> aula - LLOL OL <input type=button value= “Eu vou para a página da PPaula OL”” ’http://1212.page.vu onClick=”moveWin();window.location.href=’http://1212.page.vu ’http://1212.page.vu’’ ;”> </form> Ou então http://1212.page.vu <a href=”http://1212.page.vu http://1212.page.vu”; onClick=”moveWin()”>Eu Eu vou para a página da Paula - LLOL OL </a> Escola Secundária S. João do Estoril </BODY> Paula Cardoso Alcobia - 76 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exercício 2 - Efeito animado e colorido no cursor cursor.. <HEAD> <style type=”text/css”> <!— Begin CSS #a { position: absolute; top: 10px; left: 10px; visibility: visible } #b { position: absolute; top: 10px; left: 10px; visibility: visible } #c { position: absolute; top: 10px; left: 10px; visibility: visible } #d { position: absolute; top: 10px; left: 10px; visibility: visible } #e { position: absolute; top: 10px; left: 10px; visibility: visible } #f { position: absolute; top: 10px; left: 10px; visibility: visible } #g { position: absolute; top: 10px; left: 10px; visibility: visible } End CSS —> </style> </HEAD> <!— Inserir a primeira parte do script entre os <HEAD></HEAD> tags . E o resto do script em qualquer parte da pagina, dentro de (body) —> Escola Secundária S. João do Estoril <BODY> <layer name=”a0" left=10 clip=”0,0,2,2"></layer> <layer name=”a1" left=10 clip=”0,0,2,2"></layer> <layer name=”a2" left=10 clip=”0,0,2,2"></layer> <layer name=”a3" left=10 clip=”0,0,2,2"></layer> <layer name=”a4" left=10 clip=”0,0,2,2"></layer> <layer name=”a5" left=10 clip=”0,0,2,2"></layer> <layer name=”a6" left=10 clip=”0,0,2,2"></layer> top=10 visibility=show bgcolor=”#ff0000" top=10 visibility=show bgcolor=”#ff8000" top=10 visibility=show bgcolor=”#ffff00" top=10 visibility=show bgcolor=”#00ff00" top=10 visibility=show bgcolor=”#0000ff ” top=10 visibility=show bgcolor=”#ff00ff ” top=10 visibility=show bgcolor=”#ffffff ” <div id=”starsDiv” style=”position:absolute;top:0px;left:0px”> <div style=”position:relative;width:2px;height:2px;background:#ffffff;fontsize:2px;visibility:visible”></div> <div style=”position:relative;width:2px;height:2px;background:#ffff00;fontsize:2px;visibility:visible”></div> <div style=”position:relative;width:2px;height:2px;background:#ffa000;fontsize:2px;visibility:visible”></div> Paula Cardoso Alcobia - 77 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano <div style=”position:relative;width:2px;height:2px;background:#ff0000;fontsize:2px;visibility:visible”></div> <div style=”position:relative;width:2px;height:2px;background:#00ff00;fontsize:2px;visibility:visible”></div> <div style=”position:relative;width:2px;height:2px;background:#0000ff;fontsize:2px;visibility:visible”></div> <div style=”position:relative;width:2px;height:2px;background:#FF00FF;fontsize:2px;visibility:visible”></div> </div> <script language=”JavaScript”> Escola Secundária S. João do Estoril <!— Original: freeware.de —> <!— Web Site: http://freeware.de —> <!— MSIE Fix by: Kurt Grigg ([email protected]) —> <!— Begin if (document.layers) { window.captureEvents(Event.MOUSEMOVE); } var yBase = 200; var xBase = 200; var yAmpl = 10; var yMax = 40; var step = .2; var ystep = .5; var currStep = 0; var tAmpl=1; var Xpos = 1; var Ypos = 1; var i = 0; var j = 0; if (document.all) { function MoveHandler(){ Xpos = document.body.scrollLeft + event.x; Ypos = document.body.scrollTop + event.y; } document.onmousemove = MoveHandler; } else if (document.layers) { function xMoveHandler(evnt) { Xpos = evnt.pageX; Ypos = evnt.pageY; } window.onMouseMove = xMoveHandler; } Paula Cardoso Alcobia - 78 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano function animateLogo() { if (document.all) { yBase = window.document.body.offsetHeight / 4; xBase = window.document.body.offsetWidth / 4; } else if (document.layers) { yBase = window.innerHeight / 4; xBase = window.innerWidth / 4; } if (document.all) { for (i = 0 ; i < starsDiv.all.length; i++) { starsDiv.all[i].style.top = Ypos + Math.cos((20*Math.sin(currStep/ 20))+i*70)*yBase*(Math.sin(10+currStep/10)+0.2)*Math.cos((currStep + i*25)/ 10); starsDiv.all[i].style.left = Xpos + Math.sin((20*Math.sin(currStep/ 20))+i*70)*xBase*(Math.sin(10+currStep/10)+0.2)*Math.cos((currStep + i*25)/ 10); } } else if (document.layers) { for (j = 0; j < 7; j++) { //7 is number of NS layers! var templayer=”a” + j; document.layers[templayer].top = Ypos + Math.cos((20*Math.sin(currStep/ 20))+j*70)*yBase*(Math.sin(10+currStep/10)+0.2)*Math.cos((currStep + j*25)/ 10); document.layers[templayer].left =Xpos + Math.sin((20*Math.sin(currStep/ 20))+j*70)*xBase*(Math.sin(10+currStep/10)+0.2)*Math.cos((currStep + j*25)/ 10); } } currStep += step; setTimeout(“animateLogo()”, 10); } animateLogo(); // End —> </script> Escola Secundária S. João do Estoril </BODY> Paula Cardoso Alcobia - 79 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exercício 3 - R etirar o sublinhado das hiperligações. Retirar <HEAD> <style> <!— a{text-decoration:none} //—> </style> </HEAD> <!— Inserir a primeira parte do script entre os <HEAD></HEAD> tags. Depois para inserir os links é o resto do script.(Um para cada um dos links.) —> <BODY> <A HREF=”javascript:void(0)” http:// ONCLICK=”open(‘http:// 1112.page.vu 1112.page.vu’’ ,’miniwin’,’toolbar=0,location=0,directories=0, status=0,menubar=0,scrollbars=0,resizable=0,width=800,height=600')”> Página da TTurma urma 12 do 11º Ano </A> </BODY> Exercício 4 - PPergunta ergunta o nome ao visitante. <!— Inserir este script em qualquer parte da pagina, dentro de (body) —> <BODY> <SCRIPT LANGUAGE=”Javascript”> Escola Secundária S. João do Estoril <!— name=window.prompt(“ Insira o seu nome?”,” ““); document.write(“ <H3 align=center><font color =#006699> Olá “+name+ “ <br> Obrigada pela sua visita </H3> </font> </br>”) //—> </script> </BODY> Paula Cardoso Alcobia - 80 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exercício 5 - Um simples relógio. Escola Secundária S. João do Estoril <!— Inserir este script em qualquer parte da pagina, dentro de (body) —> <BODY> <script language=”Javascript1.2"> <!— if(navigator.appName == “Netscape”) { document.write(‘<layer id=”clock”></layer><br>’); } if (navigator.appVersion.indexOf(“MSIE”) != -1){ document.write(‘<span id=”clock”></span><br>’); } function upclock(){ var dte = new Date(); var hrs = dte.getHours(); var min = dte.getMinutes(); var sec = dte.getSeconds(); var col = “:”; var spc = “ “; var apm; if (12 < hrs) { apm=”PM”; hrs-=12; } else { apm=”AM”; } if (hrs == 0) hrs=12; if (min<=9) min=”0"+min; if (sec<=9) sec=”0"+sec; if(navigator.appName == “Netscape”) { document.clock.document.write(hrs+col+min+col+sec+spc+apm); document.clock.document.close(); } if (navigator.appVersion.indexOf(“MSIE”) != -1){ clock.innerHTML = hrs+col+min+col+sec+spc+apm; } } setInterval(“upclock()”,1000); //—> </script> </BODY> Paula Cardoso Alcobia - 81 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exercício 6 - Botão animado muda de cor e de texto. <HEAD> <SCRIPT LANGUAGE=”JavaScript”> <!— Begin hexColor = [“0”,”1",”2",”3",”4",”5",”6",”7",”8",”9",”a”,”b”,”c”,”d”,”e”,”f ”]; function mOver() { for (i = 0; i < 13; i++) { setTimeout(‘document.myForm.button.style.background = “#’+hexColor[12i]+’0'+hexColor[12-i]+’0c0";’, i * 40); } } function mOut() { document.myForm.button.value = “ Clique Aqui “; for (i = 0; i < 12; i++) { setTimeout(‘document.myForm.button.style.background = “#’+hexColor[i]+’0'+hexColor[i]+’0c0";’, i * 40); } } // End —> </script> </HEAD> <!— Inserir este script em qualquer parte da pagina, dentro de (body) —> <BODY> Escola Secundária S. João do Estoril <form name=myForm> <input type=button name=button value=” Clique Aqui “ onMouseOver=’mOver()’’ onMouseDown=’document.myForm.button.value=” Obrigado!! “‘ onClick=’window.location=”http://1212.page.vu”’ onMouseOut=’mOut()’> </form> </BODY> Paula Cardoso Alcobia - 82 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exercício 7 - Mostrar a resolução do ecrã <!— Inserir este script em qualquer parte da pagina, dentro de (body) —> <BODY> <script language=”Javascript”> <!— document.write(‘A sua resolução é de ‘ + screen.width + ‘ X ‘ + screen.height + ‘ pixels.’) //—> </script> </BODY> Exercício 8 - Abre uma hiperligação sem clicar clicar,, apenas com a passagem do cursor cursor.. <!— Inserir este script em qualquer parte da pagina, dentro de (body) —> <BODY> <a href=”” onmouseover=”parent.location=’http://1211.page.vu’”>Turma 12 do 11º Ano (passe aqui o cursor)</A><SCRIPT LANGUAGE=”JavaScript”> </BODY> Exercício 9 - Menu de navegação <!— Inserir este script em qualquer parte da pagina, dentro de (body) —> <BODY> <form name=”c937"> <p><select name=”c614" size=”1"> <option selected value=”http://1112.page.vu”>Turma 11 12</option> <option value=”http://www.malhatlantica.pt/grupoinfsje/”>Página Grupo de Informática</option> <option value=”http://www.essje.pt”>Página da Escola </option> Escola Secundária S. João do Estoril <option value=”http://www.eusou.com/informatico/”>Eu sou Informático </option> </select> <input type=”button” value=”Ver” onClick=”location=document.c937.c614.options[document.c937.c614.selectedIndex].value”> </p> </form> </BODY> Paula Cardoso Alcobia - 83 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exercício 10 - TTipo ipo de tipo de browser <!— Inserir este script em qualquer parte da pagina, dentro de (body) —> <BODY> <SCRIPT Language=”JavaScript”> document.write(navigator.appName + navigator.appVersion) </script> </BODY> Exercício 11 - TTexto exto colorido Escola Secundária S. João do Estoril <!— Inserir este script em qualquer parte da pagina, dentro de (body) —> <BODY> <h2> <script language=”JavaScript1.2"> var message=” Página da Turma 12 do 12º Ano. Recomende está pagina a um amigo!! “ var neonbasecolor=”blue” var neontextcolor=”red” var flashspeed=100 //in milliseconds ///Nao modificar o resto de script///// var n=0 if (document.all){ document.write(‘<font color=”’+neonbasecolor+’”>’) for (m=0;m<message.length;m++) document.write(‘<span id=”neonlight”>’+message.charAt(m)+’</span>’) document.write(‘</font>’) //cache reference to neonlight array var tempref=document.all.neonlight } else document.write(message) function neon(){ //Change all letters to base color if (n==0){ for (m=0;m<message.length;m++) tempref[m].style.color=neonbasecolor } //cycle through and change individual letters to neon color tempref[n].style.color=neontextcolor if (n<tempref.length-1) n++ else Paula Cardoso Alcobia - 84 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano { n=0 clearInterval(flashing) setTimeout(“beginneon()”,1500) return } } function beginneon(){ if (document.all) flashing=setInterval(“neon()”,flashspeed) } beginneon() </script> </h2> </BODY> Escola Secundária S. João do Estoril Exercício 12 - TTexto exto no status bar bar.. <!— Inserir este script em qualquer parte da pagina, dentro de (body) —> <BODY> <SCRIPT> <!— Hide from old browsers message = “Página Principal da Escola Secundária S. João do Estoril ^” + ”Excelente^” + ”Magnífica ^” + ”Optima^” + ”Mude estas mensagens ...^” + ”^” scrollSpeed = 25 lineDelay = 1500 // Nao modificar o resto de script // txt = “” function scrollText(pos) { if (message.charAt(pos) != ‘^’) { txt = txt + message.charAt(pos) status = txt pauze = scrollSpeed } else { pauze = lineDelay txt = “” if (pos == message.length-1) pos = -1 } pos++ setTimeout(“scrollText(‘“+pos+”’)”,pauze) } // Unhide —> scrollText(0) </SCRIPT> </BODY> Paula Cardoso Alcobia - 85 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exercício 13 - Definir como homepage. <!— Inserir este script em qualquer parte da pagina, dentro de (body) —> <BODY> <!—[if IE]> <a class=”chlnk” style=”cursor:hand;font-weight:bold;color:#004080;fontfamily:Verdana” HREF onClick=”this.style.behavior=’url(#default#homepage)’;this.setHomePage(‘http:// 1112.page.vu’);”> Defenir a página 1112 como homepage! </a> <![endif]—> </BODY> Exercício 14 - Efeito de destaque nas ligações. <HEAD> <script> function highlight(which,color){ if (document.all||document.getElementById) which.style.backgroundColor=color } </script> </HEAD> Escola Secundária S. João do Estoril <!— Inserir a primeira parte do script entre os <HEAD></HEAD> tags. Depois para inserir os links é o resto do script.(Um para cada um dos links.) —> <BODY> <p><a href=”http://1112.page.vu” onMouseover=highlight(this,’yellow ’) onMouseout=”highlight(this,document.bgColor)”>Página da Turma 1112 </a> <p><a href=” http://www.malhatlantica.pt/grupoinfsje/” onMouseover=highlight(this,’yellow’) onMouseout=”highlight(this,document.bgColor)”> Página do Grupo de Informática </a> <p><a href=” http://www.essje.pt” onMouseover=highlight(this,’yellow’) onMouseout=”highlight(this,document.bgColor)”>Escola</a> <p><a href=” http://www.eusou.com/informatico/” onMouseover=highlight(this,’yellow’) onMouseout=”highlight(this,document.bgColor)”> Informático </a> </BODY> Paula Cardoso Alcobia - 86 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exercício 15 - TTexto exto animado tipo ondas. Escola Secundária S. João do Estoril <HEAD> <script language=”JavaScript1.2"> /* Texto animado tipo ondas */ //configure message message=” Página da Turma 12 12!! Recomende esta página a um amigo.” //animate text in NS6? (0 will turn it off) ns6switch=1 var ns6=document.getElementById&&!document.all mes=new Array(); mes[0]=-1; mes[1]=-4; mes[2]=-7;mes[3]=-10; mes[4]=-7; mes[5]=-4; mes[6]=-1; num=0; num2=0; txt=””; function jump0(){ if (ns6&&!ns6switch){ jump.innerHTML=message return } if(message.length > 6){ for(i=0; i != message.length;i++){ txt=txt+”<span style=’position:relative;’ id=’n”+i+”’>”+message.charAt(i)+”</ span>”}; jump.innerHTML=txt; txt=””; jump1a() } else{ alert(“Your message is to short”) } } function jump1a(){ nfinal=(document.getElementById)? document.getElementById(“n0”) : document.all.n0 nfinal.style.left=-num2; if(num2 != 9){ num2=num2+3; setTimeout(“jump1a()”,50) } Paula Cardoso Alcobia - 87 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano else{ jump1b() } } function jump1b(){ nfinal.style.left=-num2; if(num2 != 0){num2=num2-3; setTimeout(“jump1b()”,50) } else{ jump2() } } function jump2(){ txt=””; for(i=0;i != message.length;i++){ if(i+num > -1 && i+num <7){ txt=txt+”<span style=’position:relative;top:”+mes[i+num]+”’>”+message.charAt(i)+”</span>” } else{txt=txt+”<span>”+message.charAt(i)+”</span>”} } jump.innerHTML=txt; txt=””; if(num != (-message.length)){ num—; setTimeout(“jump2()”,50)} else{num=0; setTimeout(“jump0()”,50)}} </script> </HEAD> Escola Secundária S. João do Estoril <!— Inserir a primeira parte do script entre os <HEAD></HEAD> tags . E o resto do script em qualquer parte da pagina, dentro de (body) —> <BODY> <h2><div id=”jumpx” style=”color:blue”></div></h2> <script> if (document.all||document.getElementById){ jump=(document.getElementById)? document.getElementById(“jumpx”) : document.all.jumpx jump0() } else document.write(message) </script> </BODY> Paula Cardoso Alcobia - 88 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exercício 16 - TTexto exto no cursor <HEAD> <STYLE> .spanstyle { position:absolute; visibility:visible; top:-50px; font-size:12pt; font-family:Verdana; font-weight:bold; color:steelblue; } </STYLE> </HEAD> <!— Inserir a primeira parte do script entre os <HEAD></HEAD> tags . E o resto do script em qualquer parte da pagina, dentro de (body) —> <BODY> <script> var message=”Paula Cardoso Alcobia!!!”.split(“”); var x; var y; var step=15; var xpos=new Array(); var ypos=new Array(); Escola Secundária S. João do Estoril function mouseMoved(e){ x = (document.layers) ? e.pageX : document.body.scrollLeft+event.clientX; y = (document.layers) ? e.pageY : document.body.scrollTop+event.clientY; } function makesnake() { var thisspan; for (var i=message.length-1; i>=0; i—) { xpos[i]=xpos[i-1]+step; ypos[i]=ypos[i-1]; } xpos[0]=x+step; ypos[0]=y; Paula Cardoso Alcobia - 89 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano for (var i in message) { if (document.all) { thisspan = eval(“span”+(i)+”.style”); thisspan.posLeft=xpos[i]; thisspan.posTop=ypos[i]; } else if (document.layers) { thisspan = eval(“document.span”+i); thisspan.left=xpos[i]; thisspan.top=ypos[i]; } } } var timer = null; function startSnake() { for (var i in message) { xpos[i]=-50; ypos[i]=-50; } setTimeout(‘timer=setInterval(“makesnake()”,30);’,1000); } startSnake(); for (var i in message) { document.write(“<span id=’span”+i+”’ class=’spanstyle’>”) document.write(message[i]); document.write(“</span>”); } if (document.layers) { document.captureEvents(Event.MOUSEMOVE); } document.onmousemove = mouseMoved; </script> Escola Secundária S. João do Estoril </BODY> Paula Cardoso Alcobia - 90 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exercício 17 - TTexto exto no cursor (outra versão). <HEAD> <STYLE> .spanstyle { position:absolute; visibility:visible; top:-50px; font-size:12pt; font-family:Verdana; font-weight:bold; color:steelblue; } </STYLE> </HEAD> <!— Inserir a primeira parte do script entre os <HEAD></HEAD> tags . E o resto do script em qualquer parte da pagina, dentro de (body) —> Escola Secundária S. João do Estoril <BODY> <script> var message=” LOLLLLLLLLLLLLLL”.split(“”); var x; var y; var step=-15; var xpos=new Array(); var ypos=new Array(); function mouseMoved(e){ x = (document.layers) ? e.pageX : document.body.scrollLeft+event.clientX; y = (document.layers) ? e.pageY : document.body.scrollTop+event.clientY; } function makesnake() { var thisspan; for (var i=message.length-1; i>=0; i—) { xpos[i]=xpos[i-1]+step; ypos[i]=ypos[i-1]; } xpos[0]=x+step; ypos[0]=y; for (var i in message) { if (document.all) { thisspan = eval(“span”+(i)+”.style”); thisspan.posLeft=xpos[i]; thisspan.posTop=ypos[i]; Paula Cardoso Alcobia - 91 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano } else if (document.layers) { thisspan = eval(“document.span”+i); thisspan.left=xpos[i]; thisspan.top=ypos[i]; } } } var timer = null; function startSnake() { for (var i in message) { xpos[i]=-50; ypos[i]=-50; } setTimeout(‘timer=setInterval(“makesnake()”,30);’,1000); } startSnake(); for (var i in message) { document.write(“<span id=’span”+i+”’ class=’spanstyle’>”) document.write(message[i]); document.write(“</span>”); } if (document.layers) { document.captureEvents(Event.MOUSEMOVE); } document.onmousemove = mouseMoved; Escola Secundária S. João do Estoril </script> Paula Cardoso Alcobia - 92 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exercício 18 - As coordenadas do rato <HEAD> <form name=”Show”> X <input type=”text” name=”MouseX” value=”0" size=”4"><br> Y <input type=”text” name=”MouseY” value=”0" size=”4"><br> </form> </HEAD> <!— Inserir a primeira parte do script entre os <HEAD></HEAD> tags . E o resto do script em qualquer parte da pagina, dentro de (body) —> Escola Secundária S. João do Estoril <BODY> <script language=”JavaScript1.2"> <!— Begin var IE = document.all?true:false; if (!IE) document.captureEvents(Event.MOUSEMOVE) document.onmousemove = getMouseXY; var tempX = 0; var tempY = 0; function getMouseXY(e) { if (IE) { // grab the x-y pos.s if browser is IE tempX = event.clientX + document.body.scrollLeft; tempY = event.clientY + document.body.scrollTop; } else { // grab the x-y pos.s if browser is NS tempX = e.pageX; tempY = e.pageY; } if (tempX < 0){tempX = 0;} if (tempY < 0){tempY = 0;} document.Show.MouseX.value = tempX; document.Show.MouseY.value = tempY; return true; } // End —> </script> </BODY> Paula Cardoso Alcobia - 93 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exercício 19 – R elógio com data e hora do sistema Relógio <SCRIPT language=JavaScript> dCol=’000000';//date colour. fCol=’000000';//face colour. sCol=’000000';//seconds colour. mCol=’000000';//minutes colour. hCol=’000000';//hours colour. ClockHeight=50; ClockWidth=50; ClockFromMouseY=0; ClockFromMouseX=100; d=new Array(“DOMINGO”,”SEGUNDA”,”TERCA”,”QUARTA”,”QUINTA”,”SEXTA”,”SABADO”); m=new Array(“JANEIRO”,”FEVEREIRO”,”MARCO”,”ABRIL”,”MAIO”, ”JUNHO”,”JULHO”,”AGOSTO”,”SETEMBRO”,”OUTUBRO”,”NOVEMBRO”,”DEZEMBRO”); date=new Date(); day=date.getDate(); year=date.getYear(); if (year < 2000) year=year+1900; TodaysDate=” “+d[date.getDay()]+” “+day+” “+m[date.getMonth()]+” “+year; D=TodaysDate.split(‘’); H=’...’; H=H.split(‘’); M=’....’; M=M.split(‘’); Escola Secundária S. João do Estoril S=’.....’; S=S.split(‘’); Face=’1 2 3 4 5 6 7 8 9 10 11 12'; font=’Arial’; size=1; speed=0.6; ns=(document.layers); Paula Cardoso Alcobia - 94 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano ie=(document.all); Face=Face.split(‘ ‘); n=Face.length; a=size*10; ymouse=0; xmouse=0; scrll=0; props=”<font face=”+font+” size=”+size+” color=”+fCol+”><B>”; props2=”<font face=”+font+” size=”+size+” color=”+dCol+”><B>”; Split=360/n; Dsplit=360/D.length; HandHeight=ClockHeight/4.5 HandWidth=ClockWidth/4.5 HandY=-7; HandX=-2.5; scrll=0; step=0.06; currStep=0; y=new Array();x=new Array();Y=new Array();X=new Array(); for (i=0; i < n; i++){y[i]=0;x[i]=0;Y[i]=0;X[i]=0} Dy=new Array();Dx=new Array();DY=new Array();DX=new Array(); for (i=0; i < D.length; i++){Dy[i]=0;Dx[i]=0;DY[i]=0;DX[i]=0} if (ns){ for (i=0; i < D.length; i++) document.write(‘<layer name=”nsDate’+i+’” top=0 left=0 height=’+a+’ width=’+a+’><center>’+props2+D[i]+’</font></center></layer>’); Escola Secundária S. João do Estoril for (i=0; i < n; i++) document.write(‘<layer name=”nsFace’+i+’” top=0 left=0 height=’+a+’ width=’+a+’><center>’+props+Face[i]+’</font></center></layer>’); for (i=0; i < S.length; i++) document.write(‘<layer name=nsSeconds’+i+’ top=0 left=0 width=15 height=15><font face=Arial size=3 color=’+sCol+’><center><b>’+S[i]+’</ b></center></font></layer>’); Paula Cardoso Alcobia - 95 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano for (i=0; i < M.length; i++) document.write(‘<layer name=nsMinutes’+i+’ top=0 left=0 width=15 height=15><font face=Arial size=3 color=’+mCol+’><center><b>’+M[i]+’</ b></center></font></layer>’); for (i=0; i < H.length; i++) document.write(‘<layer name=nsHours’+i+’ top=0 left=0 width=15 height=15><font face=Arial size=3 color=’+hCol+’><center><b>’+H[i]+’</ b></center></font></layer>’); } if (ie){ document.write(‘<div id=”Od” style=”position:absolute;top:0px;left:0px”><div style=”position:relative”>’); for (i=0; i < D.length; i++) document.write(‘<div id=”ieDate” style=”position:absolute;top:0px;left:0;height:’+a+’;width:’+a+’;textalign:center”>’+props2+D[i]+’</B></font></div>’); document.write(‘</div></div>’); document.write(‘<div id=”Of ” style=”position:absolute;top:0px;left:0px”><div style=”position:relative”>’); for (i=0; i < n; i++) document.write(‘<div i d = ” i e Fa c e ” style=”position:absolute;top:0px;left:0;height:’+a+’;width:’+a+’;textalign:center”>’+props+Face[i]+’</B></font></div>’); document.write(‘</div></div>’); document.write(‘<div id=”Oh” style=”position:absolute;top:0px;left:0px”><div style=”position:relative”>’); for (i=0; i < H.length; i++) Escola Secundária S. João do Estoril document.write(‘<div id=”ieHours” style=”position:absolute;width:16px;height:16px;font-family:Arial;fontsize:16px;color:’+hCol+’;text-align:center;font-weight:bold”>’+H[i]+’</div>’); document.write(‘</div></div>’); document.write(‘<div id=”Om” style=”position:absolute;top:0px;left:0px”><div style=”position:relative”>’); for (i=0; i < M.length; i++) document.write(‘<div id=”ieMinutes” style=”position:absolute;width:16px;height:16px;font-family:Arial;fontsize:16px;color:’+mCol+’;text-align:center;font-weight:bold”>’+M[i]+’</div>’); Paula Cardoso Alcobia - 96 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano document.write(‘</div></div>’) document.write(‘<div id=”Os” style=”position:absolute;top:0px;left:0px”><div style=”position:relative”>’); for (i=0; i < S.length; i++) document.write(‘<div id=”ieSeconds” style=”position:absolute;width:16px;height:16px;font-family:Arial;fontsize:16px;color:’+sCol+’;text-align:center;font-weight:bold”>’+S[i]+’</div>’); document.write(‘</div></div>’) } (ns)?window.captureEvents(Event.MOUSEMOVE):0; function Mouse(evnt){ ymouse = ( n s ) ? e v n t . p a g e Y + C l o c k Fr o m M o u s e Y(window.pageYOffset):event.y+ClockFromMouseY; xmouse = (ns)?evnt.pageX+ClockFromMouseX:event.x+ClockFromMouseX; } (ns)?window.onMouseMove=Mouse:document.onmousemove=Mouse; function ClockAndAssign(){ time = new Date (); secs = time.getSeconds(); sec = -1.57 + Math.PI * secs/30; mins = time.getMinutes(); min = -1.57 + Math.PI * mins/30; hr = time.getHours(); hrs = -1.575 + Math.PI * hr/6+Math.PI*parseInt(time.getMinutes())/360; if (ie){ Od.style.top=window.document.body.scrollTop; Escola Secundária S. João do Estoril Of.style.top=window.document.body.scrollTop; Oh.style.top=window.document.body.scrollTop; Om.style.top=window.document.body.scrollTop; Os.style.top=window.document.body.scrollTop; } Paula Cardoso Alcobia - 97 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano for (i=0; i < n; i++){ var F=(ns)?document.layers[‘nsFace’+i]:ieFace[i].style; F.top=y[i] + ClockHeight*Math.sin(-1.0471 + i*Split*Math.PI/180)+scrll; F.left=x[i] + ClockWidth*Math.cos(-1.0471 + i*Split*Math.PI/180); } for (i=0; i < H.length; i++){ var HL=(ns)?document.layers[‘nsHours’+i]:ieHours[i].style; HL.top=y[i]+HandY+(i*HandHeight)*Math.sin(hrs)+scrll; HL.left=x[i]+HandX+(i*HandWidth)*Math.cos(hrs); } for (i=0; i < M.length; i++){ var ML=(ns)?document.layers[‘nsMinutes’+i]:ieMinutes[i].style; ML.top=y[i]+HandY+(i*HandHeight)*Math.sin(min)+scrll; ML.left=x[i]+HandX+(i*HandWidth)*Math.cos(min); } for (i=0; i < S.length; i++){ var SL=(ns)?document.layers[‘nsSeconds’+i]:ieSeconds[i].style; SL.top=y[i]+HandY+(i*HandHeight)*Math.sin(sec)+scrll; SL.left=x[i]+HandX+(i*HandWidth)*Math.cos(sec); } for (i=0; i < D.length; i++){ Escola Secundária S. João do Estoril var DL=(ns)?document.layers[‘nsDate’+i]:ieDate[i].style; DL.top=Dy[i] + ClockHeight*1.5*Math.sin(currStep+i*Dsplit*Math.PI/180)+scrll; DL.left=Dx[i] + ClockWidth*1.5*Math.cos(currStep+i*Dsplit*Math.PI/180); } currStep-=step; } Paula Cardoso Alcobia - 98 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano function Delay(){ scrll=(ns)?window.pageYOffset:0; Dy[0]=Math.round(DY[0]+=((ymouse)-DY[0])*speed); Dx[0]=Math.round(DX[0]+=((xmouse)-DX[0])*speed); for (i=1; i < D.length; i++){ Dy[i]=Math.round(DY[i]+=(Dy[i-1]-DY[i])*speed); Dx[i]=Math.round(DX[i]+=(Dx[i-1]-DX[i])*speed); } y[0]=Math.round(Y[0]+=((ymouse)-Y[0])*speed); x[0]=Math.round(X[0]+=((xmouse)-X[0])*speed); for (i=1; i < n; i++){ y[i]=Math.round(Y[i]+=(y[i-1]-Y[i])*speed); x[i]=Math.round(X[i]+=(x[i-1]-X[i])*speed); } ClockAndAssign(); setTimeout(‘Delay()’,20); } if (ns||ie)window.onload=Delay; </SCRIPT> Escola Secundária S. João do Estoril </BODY> Paula Cardoso Alcobia - 99 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exercício 20 - Colocar a data actual <script> <!— var now = new Date(); var days = new Array(‘Domingo’,’Segunda-Feira’,’Terça-Feira’,’Quarta-feira’,’QuintaFeira’,’Sexta-Feira’,’Sábado’); var months = new Array(‘Janeiro’,’Fevereiro’,’Março’,’Abril’,’Maio’,’Junho’,’Julho’,’Agosto’,’Setembro’,’Outubro’,’Novembro’,’Dezembro’); var date = ((now.getDate()<10) ? “0” : “”)+ now.getDate(); function fourdigits(number) { return (number < 1000) ? number + 1900 : number; } today = days[now.getDay()] + “,” + date+ “ de “+ months[now.getMonth()] + “,” +(fourdigits(now.getYear())) ; document.write(“” +today); Escola Secundária S. João do Estoril //—></script> Paula Cardoso Alcobia - 100 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Exercício 21 - desactiva o uso do botão direito do rato, impedindo assim algumas das funcionalidades que no IE ou no Netscape permitem (copiar imagens ou páginas) <SCRIPT language=JavaScript> <!— Hide from old browsers document.onmousedown = checkClick if (document.layers){ document.captureEvents(Event.MOUSEDOWN) } function checkClick(ev) { if (navigator.appName == “Netscape”){ i f ( e v.which != 1) { alert(“Botão direito do rato desactivado.”) return false } } else{ if (event.button != 1){ alert(“Botão direito do rato desactivado.”) return false } } } // —> </SCRIPT> Sites com vários scripts em Javascript: http://www.w3schools.com/js/default.asp Escola Secundária S. João do Estoril http://www.scriptfacil.com/ Paula Cardoso Alcobia - 101 - Curso Tecnológico de Informática - Aplicações Informáticas A - 11º Ano Bibliografia Livros: - Fonseca, Dalila. Pacheco, Deolinda. Marques, Fernandes e Soares, Ricardo. Curso Tecnológico de Informática - 11º Ano- Aplicações Informáticas A. Porto Editora. Páginas da web: http://www.cm-braganca.pt/document/448112/503209.pdf-truque e dicas http://www.deetc.isel.ipl.pt/programacao/TI/Documentacao/JavaScript/ ClientGuideJS13/index.htm http://pt.wikipedia.org/ http://www.w3schools.com/js/default.asp Escola Secundária S. João do Estoril http://www.scriptfacil.com/ Paula Cardoso Alcobia - 102 -