JavaScript (Galego)

Na programación tradicional, as aplicacións son executadas de xeito secuencial de principio a fin de producir os seus resultados. Non obstante, na actualidade o modelo predominante é o da programación baseada en eventos. Os scripts e programas esperan sen facer ningunha tarefa ata que se produza un evento. Unha vez producido, executan algunha tarefa asociada á aparición dese evento e cando conclúe, o script ou o programa retorna ao estado de espera.

JavaScript permite scripts con ambos os métodos de programación: secuencial e baseado en eventos. Os eventos de JavaScript permiten a interacción entre aplicacións e usuarios de JavaScript. Cada vez que se preme un botón, ocorre un evento. Cada vez que se preme unha chave, tamén se produce un evento. Non obstante, para que se produza un evento, non é obrigatorio que o usuario intervén, xa que por exemplo, cada vez que se carga unha páxina, tamén se produce un evento.

Domingo Nivel 1 non inclúe especificacións relacionadas con Eventos de JavaScript. Domingo Nivel 2 inclúe determinados aspectos relacionados cos eventos e DOM Nivel 3 inclúe a especificación completa dos eventos de JavaScript. Desafortunadamente, a especificación DOM Nivel 3 foi publicada en 2004, máis de dez anos despois de que os primeiros navegadores incluían eventos.

Por este motivo, moitas das propiedades e métodos actuais relacionados cos eventos son incompatibles cos de Sun .. De feito, os navegadores como Internet Explorer tratan os eventos despois do seu propio modelo incompatible co estándar.

O modelo de evento sinxelo foi introducido na versión 4 do estándar HTML e considérase parte do nivel de DOM máis básico. Aínda que as súas características son limitadas, é o único modelo que é compatible con todos os navegadores e, polo tanto, o único que permite crear aplicacións que funcionen do mesmo xeito en todos os navegadores.

15.1 Tipos de eventos

Cada elemento XHTML ten a súa propia lista de eventos posibles que se poden asignar. O mesmo tipo de evento (por exemplo, premendo no botón esquerdo do rato) pode definirse para varios elementos XHTML eo mesmo elemento XHTML pode ter diferentes eventos asociados.

O nome dos eventos está construído a través do prefixo on, seguido do nome en inglés da acción asociada ao evento. Así, o evento de facer clic nun elemento co rato é chamado onclick eo evento asociado co movemento do rato se chama onmousemove.

A seguinte táboa resume os eventos máis importantes definidos por JavaScript:

evento Descrición elementos para os que está definido
onblur un elemento perde o <button>, <input>, , <select>, ,
onchange Un elemento foi modificado <input>, <select>, <textarea>
onclick Prema e solte o rato Todos elementos
ondblclick Prema dúas veces nunha fila co rato Todos os elementos
onfocus Un elemento recibe o foco <button>, <input>, <label>, <select>, <textarea>,
onkeydown Prema unha tecla e non a libera elementos de formulario e
onkeypress Prema A Elementos do formulario e
onkeyup Liberar unha tecla pulsada Elementos do formulario e
onload Páxina totalmente cargada
onmousedown Prema un botón do rato e non o libere Todos os elementos
onmousemove Mover o Rato Todos os elementos
onmouseout o rato “follas” de Todos os elementos
onmouseover o rato “entra” no elementos
onmouseup solte o botón do rato Todos elementos
onreset Inicializar o formulario <form>
onresize Modificar o tamaño da xanela
onselect Seleccione un texto <input>,
onsubmit Enviar a
onunload A páxina está abandonada, por exemplo ao pechar o navegador Dor

Os eventos máis utilizados nas aplicacións web tradicionais son onload para agardar a páxina completa da páxina, eventos onclick, onmouseover, onmouseout para controlar o rato e onsubmit para controlar o envío do Formularios.

Algúns eventos da táboa anterior (onclick, onkeydown, , onreset, onsubmit) permítelle evitar “acción predeterminada” dese evento. Máis tarde, este comportamento móstrase en detalle, que pode ser moi útil nalgunhas técnicas de programación.

Accións típicas que un usuario realiza nunha páxina web pode levar a unha sucesión de eventos. Premendo por exemplo nun tipo son activados onmousedown, onclick, onmouseup e onsubmit consecutivamente.

15.1.1 Xestores de eventos

Un evento de JavaScript por si só carece de utilidade. Para que os eventos sexan útiles, deben asociarse funcións ou código de JavaScript con cada evento. Deste xeito, cando se produce un evento, o código indicado execútase, polo que a aplicación pode responder a calquera evento que se produza durante a execución.

As funcións ou código JavaScript que están definidas para cada evento que se chaman eventos Xerente (manipuladores de eventos en inglés) e como Javascript é un idioma moi flexible, hai varias formas diferentes de indicar os manipuladores:

  • manipuladores como atributos dos elementos XHTML.
  • Manipuladores como funcións de JavaScript externo.
  • “manipuladores semánticos”.

15.1.1.1 manipuladores como os atributos XHTML

Este é o método máis sinxelo e menos profesional de indicar o código JavaScript que debe ser executado cando ocorre un evento. Neste caso, o código está incluído nun atributo do propio elemento XHTML. No seguinte exemplo, quere mostrar unha mensaxe cando o usuario perfore co rato sobre un botón:

<input type="button" value="Pinchame y verás" onclick="console.log('Gracias por pinchar');" />

Neste Método, os atributos XHTML están definidos co mesmo nome que os eventos que desexa manexar. O exemplo anterior só quere controlar o evento de pinchazo co rato, cuxo nome é onclick. Así, o elemento XHTML para o que desexa definir este evento, debe incluír un atributo chamado onclick.

O contido do atributo é unha cadea de texto que contén Todas as instrucións de JavaScript executadas cando ocorre o evento. Neste caso, o código JavaScript é moi sinxelo (console.log('Gracias por pinchar');), xa que só se trata de mostrar unha mensaxe.

Neste outro exemplo, cando o usuario faga clic en No elemento

Mostra unha mensaxe e cando o usuario pasa o rato sobre o elemento, aparece outra mensaxe:

<div onclick="console.log('Has pinchado con el ratón');" onmouseover="console.log('Acabas de pasar el ratón por encima');"> Puedes pinchar sobre este elemento o simplemente pasar el ratón por encima</div>

Este outro exemplo inclúe unha das instrucións máis utilizadas nas aplicacións máis antigas de JavaScript:

<body onload="console.log('La página se ha cargado completamente');"> ...</body>

A mensaxe anterior amósase despois de que a páxina está totalmente cargada, é dicir, despois de que o seu código HTML foi descargado, as súas imaxes e calquera outro obxecto incluído na páxina.

O evento é un dos máis utilizados desde entón, como se ve no capítulo DOM, as funcións que permiten o acceso e manipula os nodos de árbores DOM só están dispoñibles cando a páxina foi cargada complexa Tarically.

15.1.1.2 Xestores de eventos e variable Esta

JavaScript define unha variable especial chamada this que se crea automaticamente e iso é Emprega nalgunhas técnicas avanzadas de programación. Nos eventos, pode usar a variable this para referirse ao elemento XHTML que causou o evento. Esta variable é moi útil para exemplos como o seguinte:

Cando o usuario pasa o rato sobre o <div>, a cor do bordo móstrase negro. Cando o rato deixa o <div>, o bordo aparece de novo coa cor gris clara orixinal.

<div style="width:150px; height:60px; border:thin solid silver"> Sección de contenidos...</div>

/ div>

Se a variable non se usa this, o código necesario para modificar a cor dos bordos, sería o seguinte:

O código anterior é demasiado longo e moi propenso a cometer erros. Dentro do código dun evento, JavaScript crea automaticamente a variable this, que se refire ao elemento XHTML que causou o evento. Así, o exemplo anterior pode ser reescrito do seguinte xeito:

<div style="width:150px; height:60px; border:thin solid silver" onmouseover="this.style.borderColor='black';" onmouseout="this.style.borderColor='silver';"> Sección de contenidos...</div>

O código anterior é moito máis compacto, máis fácil de ler e escribir e seguir traballo correctamente, aínda que o valor do atributo ID de <div>.

15.1.1.3 Xestores de eventos como funcións externas

A definición de manipuladores de eventos nos atributos XHTML é un método sinxelo pero sen compensación para xestionar eventos de JavaScript. O principal inconveniente é que é complicado en exceso axiña que se engaden algunhas instrucións, polo que só se recomenda para os casos máis simples.

Cando o código da función de manexo é máis complexo, como o Validación dun formulario, é aconsellable agrupar todo o código JavaScript nunha función externa invocada desde o código XHTML cando ocorre o evento.

Deste xeito, o seguinte exemplo:

<input type="button" value="Pinchame y verás" onclick="console.log('Gracias por pinchar');" />

pode ser transformado en:

function muestraMensaje() { console.log('Gracias por pinchar');}

<input type="button" value="Pinchame y verás" onclick="muestraMensaje()" />

en funcións externas Non é posible usar a variable this do mesmo xeito que en Os manipuladores inseridos nos atributos XHTML. Polo tanto, é necesario pasar a variable this como parámetro para a función de manipulación:

function resalta(elemento) { switch(elemento.style.borderColor) { case 'silver': case 'silver silver silver silver': case '#c0c0c0': elemento.style.borderColor = 'black'; break; case 'black': case 'black black black black': case '#000000': elemento.style.borderColor = 'silver'; break; }}

No exemplo anterior, a función externa pasa o parámetro this que Dentro da función chámase elemento. Pasando this como parámetro, é posible acceder directamente desde a función externa ás propiedades do elemento que provocou o evento.

Por outra banda, o exemplo anterior é complicado pola forma en que os diferentes navegadores almacenan o valor da propiedade borderColor. Mentres as tendas de Firefox (no caso de que os catro bordos coincidan coa cor) o valor simple black, Internet Explorer almacena-lo como black black black black e ópera almacena o seu hexadecimal representación #000000.

15.1.1.4 manipuladores de eventos semánticos

Utilizar os atributos XHTML ou as funcións externas para engadir xestores de eventos teñen un inconveniente grave : “Incrustar” o código XHTML da páxina.

Como se sabe, ao crear páxinas web recoméndase separar os contidos (XHTML) da presentación (CSS). Tanto como sexa posible, tamén se recomenda separar os contidos (XHTML) da programación (JavaScript). Mestura Javascript e XHTML excesivamente complica o código fonte da páxina, fai que o seu mantemento sexa difícil e reduce a semántica do documento final producido.

Afortunadamente, hai un método alternativo para definir os controladores de eventos de JavaScript. Esta técnica é asignar funcións externas utilizando as propiedades DOM dos elementos XHTML. Así, o seguinte exemplo:

<input type="button" value="Pinchame y verás" onclick="console.log('Gracias por pinchar');" />Se puede transformar en:

function muestraMensaje() { console.log('Gracias por pinchar');}document.getElementById("pinchable").onclick = muestraMensaje;

<input type="button" value="Pinchame y verás" />

O código XHTML resultante é moi “limpo”, xa que non se mestura co código JavaScript. A técnica de xestores semánticos consta de:

  1. Asignar un identificador único ao elemento XHTML usando o atributo de identificación.
  2. Crear unha función de JavaScript encargada de manipular o evento.
  3. Asignar a función a un evento específico do elemento XHTML usando DOM.

Outra vantaxe adicional desta técnica é que as funcións externas poden usar a variable this referido ao elemento que o evento orixinal.

Asignar a función de manipular Usando DOM é un proceso que require unha explicación detallada. En primeiro lugar, obtén a referencia do elemento ao que se asignará o controlador:

document.getElementById("pinchable");

Seguinte, está asignado a Función externa ao evento desexado mediante unha propiedade de elemento co mesmo nome do evento:

document.getElementById("pinchable").onclick = ...

Finalmente, o externo Función. Como xa se mencionou nos capítulos anteriores, o máis importante (e a causa máis común de erros) é indicar só o nome da función, é dicir, dispensar os parénteses asignando a función:

Se se engaden os parénteses ao final, a función está a ser invocada e asignada o valor devolto pola función ao evento onclick.

O único inconveniente deste método é que os manipuladores están asignados usando as funcións DOM, que só se poden usar despois de que a páxina fose totalmente cargada. Deste xeito, de xeito que a asignación dos manipuladores non é errónea, é necesario asegurarse de que a páxina xa foi cargada.

Unha das formas máis sinxelas de garantir que un determinado código vai Executarse despois de que a páxina está completamente cargada é usar o evento onload:

window.onload = function() { document.getElementById("pinchable").onclick = muestraMensaje;}

A arte anterior utiliza unha función anónima para asignar algunhas instrucións ao evento onload da páxina (neste caso foi definido polo obxecto ). Deste xeito, para garantir que un determinado código será executado despois de cargar a páxina, só é necesario incluílo dentro da próxima construción:

window.onload = function() { ...}

15.2 O fluxo de eventos

Ademais dos eventos básicos que se viron, os navegadores inclúen un mecanismo relacionado chamado fluxo de eventos ou “fluxo de evento”. O fluxo de eventos permite que varios elementos diferentes poidan responder ao mesmo evento.

Se un elemento <div> cun botón defínese no seu interior cando o usuario faga clic en O botón, o navegador permítelle asignar unha función de resposta de botón, outra función de resposta ao <div> que o contén e outra función de resposta á páxina completa. Deste xeito, un único evento (a pulsación dun botón) provoca a resposta de tres elementos na páxina (incluída a páxina en si).

A orde na que se executan os eventos asignados a cada elemento a páxina é o que constitúe o fluxo de eventos. Ademais, hai moitas diferenzas no fluxo de eventos de cada navegador.

15.2.1 Evento burbulla

Neste modelo de fluxo de eventos, a orde que se segue é do elemento máis específico para o elemento menos específico.

Nos seguintes exemplos, úsase a seguinte páxina HTML:

<html onclick="procesaEvento()"> <head><title>Ejemplo de flujo de eventos</title></head> <body onclick="procesaEvento()"> <div onclick="procesaEvento()">Pincha aqui</div> </body></html>

cando se preme no texto “Prema aquí” que está dentro do <div>, os seguintes eventos execútanse na orde que mostra o seguinte esquema:

"Evento burbbling" Réxime de operación"event bubbling"

Figura 15.1 “Evento burbbling” Operation Scheme

O primeiro evento que se ten en conta é o que xerou o que contén a mensaxe. A continuación, o navegador executa os ascendentes do elemento ata que alcance o nivel superior, que é o elemento

.

Este modelo de fluxo de eventos é o que inclúe o Internet Explorer Navegador. Os navegadores da familia Mozilla (por exemplo Firefox) tamén apoian este modelo, pero ligeramente modificados. O exemplo anterior nun navegador de familia Mozilla presenta o seguinte fluxo de eventos:

"Evento burbulling" esquema de operación en navegadores de Mozilla"event bubbling" en los navegadores de Mozilla

Figura 15.2 “Bubling de eventos “Esquema de operación en navegadores de Mozilla

Aínda que o obxecto non forma parte do DOM, o fluxo de eventos implementados por Mozilla viaxan os ascendentes do elemento ata o mesmo obxecto , engadindo un evento máis ao modelo de Internet Explorer.

15.2.2 Captura de eventos

Nesa outra Modelo, o fluxo de eventos defínese a partir do elemento menos específico ao elemento máis específico. Noutras palabras, o mecanismo definido é precisamente o contrario do “evento burbulling”. Este modelo foi usado polo navegador NetScape Netscape NetScape Navegador de Netscape 4.0.

15.2.3 Eventos DOM

O fluxo de eventos definido na especificación do sol apoia a burbulla e a captura, pero o “evento” Capturar “corre primeiro. Os dous fluxos de eventos percorren todos os obxectos DOM do obxecto document ao elemento máis específico e viceversa. Ademais, a maioría dos navegadores implementan os estándares, o fluxo continúa ata o obxecto .

O fluxo de evento DOM desde o exemplo anterior amósase a continuación:

Esquema de fluxo de eventos do modelo DOM

Figura 15.3 Esquema de fluxo de eventos do modelo DOM

o máis específico O elemento do fluxo do evento non é o <div> que desencadea a execución dos eventos, pero o tipo nodo TextNode que contén a <div>. O feito de combinar os dous fluxos de eventos, fai que o nodo máis específico execute consecutivamente dous eventos.

15.3 manipuladores e oíntes

Nas seccións anteriores o concepto foi introducido desde “Manipulador de eventos “O manipulador de eventos, que son as funcións que responden a eventos que ocorren. Ademais, tres formas de definir os manipuladores de eventos foron vistos para o modelo de evento básico:

  1. Código JavaScript dentro dun atributo do elemento HTML
  2. Definición do evento no HTML elemento en si, pero o controlador é unha función externa
  3. manipuladores semánticos asignados a través do sol sen a necesidade de modificar o código HTML da páxina

calquera destes modelos funciona correctamente en Todos os navegadores dispoñibles hoxe. As diferenzas entre os navegadores xorden cando máis dun manipulador de eventos defínese para o mesmo evento dun elemento. A forma de asignar e “disascar” as asas múltiples depende completamente do navegador usado.

15.3.1 DOM Evento Manipuladores

A especificación SDI define outros dous métodos similares aos dispoñibles para Internet Explorador e chamado addEventListener() e removeEventListener() para asociar e disociar os manipuladores de eventos.

A principal diferenza entre estes métodos E o anterior é que neste caso son necesarios tres parámetros: o nome do “oínte de eventos”, unha referencia á función responsable do procesamento do evento e do tipo de fluxo de eventos aos que se aplica.

O primeiro argumento non é o nome completo do evento como ocorre no modelo de Internet Explorer, pero ten que eliminar o prefixo on. Noutras palabras, se en Internet Explorer o nome onclick agora será usado click.

O terceiro parámetro é true, o controlador úsase na fase de captura. Se o terceiro parámetro é false, o controlador está asociado coa fase de burbullas.

A continuación, os exemplos anteriores amósanse utilizando os métodos definidos por DOM:

function muestraMensaje() { console.log("Has pulsado el ratón");}var elDiv = document.getElementById("div_principal");elDiv.addEventListener("click", muestraMensaje, false); // Más adelante se decide desasociar la función al eventoelDiv.removeEventListener("click", muestraMensaje, false);

asociando múltiples Funcións a un único evento:

function muestraMensaje() { console.log("Has pulsado el ratón");} function muestraOtroMensaje() { console.log("Has pulsado el ratón y por eso se muestran estos mensajes");} var elDiv = document.getElementById("div_principal");elDiv.addEventListener("click", muestraMensaje, true);elDiv.addEventListener("click", muestraOtroMensaje, true);

Se unha función está asociada a un fluxo de evento dado, que a función só pode ser disociada en o mesmo tipo de fluxo de eventos. Se se considera o seguinte exemplo:

function muestraMensaje() { console.log("Has pulsado el ratón");} var elDiv = document.getElementById("div_principal");elDiv.addEventListener("click", muestraMensaje, false); // Más adelante se decide desasociar la función al eventoelDiv.removeEventListener("click", muestraMensaje, true);

Os últimos intentos de instrucións de disciar a función No fluxo de eventos de captura, mentres que ao asocialo, indicouno o fluxo de eventos burbullas. Aínda que a execución da aplicación non se detén e non se produce ningún erro, a última instrución non ten ningún efecto.

15.4 O evento

Cando ocorre un evento, non é suficiente con asignar unha función responsable do procesamento deste evento. Normalmente, a función que procesa o evento necesita información sobre o evento producido: a clave que foi presionada, a posición do rato, o elemento que produciu o evento, etc.

o obxecto é o mecanismo definido polos navegadores para proporcionar toda esa información. É un obxecto que se crea automaticamente cando ocorre un evento e que é destruído automaticamente cando se executaron todas as funcións asignadas ao evento.

O domingo especifica que o obxecto event é o único parámetro que debe ir ás funcións responsables do procesamento de eventos. Polo tanto, en navegadores que seguen os estándares, pódese acceder ao obxecto event a través da matriz dos argumentos da función:

Tamén se pode indicar o argumento de nome explícitamente:

elDiv.onclick = function(event) { ...}

o O funcionamento dos navegadores que seguen os estándares poden parecer “máxicos”, xa que na Declaración da función indícase que ten un parámetro, pero na aplicación non se transmite ningún parámetro a esa función. En realidade, os navegadores que seguen os estándares crean automaticamente ese parámetro e sempre o pasan á función encargada de manexar o evento.

15.4.1 Propiedades e métodos

Aínda que o mecanismo definido por Os navegadores para o obxecto event son similares, hai moitas diferenzas axiña que as propiedades e métodos do obxecto.

15.4.1.1 Propiedades definidas por dom

A seguinte táboa recolle as propiedades definidas para o “DIV id =” CAC86E0226 “obxecto> nos navegadores que seguen os estándares:

TD

detail

tr id = “abd5d590ba”> prodúcese

propiedade / método devolve Descrición
altKey booleano Devolve Se a tecla

e false Noutro caso

booleano indica se o evento pertence ao fluxo de eventos de burbullas
button número enteiro o botón do rato que foi presionado.Valores posibles: 0 – sen botón presionado 1 presionado izquierdo 2 – Se ha pulsado el botón derecho 3 – Se pulsan a la vez el botón izquierdo y el derecho 4 – Se ha pulsado el botón central 5 – Se pulsan a la vez el botón izquierdo y el central 6 – Se pulsan a la vez el botón derecho y el central 7` – preséntanse ao mesmo tempo o 3
cancelable booleano indica se o evento pode cancelar
cancelBubble booleano indica se o fluxo de eventos de tipo burbulling
parou charCode Número enteiro O código de carácter Unicode correspondente á tecla pulsada
clientX Número completo Coordina X da posición do rato con respecto á área visible do
número enteiro coordenada e a posición do rato re Esbozo da área visible do
ctrlKey booleano Devolve true Se a tecla e false noutro caso
currentTarget elemento o elemento que é o obxectivo do evento
Número completo O número de veces que se presionaron os botóns do rato
eventPhase número enteiro a fase á que pertence o evento: 0 – Fase capturación 1 – no elemento de destino 2 – fase burbbling
isChar booleano indica se a tecla de presión corresponde a un personaxe
número enteiro indica o código numérico do Tecla preme
metaKey número completo devolve Se a tecla

e false noutro caso

pageX número enteiro coordinar x da posición do rato con respecto á páxina
pageY Número completo Coordenada e posición do rato con respecto á páxina
preventDefault() úsase para cancelar a acción predefinida do evento
relatedTarget elemento o elemento que é o obxectivo secundario do evento ( relacionados con eventos do rato)
screenX número completo x coordinar o Posición do rato con respecto á pantalla completa
screenY Número enteiro Coordenada e posición do rato sobre a pantalla completa
shiftKey booleano devolve true Se a tecla

e

noutro caso

stopPropagation() función úsase para deter o fluxo de eventos de tipo burbulling
target elemento O elemento que orixina o evento
timeStamp Número a data e hora en que o evento
texto string o nome do evento

A diferenza do que ocorre con Internet Explorer, a maioría das propiedades do obxecto event de sol Lectura. En concreto, só as seguintes propiedades son lidas e escribir: altKey, button e keyCode.

a tecla IV id = “tecla 2b9A3FB819″ ” é unha clave especial que está en algúns teclados de ordenador moi antigos. Actualmente, nas computadoras de PC está asimilada á tecla IV = “51C99289D4” ou a tecla de Windows, mentres que en computadoras de tipo Mac está asimilada á tecla

.

15.4.2 Semellanzas e diferenzas entre navegadores

15.4.2.1 semellanzas

En ambos casos, a propiedade do tipo úsase para obter o tipo de evento Isto é sobre:

function procesaEvento(elEvento) { if(elEvento.type == "click") { console.log("Has pulsado el raton"); } else if(elEvento.type == "mouseover") { console.log("Has movido el raton"); }} elDiv.onclick = procesaEvento;elDiv.onmouseover = procesaEvento;

Aínda que o controlador de eventos inclúe o prefixo on en O seu nome, o tipo de evento devolto pola propiedade type dispensar a partir dese prefixo.É por iso que no exemplo anterior compara o seu valor con click e mouseover e non con onclick e onmouseover.

Outra semellanza é o uso da propiedade keyCode para obter o código correspondente ao carácter da chave que foi presionada. A chave pulsada non sempre representa un carácter alfanumérico. Ao presionar a tecla iv = “2bfc362192” , por exemplo, obtense o código 13. A barra espaciadora corresponde ao código 32 e a tecla Eliminar ten un código igual a .

máis forma inmediata de comprobar se se presionaron algunhas teclas especiais, é usar as propiedades shiftKey, altKey e ctrlKey.

Para obter a posición do rato con respecto á parte visible da xanela, úsanse as propiedades clientX e . Do mesmo xeito, para obter a posición do punteiro do rato con respecto á pantalla completa, úsanse as propiedades e screenY.

15.4.2.2 Diferenzas

Unha das principais diferenzas é a forma en que se obtén o elemento que orixine o evento. Se un elemento <div> é asignado un evento onclick, premendo co rato o interior do <div> Un evento cuxo obxectivo é orixinario é o .

// Internet Explorervar objetivo = elEvento.srcElement; // Navegadores que siguen los estandaresvar objetivo = elEvento.target;

Outra diferenza importante é que relaciona a obtención do carácter correspondente á clave pulsada. Cada tecla pulsada asociou dous códigos diferentes: o primeiro é o código da chave que foi presionado eo outro código é o que se refire ao personaxe pulsado.

O primeiro código é un código de clave interna Para JavaScript. O segundo código coincide co código de carácter ASCII. Deste xeito, a letra a ten un código interno igual a 65 e un código ASCII de 97 Por outra banda, a letra A ten un código interno tamén de 65 e un código ASCII de 95.

En Internet Explorer, o contido da propiedade keyCode depende de cada evento. En “Key Press” Eventos (onkeyup e onkeydown) O seu valor é igual ao código interno. En “escribir con teclas” Eventos (onkeypress) o seu valor é igual ao código ASCII do carácter prensado.

Pola contra, nos navegadores que seguen as normas de propiedade keyCode é igual ao código interno en “Prema a tecla” eventos (onkeyup e onkeydown) e é igual a 0 no “Escribir con teclas” eventos (onkeypress).

Na práctica, isto supón que nos eventos onkeyup pode usar a mesma propiedade en todos os navegadores:

function manejador(elEvento) { var evento = elEvento || window.event; console.log(" El código de la tecla pulsada es " + evento.keyCode);}document.onkeyup = manejador;document.onkeydown = manejador;

Neste caso, se a páxina está cargada en calquera navegador e presionado, por exemplo, a clave A, a seguinte mensaxe:

Mensaxe amosada en O navegador de Firefox

Figura 15.4 Mensaxe amosada no navegador de Firefox

A gran diferenza ocorre E ao tentar obter o carácter presionado, neste caso a letra a. Para obter a carta, primeiro debes obter o teu código ASCII. Como se comenta, en Internet explora o valor da propiedade keyCode no evento onkeypress é igual ao personaxe ASCII:

function manejador() { var evento = window.event;

 // Internet Explorer var codigo = evento.keyCode;} document.onkeypress = manejador;

Con todo, en navegadores que non son Internet Explorer, O código anterior é igual a 0 para calquera tecla pulsada. Nestes navegadores seguindo os estándares, a propiedade debe ser usada charCode, que devolve o código da tecla pulsada, pero só para o evento onkeypress:

function manejador(elEvento) { var evento = elEvento;

 // Navegadores que siguen los estándares var codigo = evento.charCode;} document.onkeypress = manejador;

Unha vez obtido o Código en cada navegador, debe usarse a función String.fromCharCode() para obter o carácter cuxo código ASCII é aprobado como parámetro. Polo tanto, a solución completa para obter a clave pulsada en calquera navegador é a seguinte:

Unha das propiedades máis interesantes que el é a posibilidade de evitar que se complete o comportamento normal dun evento.Noutras palabras, con JavaScript é posible non mostrar ningún personaxe cando se preme unha tecla, non envíe un formulario despois de premer o botón de envío, non cargue ningunha páxina premendo unha ligazón, etc. O método avanzado de evitar que un evento poida executar a súa acción asociada depende de cada navegador:

// Navegadores que siguen los estandareselEvento.preventDefault();

no modelo de evento básico tamén é é posible evitar o comportamento predeterminado dalgúns eventos. Se por exemplo nun elemento <textarea> indícase o seguinte controlador de eventos:

<textarea onkeypress="return false;"></textarea>

No <textarea> a anterior non será posible escribir ningún personaxe, xa que o controlador de eventos devolve false e ese é o valor necesario para evitar Os extremos de executar o evento e, polo tanto, para evitar que a letra estea escrita.

Polo tanto, é posible definir as asas de eventos que retornan ou dependendo de algúns parámetros. Por exemplo, unha serie de caracteres que se poden escribir poden ser deseñados nun <textarea>:

<textarea onkeypress="return limita(100);"></textarea>

O funcionamento do exemplo anterior está detallado a continuación:

  1. o evento onkeypress para controlar se a chave está escrita ou non.
  2. O valor devolto é devolto pola función externa limita() a que o valor pasa o valor 100.
  3. Se o valor devolto por limita() é true, o evento ocorre normalmente e o carácter está escrito no <textarea>. Se o valor devolto por limita() é false, o evento non ocorre e, polo tanto, o personaxe non está escrito no .
  4. a función limita() devolver ou false Despois de comprobar se o número de caracteres do <textarea> é maior ou inferior ao número máximo de caracteres que pasaron como parámetro.

O obxecto event tamén permite deter completamente a execución do fluxo normal de eventos:

// Navegadores que siguen los estandareselEvento.stopPropagation();

Ao deter o fluxo de eventos pendentes, os eventos que permanecen a partir dese momento están superados ata que todos os elementos pendentes sexan executados ata o elemento window.

15.5 Tipos de eventos

A lista completa de eventos que se poden xerar nun navegador poden dividirse en catro g grandes g rupias. A especificación de DOM define os seguintes grupos:

  • eventos do rato: orixínanse cando o usuario usa o rato para realizar algunhas accións.
  • Eventos do teclado: orixínanse cando o usuario presiona calquera tecla no seu teclado.
  • Eventos HTML: orixínanse cando se producen cambios na xanela do navegador ou cando se producen certas interaccións entre o cliente e o servidor.
  • Eventos DOM: orixínanse cando Un cambio ocorre na estrutura DOM da páxina. Tamén se chaman “eventos de mutación”.

15.5.1 Eventos do rato

Os eventos do rato son, con moita diferenza, a maioría dos empregados das aplicacións web. Os eventos que están incluídos nesta clasificación son os seguintes:

dúas veces

elemento

Todos os elementos das páxinas soportan os eventos da táboa anterior.

15.5.1.1 Propiedades

O obxecto do evento contén as seguintes propiedades para eventos do rato:

  • Coordenadas do rato (todas as coordenadas diferentes relacionadas con diferentes elementos)
  • a propiedade type
  • a propiedade srcElement (Internet Explorer) ou target Propiedades shiftKey, ctrlKey, altKey e metaKey só)
  • a propiedade button (só nos eventos mousedown, mousemove, mouseout, mouseover e mouseup)

Eventos mouseover e mouseout teñen propiedades adicionais. Internet Explorer define a propiedade fromElement, que se refire ao elemento desde o que se moveu o punteiro do rato e toElement que é o elemento a que O punteiro do rato moveuse. Deste xeito, no evento mouseover, a propiedade toElement é idéntica a srcElement e No evento mouseout, a propiedade fromElement é idéntica a srcElement.

En navegadores que soportan o estándar DOM, só hai unha propiedade chamada relatedTarget. No evento mouseout, relatedTarget apunta ao elemento ao que se moveu o rato. No evento mouseover, relatedTarget apunta ao elemento desde o que se moveu o punteiro do rato.

cando un Presionado o botón do rato, a secuencia de eventos que se producen é a seguinte: mousedown, mouseup, click Polo tanto, a secuencia de eventos necesarios para alcanzar o dobre clic faise tan complexo como o seguinte: mousedown, mouseup, click, mousedown, mouseup, click, IV ID = “.

15.5.2 Eventos de teclado

Os eventos que están incluídos nesta clasificación son os seguintes:

evento Descrición
click ocorre cando se preme o botón esquerdo do rato.Tamén ocorre cando o foco da aplicación está situado nun botón e prema a tecla IV = “2BFC362192” tecla
dblclick ocorre cando se preme o botón esquerdo do rato
mousedown ocorre cando se preme calquera botón do rato
mouseout it ocorre cando o punteiro do rato está dentro dun elemento e o usuario move o punteiro a un lugar fóra dese elemento
mouseover ocorre cando o punteiro do rato está fóra dun elemento e o usuario move o punteiro a un lugar dentro do elemento
mouseup ocorre cando se libera calquera botón do rato que foi presionado
mousemove ocorre cando o puntero ou rato está nun elemento

cando se tira unha chave correspondente a un alfanumérico O carácter (os tecidos non se teñen en conta como SHIFT, ALT, etc.). Tamén se produce de forma continua se a TD prodúcese cando se publica calquera tecla pulsada

evento Descrición
keydown ocorre cando preme calquera tecla no teclado. Tamén se produce continuamente se se produce o

15.5.2.1 propiedades

O obxecto do evento contén as seguintes propiedades para eventos de teclado:

  • a propiedade keyCode
  • A propiedade charCode (sol só)
  • a propiedade srcElement (Internet Explorer) ou target (DOM)
  • Propiedades shiftKey, ctrlKey, altKey e metaKey

    Cando se preme unha tecla a un carácter alfanumérico, ocorre a seguinte secuencia de Eventos: , keypress, keyup. Cando se preme outro tipo de chave, prodúcese a seguinte secuencia: , keyup. Se se celebra a chave, no primeiro caso, os eventos son repetidos de forma continua /div> e keypress e no segundo caso, repita o evento continuamente.

    15.5.3 Eventos HTML

    Os eventos HTML definidos son recollidos na seguinte táboa:

    evento Descrición load ocorre no obxecto da xanela cando a páxina está completamente cargado. No `cando o obxecto está cargado tr id =” e0b9e62 “>

    ocorre no obxecto da xanela cando a páxina desaparece por completo (ao pechar a xanela do navegador por exemplo). No elemento <object> cando o obxecto desaparece. abort ocorre nun elemento <object> cando o usuario detén a descarga do elemento antes de que estea terminado error ocorre no obxecto da xanela cando se produce un erro de JavaScript. No elemento IV = “758E7D16CC” ” cando a imaxe non se puido cargar completamente e no elemento IV =” bacfb08ac8 “” cando o elemento non se carga correctamente select ocorre cando se seleccionan varios caracteres dunha caixa de texto (<input> e <textarea>) change ocorre Cando unha caixa de texto (<input> e <textarea>) perde o foco e o seu contido variaba. Tamén ocorre cando o valor dun elemento <select> TD ocorre cando presiona un botón de envío ( <input type="submit">) reset ocorre cando preme Nun botón de tipo de restablecemento (<input type="reset">) resize ocorre no obxecto da xanela cando se redime a xanela do navegador scroll ocorre en calquera elemento que ten unha barra de desprazamento, cando o usuario o usa. O elemento

    contén a barra de desprazamento da páxina completa focus ocorre en calquera elemento (incluído o obxecto da xanela) cando o elemento recibe o

    fb2bd1e386 “>

    ocorre en calquera elemento (incluído o obxecto da xanela) cando o elemento perde o

    foco 7e66fa8b9a “>

Un dos eventos máis utilizados é o evento load, xa que todas as manipulacións que se realizan por DOM requiren que a páxina se cargue chea e, polo tanto, a árbore DOM foi completamente construído.

O elemento

Define as propiedadesscrollLeftescrollTopque se pode empregar xunto co eventoscroll.

15.5.4 eventos Sun

Aínda que os eventos deste tipo son parte do A especificación oficial do Sol, aínda non se implementaron en todos os navegadores.A seguinte táboa recolle os eventos máis importantes deste tipo:

Exercicio 17

Ver declaración

Exercicio 18

Ver declaración

Exercicio 19

Ver enunciación

evento Descrición
DOMSubtreeModified ocorre cando se engaden ou eliminan os nodos no subárbol dun documento ou
DOMNodeInserted ocorre cando un nodo engádese como un neno doutro nodo
DOMNodeRemoved ocorre cando se elimina un nodo que é fillo doutro nodo
DOMNodeRemovedFromDocument ocorre cando se elimina un nodo
ocorre cando se engade un nodo ao documento

Deixa unha resposta

O teu enderezo electrónico non se publicará Os campos obrigatorios están marcados con *