SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
Depurando JavaScript




Juan Belón Pérez http://programadorphp.org




                                        USANDO
Diagrama – Contenidos

1          Conceptos


2           Firebug


3          Ejemplos


4          Resumen
CONCEPTOS

 ¿Qué es JavaScript?

   es un lenguaje interpretado, es decir, que no requiere
    compilación, se usa fundamentalmente en páginas web,tiene
    una sintaxis parecida al lenguaje Java y C.
   No es un lenguaje orientado a objetos como tal ya que no
    dispone de herencia (mecanismo para que una clase derive
    hacia otra compartiendo y extendiendo su funcionalidad),sino
    que se basa en prototipos, donde no existen “clases”,la
    reutilización de las funciones se hace a través de la clonación
    de los objetos existentes, que sirve de prototipos , sobre los
    que se extienden sus funcionalidades. También se le llama
    programación basada en instancias ( ver lenguaje Self).
   Es una implementación del DOM.
CONCEPTOS

 ¿Qué es el DOM?

   DOM viene de Document Object Model, que traducido viene a
    ser el Modelo de Objetos de Documento y contiene todas las
    estructuras de datos del documento de la página web, es una
    forma de representar los elementos de un documento
    estructurado (tal como una página web HTML o un
    documento XML) como objetos que tienen sus propios
    métodos y propiedades. El responsable del DOM es el World
    Wide Web Consortium (W3C). En efecto, el DOM es una API
    para acceder, añadir y cambiar dinámicamente contenido
    estructurado en documentos con lenguajes como ECMAScript
    (Javascript).
   Éste lenguaje es interpretado por el programa utilizado para
    navegar…Firefox, Internet Explorer, Opera,Safari,etc.
CONCEPTOS

¿Qué es un intérprete?
   Es un programa capaz de analizar y ejecutar otros
    programas, escritos en un lenguaje de alto nivel.
    Los intérpretes no son compiladores, ya que éstos
    se encargan de traducir un programa desde su
    descripción ,en un lenguaje de programación, al
    código máquina del sistema destino, i.e., un
    compilador transforma un programa en lenguaje de
    alto nivel en un programa en lenguaje de bajo nivel:
CONCEPTOS : diferencias
Compilador




Intérprete
CONCEPTOS: diferencias
 Los intérpretes sólo realizan la traducción a
  medida que sea necesario y normalmente,
  no guardan el resultado de dicha traducción,
  i.e., es un programa ,ej. el navegador en el
  caso de JavaScript ,que toma el código con
  el texto fuente del fichero .HTML o .JS y lo
  analiza para después ejecutarlo. Esto hace
  que se modifique el árbol DOM ,la estructura
  de una página web que contiene el
  navegador internamente y que gracias a
  plugins como DOM Inspector puede ser
  inspeccionado y por medio de FireBug
  ,depurado.
CONCEPTOS: diferencias
 Los programas interpretados suelen ser más lentos que los
  compilados debido a la necesidad de traducir el programa
  mientras se ejecuta, pero a cambio son más flexibles como
  entornos de programación y depuración (lo que se traduce,
  por ejemplo, en una mayor facilidad para reemplazar
  partes enteras del programa o añadir módulos
  completamente nuevos), y permiten ofrecer al programa
  interpretado un entorno no dependiente de la máquina
  donde se ejecuta el intérprete, sino del propio intérprete
  (lo que se conoce comúnmente como máquina virtual).
 Comparando su actuación con la de un ser humano, un
  compilador equivale a un traductor profesional que, a
  partir de un texto, prepara otro independiente traducido a
  otra lengua, mientras que un intérprete corresponde al
  intérprete humano, que traduce de viva voz las palabras
  que oye, sin dejar constancia por escrito.
 En la actualidad, uno de los entornos más comunes de uso
  de los intérpretes informáticos es Internet, debido a la
  posibilidad que estos tienen de ejecutarse
  independientemente de la plataforma.
DEPURACIÓN



                         JScript
                         Texto fuente




Firebug                                 Otros
Es un depurador                         depuradores
integrado en el                         No disponen de las
navegador que se                        capacidades de
mejora periódicamente                   Firebug, no están
y dispone de un alto                    incrustados en el
número de                               navegador ni son
componentes…                            multiplataforma…
FIREBUG
WEB

                          Consola
                                            Inspector




      Log &
      Monitor            Navegador

                                    CSS &
                                    DOM
            Profiler &
            Depurador
FIREBUG: INSTALACIÓN
 Primero debemos tener instalado el
  navegador con la extensión “DOM –
  Inspector” o también comúnmente llamado:
  Inspeccionador del árbol DOM. Después
  pasamos a abrir el navegador e instalar el
  componente Firebug desde “Herramientas->
  Complementos” -> “Obtener
  extensiones”…donde buscaremos dicho
  plugin y lo instalaremos, tras esto
  reiniciaremos el navegador y
  comprobaremos que está funcionando
  pulsando la tecla de acceso al plugin “F12” o
  el nuevo icono alojado en la parte inferior
  derecha de Firefox: .
 Y debe de aparecer la siguiente “ventana”
  en la parte inferior:
FIREBUG: INSTALACIÓN
 Firebug recién instalado:
   Para las demostraciones y capturas he utilizado la versión 2.0.0.3 de Firefox
    y 1.05 de Firebug (http://www.getfirebug.com/ )




 Adicionalmente se pueden instalar otras herramientas útiles para
  desarrollar en la web como pueden ser WebDeveloper 1.1.3
  (http://chrispederick.com/work/webdeveloper/ ) y otras…
EJEMPLOS
 Tomaremos como ejemplo la página de la
  escuela para depurar contenido JavaScript
  que se ejecuta en ella: (http://etsiit.ugr.es/
  )
 Pulsamos sobre “Enable Firebug” y una vez
  cargada la página podremos inspeccionar el
  contenido del árbol DOM ,de la estructura
  HTML de ésta página web en concreto, si
  pulsamos sobre inspect podremos ir
  resaltando mediante cuadros de color azul
  las diferentes metaetiquetas que componen
  los nodos del árbol de la estructura.
EJEMPLOS : FIREBUG
EJEMPLOS : FIREBUG
 De forma que en la ventana de Firebug
  aparece coloreado con fondo azul claro el
  contenido del marco que estamos
  apuntando en la página web. Al igual que
  aparece el estilo CSS utilizado en dicho
  nodo, en la parte derecha del componente,
  podemos seleccionar la pestaña “Layout”
  que viene a ser la disposición de dicho
  elemento HTML o nodo y sus
  bordes,establecidos por parámetros de
  estilo.
EJEMPLOS : FIREBUG
 La pestaña DOM es la más interesante de esta parte ya que nos
  muestra la información referente a dicho nodo seleccionado
EJEMPLOS : FIREBUG
 En éste caso podemos ver que el enlace es
  un enlace que contiene un evento “onclick”
  (en lenguaje JavaScript) que realiza una
  llamada a varias funciones “selectRSS();
  ajaxManager(); return false;” y devuelve
  falso para no “navegar” a otra página…
 Para no tener que buscar dichas funciones
  haremos uso del Profiler que viene en la
  pestaña Console, y existen dos casos para
  hacer uso del mismo, el primero, si
  pulsamos en la web sobre “ETSIIT
  NOTICIAS” sin hacer uso del botón “profile”,
  debe de aparecer una llamada en segundo
  plano en JavaScript …
EJEMPLOS : FIREBUG
 …donde podemos comprobar los datos de la petición: el fichero
  que se ha llamado, el método de transporte de datos, las
  cabeceras de la respuesta,tiempo de la misma en
  milisegundos,etc. Observar que aparece la línea del fichero fuente
  que se ha ejecutado al llamar al evento…
EJEMPLOS : FIREBUG
El segundo caso de uso del profiler: Si
 usamos en el botón “Profile” y luego
 pinchamos en un enlace de la web,
 por cambiar que sea una noticia, por
 ejemplo “Premios al mejor proyecto
 informático y a la mejor aplicación”,
 al cambiar el contenido de la página
 deberemos volver a pulsar “Profile”,
 para que deje de analizar las llamadas
 JavaScript que se están ejecutando.
 Debe aprecer algo como lo siguiente:
EJEMPLOS : FIREBUG
 Si miramos el enlace sobre el que
  pinchamos anteriormente con “inspect”
  sobre éste, podemos ver que el contenido de
  la llamada en el evento era :
  `onclick="openNews(1)"´, pero no
  sabíamos que más se ejecutaba puesto que
  no habiamos mirado el código JavaScript de
  dicha función o llamada…,ahora vemos qué
  más se está ejecutando y se adjunta una
  tabla de estadísticas que informan acerca de
  la ejecución del código en la máquina virtual
  de dicho lenguaje. Se han realizado 3
  llamadas a funciones que en principio no
  tienen que ver con la primera “openNews”
  ,para saber qué es lo que hace esa función
  pinchamos en “ajax.js (line 143)” de la
  columna File.
EJEMPLOS : FIREBUG
 Y hemos entrado al modo depurador ,es la pestaña
  Script del componente Firebug de Firefox, en la parte
  izquierda tenemos las listas de inspecciones y puntos
  de ruptura para la página actual, podemos añadir una
  inspección pinchando en el cuadro derecho de fondo
  amarillo “New watch expression…” y escribiendo el
  nombre de la variable. El modo de funcionamiento en
  éste punto es igual a un depurador de cualquier otro
  lenguaje.
EJEMPLOS : FIREBUG
 Para comprobar su funcinamiento añadiremos
  “noticia” a las inspecciones y un breakpoint,
  pinchando en la línea 144 del código fuente para éste
  fichero “ajax.js” donde nos encontramos en éste
  momento.Antes de probar que funciona ,si leemos el
  contenido de la función , aparece toggleDiv()
  ,podemos buscar dicha función en el minibuscador
  del componente en la parte superior derecha del
  mismo, “function toggleDiv” y asi mismo
  comprobaremos por qué se han hecho 3 llamadas a
  ésta función y otras 3 a “MM_findObj()” que se llama
  una vez dentro de “toggleDiv()”.
 Ahora podemos ir a la página y pinchar en “Volver”
  que no es más que una llamada a returnNews() ,la
  función justo por encima de openNews() que
  acabamos de analizar, y ahora al pinchar sobre la
  misma noticia anterior veremos que salta el punto de
  ruptura y tenemos los valores de las inspecciones
  rellenos:
EJEMPLOS : FIREBUG
EJEMPLOS : FIREBUG
 “noticia” está a 0 , “this” es la única
  variable global en éste punto,con toda la
  información del objeto disponible y “not” es
  el parámetro de la función con valor
  1.Vamos pulsando F11 (StepInto) para ir
  ejecutando paso a paso cada instrucción y
  entrando en las posibles llamadas que haya
  dentro de ésta función. En la primera línea
  que se ejecuta comprobamos que noticia se
  pone a 1 en la ventana de “Watch” ,la
  inspección está funcionando correctamente.
  La segunda línea es una llamada a la función
  toggleDiv() a la que entra por usar StepInto
  (F11)
EJEMPLOS : FIREBUG
 y para darle el valor a “e” necesita entrar en la
  función MM_findObj() con el parámetro pasado
  “pagNot0”, en éste punto antes de continuar
  deberíamos saber qué es “pagNot0”, se encuentra en
  el árbol DOM pero si nos perdemos en él pasamos a
  la pestaña HTML y utilizando el buscador
  encontraremos que se trata de una división donde se
  colocan las noticias:
EJEMPLOS : FIREBUG
EJEMPLOS : FIREBUG
 Coloreada en azul está la división “pagNot0”, ahora
  podemos pasar de nuevo a la pestaña Script porque
  sabemos qué es lo que va a cambiar el código
  JavaScript ,la función MM_findObj() buscará dicho
  nodo asi que no vamos a iterar toda ésta sino que
  añadiremos un breakpoint al final en la línea 34
  donde dice “return x” (comprendiendo la lógica de la
  función previamente) y pulsando sobre “Continue”
  (F8) seguimos con F11 y volvemos a la llamada a
  “toggleDiv()” y “e” tiene ya el valor del nodo del
  DOM “div#pagNot0.paginaNoticias…” vemos que
  desaparece el contenido porque se cambia el estilo
  de la división haciéndose invisible y que se hace
  visible el contenido de la noticia seleccionada (y que
  se cargó al cargarse la página) para mostrar,en éste
  caso la noticia 1 ;se oculta la división del listado de
  las noticias en “pagNot0” y se muestra la división de
  la noticia seleccionada: “noticia1” al igual que los
  enlaces para volver al estado anterior
  “toggleDiv("newsvolver");”.
EJEMPLOS : FIREBUG
 Para hacer ahora algo más práctico y demostrar la potencia del
  depurador modificaremos el árbol DOM de la página ,
  inspeccionando (pestaña Console -> botón “Inspect” ) llendo a la
  división “pagNot0” y pulsando en `<div id=”pagNot0”… ´
  Pulsaremos sobre “EDIT” justo encima de las pestañas ,dentro del
  componente e iremos al final del código mostrado añadiendo un
  enlace nuevo al HTML de la división con éste contenido al final del
  texto ,pero antes del último </div>:

  <br/><a onclick="openNews(27)" href="#" style="border-
  bottom-style: groove;">Enlace creado por mi para probar el
  depurador Firebug</a>
 Repetimos la operación pero ahora cambiamos la división
  “contenedorNoticias” añadiéndole otra división nueva con ID 27.


 <div style="display: none;" class="noticia" id="noticia27"><div
  class="tituloNot"><a href="javascript:windowalert('Noticia
  creada por mi');">Noticia creada por mi</a><br/></div><span
  class="fechaNot">Publicada el:<strong>
  23/04/2007</strong></span><span class="enlaceNot"><a
  href="javascript:windowalert('Noticia creada por mi');"> Leer
  </a></span><div class="descNot"/></div>
EJEMPLOS : FIREBUG
Nota: Le he puesto de ID noticia27
 porque la última noticia es la
 noticia18, por poner un número
 alto.Además no hace falta meter la
 división noticia27 dentro del
 contenedor del resto porque el código
 busca por todo el árbol DOM para
 encontrar el elemento con dicho ID.
Comprobamos que al no insertar el
 enlace dentro de una división donde
 se aplican los estilos CSS para enlaces
 aparecerá ,con una fuente y un color
 distintos, lógicamente:
EJEMPLOS : FIREBUG
EJEMPLOS : FIREBUG
 Así podemos crear nuestra propia noticia sin
  tener que cambiar el código fuente que genera
  el servidor http Apache meditante el script PHP.
 Podemos llamar directamente a las
  funciones,por ejemplo a “returnNews()” sin
  tenerque hacer uso de los eventos, mediante la
  pestaña “Console” ,escribimos el nombre de la
  función o cualquier otra instrucción y pulsamos
  en “Run” justo debajo del panel derecho que es
  el hueco para insertar las líneas a ejecutar…
 Ésta parte es de la más útiles que tiene el
  depurador ya que podemos utilizar código para
  modificar la página, podemos llamar a
  openNews(numero) donde numero es la noticia
  a mostrar, o podemos ver el valor de noticia en
  un momento concreto e inspeccionar un objeto
  de la página, como por ejemplo un elemento,un
  nodo del DOM, por medio del uso de funciones,
  para acortar se suele utilizar
  document.getElementById(„id‟) ,que localiza
  elementos del árbol por su id , por medio de una
  función llamada $(„id‟) , de forma que
  $(„examenes‟) nos devuelve el elemento (lista
  en este caso) correspondiente:
  <li id="examenes">
EJEMPLOS : FIREBUG
La última pestaña pero no menos
 importante es “Net” y sirve para
 comprobar que todos los ficheros de
 la web han sido descargados ,muestra
 lo que tardaron en hacerlo.
RESUMEN
UN DEPURADOR EN EL NAVEGADOR
jbelon@correo.ugr.es




                       USANDO

Weitere ähnliche Inhalte

Was ist angesagt?

Manual Completo Php 5
Manual Completo Php 5Manual Completo Php 5
Manual Completo Php 5Pablo Morales
 
Documentacion Proyecto Final
Documentacion Proyecto FinalDocumentacion Proyecto Final
Documentacion Proyecto FinalMoisesAlvarez38
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasosSoni BM
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Edgar Dueñas
 
JavaScript
JavaScriptJavaScript
JavaScriptJomicast
 
Tutorial de cómo crear una pagina web
Tutorial de cómo crear una pagina webTutorial de cómo crear una pagina web
Tutorial de cómo crear una pagina webSamuel Reyes
 
Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework SymfonyRodrigo Miranda
 
Arduino PLC: Manual Guía de Soapbox snap
Arduino PLC: Manual Guía de Soapbox snapArduino PLC: Manual Guía de Soapbox snap
Arduino PLC: Manual Guía de Soapbox snapSANTIAGO PABLO ALBERTO
 
Guía Teórica unidad III, Interfaz Gráficas de Usuarios
Guía Teórica unidad III, Interfaz Gráficas de UsuariosGuía Teórica unidad III, Interfaz Gráficas de Usuarios
Guía Teórica unidad III, Interfaz Gráficas de Usuarioslissette_torrealba
 
Las buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones SymfonyLas buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones Symfonysymfony_bcn
 
Zend framework
Zend frameworkZend framework
Zend frameworkluislolo
 

Was ist angesagt? (18)

Manual Completo Php 5
Manual Completo Php 5Manual Completo Php 5
Manual Completo Php 5
 
Documentacion Proyecto Final
Documentacion Proyecto FinalDocumentacion Proyecto Final
Documentacion Proyecto Final
 
(Desarrollo web).manual.php.5
(Desarrollo web).manual.php.5(Desarrollo web).manual.php.5
(Desarrollo web).manual.php.5
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasos
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Php
PhpPhp
Php
 
Tutorial de cómo crear una pagina web
Tutorial de cómo crear una pagina webTutorial de cómo crear una pagina web
Tutorial de cómo crear una pagina web
 
Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework Symfony
 
Pre practica 3
Pre practica 3Pre practica 3
Pre practica 3
 
Arduino PLC: Manual Guía de Soapbox snap
Arduino PLC: Manual Guía de Soapbox snapArduino PLC: Manual Guía de Soapbox snap
Arduino PLC: Manual Guía de Soapbox snap
 
CRUD básico con Symfony
CRUD básico con SymfonyCRUD básico con Symfony
CRUD básico con Symfony
 
Lenguajes de desarrollo web
Lenguajes de desarrollo webLenguajes de desarrollo web
Lenguajes de desarrollo web
 
Instalacion jdk
Instalacion jdkInstalacion jdk
Instalacion jdk
 
Guía Teórica unidad III, Interfaz Gráficas de Usuarios
Guía Teórica unidad III, Interfaz Gráficas de UsuariosGuía Teórica unidad III, Interfaz Gráficas de Usuarios
Guía Teórica unidad III, Interfaz Gráficas de Usuarios
 
Las buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones SymfonyLas buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones Symfony
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
Zend framework
Zend frameworkZend framework
Zend framework
 

Andere mochten auch

WARE: a tool for the Reverse Engineering of Web Applications
WARE: a tool for the Reverse Engineering of Web Applications WARE: a tool for the Reverse Engineering of Web Applications
WARE: a tool for the Reverse Engineering of Web Applications Porfirio Tramontana
 
Introducción a Google Dart + HTML5
Introducción a Google Dart + HTML5Introducción a Google Dart + HTML5
Introducción a Google Dart + HTML5Avanet
 
Integración de WAI-ARIA en HTML5
Integración de WAI-ARIA en HTML5Integración de WAI-ARIA en HTML5
Integración de WAI-ARIA en HTML5Jose R. Hilera
 
REST, jQuery y otros Frameworks JS
REST, jQuery y otros Frameworks JSREST, jQuery y otros Frameworks JS
REST, jQuery y otros Frameworks JSAdolfo Sanz De Diego
 
Accesibilidad, hojas estilo cascada, y tu
Accesibilidad, hojas estilo cascada, y tuAccesibilidad, hojas estilo cascada, y tu
Accesibilidad, hojas estilo cascada, y tuAdrian Moreno Garcia
 
Ejemplo de corrección de errores de accesibilidad WCAG 2.0 en una página web
Ejemplo de corrección de errores de accesibilidad WCAG 2.0 en una página webEjemplo de corrección de errores de accesibilidad WCAG 2.0 en una página web
Ejemplo de corrección de errores de accesibilidad WCAG 2.0 en una página webJose R. Hilera
 
Desarrollo de Mobile Web Apps
Desarrollo de Mobile Web AppsDesarrollo de Mobile Web Apps
Desarrollo de Mobile Web AppsAsier Marqués
 
Uso de html5 + webcomponents
Uso de html5 + webcomponentsUso de html5 + webcomponents
Uso de html5 + webcomponentsAvanet
 
Workflow para volar con el CSS
Workflow para volar con el CSSWorkflow para volar con el CSS
Workflow para volar con el CSSNaiara Abaroa
 
Mejora tus US con UX y modelos de satisfacción
Mejora tus US con UX y modelos de satisfacciónMejora tus US con UX y modelos de satisfacción
Mejora tus US con UX y modelos de satisfaccióndnmoncada
 
Casper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end DrupalCasper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end DrupalDavid Gil Sánchez
 
PAUTAS W3C DE ACCESIBILIDAD PARA HERRAMIENTAS DE EDICIÓN WEB (ATAG 2.0)
PAUTAS W3C DE ACCESIBILIDAD PARA HERRAMIENTAS DE EDICIÓN WEB (ATAG 2.0)PAUTAS W3C DE ACCESIBILIDAD PARA HERRAMIENTAS DE EDICIÓN WEB (ATAG 2.0)
PAUTAS W3C DE ACCESIBILIDAD PARA HERRAMIENTAS DE EDICIÓN WEB (ATAG 2.0)Jose R. Hilera
 
Introducción a HTML - CSS - JS
Introducción a HTML - CSS - JS Introducción a HTML - CSS - JS
Introducción a HTML - CSS - JS Alejandro Miguel
 
Desarrollo de aplicaciones web 3.0 (linked data + bpm + cloud)
Desarrollo de aplicaciones web 3.0 (linked data + bpm + cloud) Desarrollo de aplicaciones web 3.0 (linked data + bpm + cloud)
Desarrollo de aplicaciones web 3.0 (linked data + bpm + cloud) Software Guru
 
Ejemplos WAI-ARIA con HTML, CSS y JavaScript
Ejemplos WAI-ARIA con HTML, CSS y JavaScriptEjemplos WAI-ARIA con HTML, CSS y JavaScript
Ejemplos WAI-ARIA con HTML, CSS y JavaScriptJose R. Hilera
 
Herramientas de evaluación de accesibilidad web WCAG 2.0
Herramientas de evaluación de accesibilidad web WCAG 2.0Herramientas de evaluación de accesibilidad web WCAG 2.0
Herramientas de evaluación de accesibilidad web WCAG 2.0Jose R. Hilera
 
Herramientas Frontend - Betabeers Salamanca - Enero 2015
Herramientas Frontend - Betabeers Salamanca - Enero 2015Herramientas Frontend - Betabeers Salamanca - Enero 2015
Herramientas Frontend - Betabeers Salamanca - Enero 2015Jesus Merino Parra
 

Andere mochten auch (20)

WARE: a tool for the Reverse Engineering of Web Applications
WARE: a tool for the Reverse Engineering of Web Applications WARE: a tool for the Reverse Engineering of Web Applications
WARE: a tool for the Reverse Engineering of Web Applications
 
Introducción a Google Dart + HTML5
Introducción a Google Dart + HTML5Introducción a Google Dart + HTML5
Introducción a Google Dart + HTML5
 
Integración de WAI-ARIA en HTML5
Integración de WAI-ARIA en HTML5Integración de WAI-ARIA en HTML5
Integración de WAI-ARIA en HTML5
 
Desarrollo de webapps 1
Desarrollo de webapps 1Desarrollo de webapps 1
Desarrollo de webapps 1
 
REST, jQuery y otros Frameworks JS
REST, jQuery y otros Frameworks JSREST, jQuery y otros Frameworks JS
REST, jQuery y otros Frameworks JS
 
Accesibilidad, hojas estilo cascada, y tu
Accesibilidad, hojas estilo cascada, y tuAccesibilidad, hojas estilo cascada, y tu
Accesibilidad, hojas estilo cascada, y tu
 
Ejemplo de corrección de errores de accesibilidad WCAG 2.0 en una página web
Ejemplo de corrección de errores de accesibilidad WCAG 2.0 en una página webEjemplo de corrección de errores de accesibilidad WCAG 2.0 en una página web
Ejemplo de corrección de errores de accesibilidad WCAG 2.0 en una página web
 
Desarrollo de Mobile Web Apps
Desarrollo de Mobile Web AppsDesarrollo de Mobile Web Apps
Desarrollo de Mobile Web Apps
 
Tools and Frameworks
Tools and FrameworksTools and Frameworks
Tools and Frameworks
 
Uso de html5 + webcomponents
Uso de html5 + webcomponentsUso de html5 + webcomponents
Uso de html5 + webcomponents
 
Workflow para volar con el CSS
Workflow para volar con el CSSWorkflow para volar con el CSS
Workflow para volar con el CSS
 
Mejora tus US con UX y modelos de satisfacción
Mejora tus US con UX y modelos de satisfacciónMejora tus US con UX y modelos de satisfacción
Mejora tus US con UX y modelos de satisfacción
 
Casper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end DrupalCasper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end Drupal
 
PAUTAS W3C DE ACCESIBILIDAD PARA HERRAMIENTAS DE EDICIÓN WEB (ATAG 2.0)
PAUTAS W3C DE ACCESIBILIDAD PARA HERRAMIENTAS DE EDICIÓN WEB (ATAG 2.0)PAUTAS W3C DE ACCESIBILIDAD PARA HERRAMIENTAS DE EDICIÓN WEB (ATAG 2.0)
PAUTAS W3C DE ACCESIBILIDAD PARA HERRAMIENTAS DE EDICIÓN WEB (ATAG 2.0)
 
Introducción a HTML - CSS - JS
Introducción a HTML - CSS - JS Introducción a HTML - CSS - JS
Introducción a HTML - CSS - JS
 
Desarrollo de aplicaciones web 3.0 (linked data + bpm + cloud)
Desarrollo de aplicaciones web 3.0 (linked data + bpm + cloud) Desarrollo de aplicaciones web 3.0 (linked data + bpm + cloud)
Desarrollo de aplicaciones web 3.0 (linked data + bpm + cloud)
 
Ejemplos WAI-ARIA con HTML, CSS y JavaScript
Ejemplos WAI-ARIA con HTML, CSS y JavaScriptEjemplos WAI-ARIA con HTML, CSS y JavaScript
Ejemplos WAI-ARIA con HTML, CSS y JavaScript
 
Flujos de interaccion
Flujos de interaccionFlujos de interaccion
Flujos de interaccion
 
Herramientas de evaluación de accesibilidad web WCAG 2.0
Herramientas de evaluación de accesibilidad web WCAG 2.0Herramientas de evaluación de accesibilidad web WCAG 2.0
Herramientas de evaluación de accesibilidad web WCAG 2.0
 
Herramientas Frontend - Betabeers Salamanca - Enero 2015
Herramientas Frontend - Betabeers Salamanca - Enero 2015Herramientas Frontend - Betabeers Salamanca - Enero 2015
Herramientas Frontend - Betabeers Salamanca - Enero 2015
 

Ähnlich wie Depurando JavaScript con Firebug

Ähnlich wie Depurando JavaScript con Firebug (20)

Tutorial Javascript01
Tutorial Javascript01Tutorial Javascript01
Tutorial Javascript01
 
Javascript01 091001224249-phpapp01
Javascript01 091001224249-phpapp01Javascript01 091001224249-phpapp01
Javascript01 091001224249-phpapp01
 
9
99
9
 
Manual de eclpse emrt
Manual de eclpse emrtManual de eclpse emrt
Manual de eclpse emrt
 
Manual de usuarios_de_eclipse_jenny
Manual de usuarios_de_eclipse_jennyManual de usuarios_de_eclipse_jenny
Manual de usuarios_de_eclipse_jenny
 
04 taller-django
04 taller-django04 taller-django
04 taller-django
 
tutorial de eclipse
tutorial de eclipsetutorial de eclipse
tutorial de eclipse
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
CMS - Joomla
CMS - JoomlaCMS - Joomla
CMS - Joomla
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Colegio nacional nicolas esguerra
Colegio nacional nicolas esguerraColegio nacional nicolas esguerra
Colegio nacional nicolas esguerra
 
Colegio nacional nicolas esguerra
Colegio nacional nicolas esguerraColegio nacional nicolas esguerra
Colegio nacional nicolas esguerra
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Java script
Java scriptJava script
Java script
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Curso practico-de-javascript
Curso practico-de-javascriptCurso practico-de-javascript
Curso practico-de-javascript
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Lenguaje-de-programacion-JavaScript-1.pdf
Lenguaje-de-programacion-JavaScript-1.pdfLenguaje-de-programacion-JavaScript-1.pdf
Lenguaje-de-programacion-JavaScript-1.pdf
 

Mehr von Juan Belón Pérez

Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, PalmAplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, PalmJuan Belón Pérez
 
Yahoo! pipes + Wordpress plugin - RSS POWER to your blog
Yahoo! pipes + Wordpress plugin - RSS POWER to your blogYahoo! pipes + Wordpress plugin - RSS POWER to your blog
Yahoo! pipes + Wordpress plugin - RSS POWER to your blogJuan Belón Pérez
 
Proyecto Campos Electricos - Programador Servicios 3d
Proyecto Campos Electricos - Programador Servicios 3dProyecto Campos Electricos - Programador Servicios 3d
Proyecto Campos Electricos - Programador Servicios 3dJuan Belón Pérez
 
Aecem - Libro Blanco - Para Programador Php.org
Aecem - Libro Blanco  - Para Programador Php.orgAecem - Libro Blanco  - Para Programador Php.org
Aecem - Libro Blanco - Para Programador Php.orgJuan Belón Pérez
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRJuan Belón Pérez
 
Composicion de servicios web, un ejemplo
Composicion de servicios web, un ejemploComposicion de servicios web, un ejemplo
Composicion de servicios web, un ejemploJuan Belón Pérez
 
Memoria Zenphp - Programador PHP
Memoria Zenphp - Programador PHPMemoria Zenphp - Programador PHP
Memoria Zenphp - Programador PHPJuan Belón Pérez
 
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHPZenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHPJuan Belón Pérez
 
Ensayo Cientifico - Programador PHP
Ensayo Cientifico - Programador PHPEnsayo Cientifico - Programador PHP
Ensayo Cientifico - Programador PHPJuan Belón Pérez
 
Zen Scaffolding - Programador PHP
Zen Scaffolding - Programador PHPZen Scaffolding - Programador PHP
Zen Scaffolding - Programador PHPJuan Belón Pérez
 
Rendimiento Java Script - Programador PHP
Rendimiento  Java Script - Programador PHPRendimiento  Java Script - Programador PHP
Rendimiento Java Script - Programador PHPJuan Belón Pérez
 
Bibliografia Y Menciones - Programador PHP
Bibliografia Y Menciones - Programador PHPBibliografia Y Menciones - Programador PHP
Bibliografia Y Menciones - Programador PHPJuan Belón Pérez
 
Tutorial MVC - Zenphp - Programador PHP
Tutorial MVC - Zenphp - Programador PHPTutorial MVC - Zenphp - Programador PHP
Tutorial MVC - Zenphp - Programador PHPJuan Belón Pérez
 

Mehr von Juan Belón Pérez (20)

Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, PalmAplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
 
¿Cómo elegir servidor web?
¿Cómo elegir servidor web?¿Cómo elegir servidor web?
¿Cómo elegir servidor web?
 
Yahoo! pipes + Wordpress plugin - RSS POWER to your blog
Yahoo! pipes + Wordpress plugin - RSS POWER to your blogYahoo! pipes + Wordpress plugin - RSS POWER to your blog
Yahoo! pipes + Wordpress plugin - RSS POWER to your blog
 
Proyecto Campos Electricos - Programador Servicios 3d
Proyecto Campos Electricos - Programador Servicios 3dProyecto Campos Electricos - Programador Servicios 3d
Proyecto Campos Electricos - Programador Servicios 3d
 
Aecem - Libro Blanco - Para Programador Php.org
Aecem - Libro Blanco  - Para Programador Php.orgAecem - Libro Blanco  - Para Programador Php.org
Aecem - Libro Blanco - Para Programador Php.org
 
Bpel y Open Esb
Bpel y Open EsbBpel y Open Esb
Bpel y Open Esb
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGR
 
Composicion de servicios web, un ejemplo
Composicion de servicios web, un ejemploComposicion de servicios web, un ejemplo
Composicion de servicios web, un ejemplo
 
Presentación: xUnit y Junit
Presentación: xUnit y JunitPresentación: xUnit y Junit
Presentación: xUnit y Junit
 
Cómo elegir un servidor Web
Cómo elegir un servidor WebCómo elegir un servidor Web
Cómo elegir un servidor Web
 
Memoria Zenphp - Programador PHP
Memoria Zenphp - Programador PHPMemoria Zenphp - Programador PHP
Memoria Zenphp - Programador PHP
 
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHPZenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHP
 
Zenphp - Programador PHP
Zenphp - Programador PHPZenphp - Programador PHP
Zenphp - Programador PHP
 
Ensayo Cientifico - Programador PHP
Ensayo Cientifico - Programador PHPEnsayo Cientifico - Programador PHP
Ensayo Cientifico - Programador PHP
 
Zen AJAX - Programador PHP
Zen AJAX - Programador PHPZen AJAX - Programador PHP
Zen AJAX - Programador PHP
 
Zen Scaffolding - Programador PHP
Zen Scaffolding - Programador PHPZen Scaffolding - Programador PHP
Zen Scaffolding - Programador PHP
 
Rendimiento Java Script - Programador PHP
Rendimiento  Java Script - Programador PHPRendimiento  Java Script - Programador PHP
Rendimiento Java Script - Programador PHP
 
Bibliografia Y Menciones - Programador PHP
Bibliografia Y Menciones - Programador PHPBibliografia Y Menciones - Programador PHP
Bibliografia Y Menciones - Programador PHP
 
Tutorial MVC - Zenphp - Programador PHP
Tutorial MVC - Zenphp - Programador PHPTutorial MVC - Zenphp - Programador PHP
Tutorial MVC - Zenphp - Programador PHP
 
M V C - Programador PHP
M V C - Programador PHPM V C - Programador PHP
M V C - Programador PHP
 

Kürzlich hochgeladen

Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 

Kürzlich hochgeladen (20)

Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 

Depurando JavaScript con Firebug

  • 1. Depurando JavaScript Juan Belón Pérez http://programadorphp.org USANDO
  • 2. Diagrama – Contenidos 1 Conceptos 2 Firebug 3 Ejemplos 4 Resumen
  • 3. CONCEPTOS  ¿Qué es JavaScript?  es un lenguaje interpretado, es decir, que no requiere compilación, se usa fundamentalmente en páginas web,tiene una sintaxis parecida al lenguaje Java y C.  No es un lenguaje orientado a objetos como tal ya que no dispone de herencia (mecanismo para que una clase derive hacia otra compartiendo y extendiendo su funcionalidad),sino que se basa en prototipos, donde no existen “clases”,la reutilización de las funciones se hace a través de la clonación de los objetos existentes, que sirve de prototipos , sobre los que se extienden sus funcionalidades. También se le llama programación basada en instancias ( ver lenguaje Self).  Es una implementación del DOM.
  • 4. CONCEPTOS  ¿Qué es el DOM?  DOM viene de Document Object Model, que traducido viene a ser el Modelo de Objetos de Documento y contiene todas las estructuras de datos del documento de la página web, es una forma de representar los elementos de un documento estructurado (tal como una página web HTML o un documento XML) como objetos que tienen sus propios métodos y propiedades. El responsable del DOM es el World Wide Web Consortium (W3C). En efecto, el DOM es una API para acceder, añadir y cambiar dinámicamente contenido estructurado en documentos con lenguajes como ECMAScript (Javascript).  Éste lenguaje es interpretado por el programa utilizado para navegar…Firefox, Internet Explorer, Opera,Safari,etc.
  • 5. CONCEPTOS ¿Qué es un intérprete?  Es un programa capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes no son compiladores, ya que éstos se encargan de traducir un programa desde su descripción ,en un lenguaje de programación, al código máquina del sistema destino, i.e., un compilador transforma un programa en lenguaje de alto nivel en un programa en lenguaje de bajo nivel:
  • 7. CONCEPTOS: diferencias  Los intérpretes sólo realizan la traducción a medida que sea necesario y normalmente, no guardan el resultado de dicha traducción, i.e., es un programa ,ej. el navegador en el caso de JavaScript ,que toma el código con el texto fuente del fichero .HTML o .JS y lo analiza para después ejecutarlo. Esto hace que se modifique el árbol DOM ,la estructura de una página web que contiene el navegador internamente y que gracias a plugins como DOM Inspector puede ser inspeccionado y por medio de FireBug ,depurado.
  • 8. CONCEPTOS: diferencias  Los programas interpretados suelen ser más lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta, pero a cambio son más flexibles como entornos de programación y depuración (lo que se traduce, por ejemplo, en una mayor facilidad para reemplazar partes enteras del programa o añadir módulos completamente nuevos), y permiten ofrecer al programa interpretado un entorno no dependiente de la máquina donde se ejecuta el intérprete, sino del propio intérprete (lo que se conoce comúnmente como máquina virtual).  Comparando su actuación con la de un ser humano, un compilador equivale a un traductor profesional que, a partir de un texto, prepara otro independiente traducido a otra lengua, mientras que un intérprete corresponde al intérprete humano, que traduce de viva voz las palabras que oye, sin dejar constancia por escrito.  En la actualidad, uno de los entornos más comunes de uso de los intérpretes informáticos es Internet, debido a la posibilidad que estos tienen de ejecutarse independientemente de la plataforma.
  • 9. DEPURACIÓN JScript Texto fuente Firebug Otros Es un depurador depuradores integrado en el No disponen de las navegador que se capacidades de mejora periódicamente Firebug, no están y dispone de un alto incrustados en el número de navegador ni son componentes… multiplataforma…
  • 10. FIREBUG WEB Consola Inspector Log & Monitor Navegador CSS & DOM Profiler & Depurador
  • 11. FIREBUG: INSTALACIÓN  Primero debemos tener instalado el navegador con la extensión “DOM – Inspector” o también comúnmente llamado: Inspeccionador del árbol DOM. Después pasamos a abrir el navegador e instalar el componente Firebug desde “Herramientas-> Complementos” -> “Obtener extensiones”…donde buscaremos dicho plugin y lo instalaremos, tras esto reiniciaremos el navegador y comprobaremos que está funcionando pulsando la tecla de acceso al plugin “F12” o el nuevo icono alojado en la parte inferior derecha de Firefox: .  Y debe de aparecer la siguiente “ventana” en la parte inferior:
  • 12. FIREBUG: INSTALACIÓN  Firebug recién instalado:  Para las demostraciones y capturas he utilizado la versión 2.0.0.3 de Firefox y 1.05 de Firebug (http://www.getfirebug.com/ )  Adicionalmente se pueden instalar otras herramientas útiles para desarrollar en la web como pueden ser WebDeveloper 1.1.3 (http://chrispederick.com/work/webdeveloper/ ) y otras…
  • 13. EJEMPLOS  Tomaremos como ejemplo la página de la escuela para depurar contenido JavaScript que se ejecuta en ella: (http://etsiit.ugr.es/ )  Pulsamos sobre “Enable Firebug” y una vez cargada la página podremos inspeccionar el contenido del árbol DOM ,de la estructura HTML de ésta página web en concreto, si pulsamos sobre inspect podremos ir resaltando mediante cuadros de color azul las diferentes metaetiquetas que componen los nodos del árbol de la estructura.
  • 15. EJEMPLOS : FIREBUG  De forma que en la ventana de Firebug aparece coloreado con fondo azul claro el contenido del marco que estamos apuntando en la página web. Al igual que aparece el estilo CSS utilizado en dicho nodo, en la parte derecha del componente, podemos seleccionar la pestaña “Layout” que viene a ser la disposición de dicho elemento HTML o nodo y sus bordes,establecidos por parámetros de estilo.
  • 16. EJEMPLOS : FIREBUG  La pestaña DOM es la más interesante de esta parte ya que nos muestra la información referente a dicho nodo seleccionado
  • 17. EJEMPLOS : FIREBUG  En éste caso podemos ver que el enlace es un enlace que contiene un evento “onclick” (en lenguaje JavaScript) que realiza una llamada a varias funciones “selectRSS(); ajaxManager(); return false;” y devuelve falso para no “navegar” a otra página…  Para no tener que buscar dichas funciones haremos uso del Profiler que viene en la pestaña Console, y existen dos casos para hacer uso del mismo, el primero, si pulsamos en la web sobre “ETSIIT NOTICIAS” sin hacer uso del botón “profile”, debe de aparecer una llamada en segundo plano en JavaScript …
  • 18. EJEMPLOS : FIREBUG  …donde podemos comprobar los datos de la petición: el fichero que se ha llamado, el método de transporte de datos, las cabeceras de la respuesta,tiempo de la misma en milisegundos,etc. Observar que aparece la línea del fichero fuente que se ha ejecutado al llamar al evento…
  • 19. EJEMPLOS : FIREBUG El segundo caso de uso del profiler: Si usamos en el botón “Profile” y luego pinchamos en un enlace de la web, por cambiar que sea una noticia, por ejemplo “Premios al mejor proyecto informático y a la mejor aplicación”, al cambiar el contenido de la página deberemos volver a pulsar “Profile”, para que deje de analizar las llamadas JavaScript que se están ejecutando. Debe aprecer algo como lo siguiente:
  • 20. EJEMPLOS : FIREBUG  Si miramos el enlace sobre el que pinchamos anteriormente con “inspect” sobre éste, podemos ver que el contenido de la llamada en el evento era : `onclick="openNews(1)"´, pero no sabíamos que más se ejecutaba puesto que no habiamos mirado el código JavaScript de dicha función o llamada…,ahora vemos qué más se está ejecutando y se adjunta una tabla de estadísticas que informan acerca de la ejecución del código en la máquina virtual de dicho lenguaje. Se han realizado 3 llamadas a funciones que en principio no tienen que ver con la primera “openNews” ,para saber qué es lo que hace esa función pinchamos en “ajax.js (line 143)” de la columna File.
  • 21. EJEMPLOS : FIREBUG  Y hemos entrado al modo depurador ,es la pestaña Script del componente Firebug de Firefox, en la parte izquierda tenemos las listas de inspecciones y puntos de ruptura para la página actual, podemos añadir una inspección pinchando en el cuadro derecho de fondo amarillo “New watch expression…” y escribiendo el nombre de la variable. El modo de funcionamiento en éste punto es igual a un depurador de cualquier otro lenguaje.
  • 22. EJEMPLOS : FIREBUG  Para comprobar su funcinamiento añadiremos “noticia” a las inspecciones y un breakpoint, pinchando en la línea 144 del código fuente para éste fichero “ajax.js” donde nos encontramos en éste momento.Antes de probar que funciona ,si leemos el contenido de la función , aparece toggleDiv() ,podemos buscar dicha función en el minibuscador del componente en la parte superior derecha del mismo, “function toggleDiv” y asi mismo comprobaremos por qué se han hecho 3 llamadas a ésta función y otras 3 a “MM_findObj()” que se llama una vez dentro de “toggleDiv()”.  Ahora podemos ir a la página y pinchar en “Volver” que no es más que una llamada a returnNews() ,la función justo por encima de openNews() que acabamos de analizar, y ahora al pinchar sobre la misma noticia anterior veremos que salta el punto de ruptura y tenemos los valores de las inspecciones rellenos:
  • 24. EJEMPLOS : FIREBUG  “noticia” está a 0 , “this” es la única variable global en éste punto,con toda la información del objeto disponible y “not” es el parámetro de la función con valor 1.Vamos pulsando F11 (StepInto) para ir ejecutando paso a paso cada instrucción y entrando en las posibles llamadas que haya dentro de ésta función. En la primera línea que se ejecuta comprobamos que noticia se pone a 1 en la ventana de “Watch” ,la inspección está funcionando correctamente. La segunda línea es una llamada a la función toggleDiv() a la que entra por usar StepInto (F11)
  • 25. EJEMPLOS : FIREBUG  y para darle el valor a “e” necesita entrar en la función MM_findObj() con el parámetro pasado “pagNot0”, en éste punto antes de continuar deberíamos saber qué es “pagNot0”, se encuentra en el árbol DOM pero si nos perdemos en él pasamos a la pestaña HTML y utilizando el buscador encontraremos que se trata de una división donde se colocan las noticias:
  • 27. EJEMPLOS : FIREBUG  Coloreada en azul está la división “pagNot0”, ahora podemos pasar de nuevo a la pestaña Script porque sabemos qué es lo que va a cambiar el código JavaScript ,la función MM_findObj() buscará dicho nodo asi que no vamos a iterar toda ésta sino que añadiremos un breakpoint al final en la línea 34 donde dice “return x” (comprendiendo la lógica de la función previamente) y pulsando sobre “Continue” (F8) seguimos con F11 y volvemos a la llamada a “toggleDiv()” y “e” tiene ya el valor del nodo del DOM “div#pagNot0.paginaNoticias…” vemos que desaparece el contenido porque se cambia el estilo de la división haciéndose invisible y que se hace visible el contenido de la noticia seleccionada (y que se cargó al cargarse la página) para mostrar,en éste caso la noticia 1 ;se oculta la división del listado de las noticias en “pagNot0” y se muestra la división de la noticia seleccionada: “noticia1” al igual que los enlaces para volver al estado anterior “toggleDiv("newsvolver");”.
  • 28. EJEMPLOS : FIREBUG  Para hacer ahora algo más práctico y demostrar la potencia del depurador modificaremos el árbol DOM de la página , inspeccionando (pestaña Console -> botón “Inspect” ) llendo a la división “pagNot0” y pulsando en `<div id=”pagNot0”… ´ Pulsaremos sobre “EDIT” justo encima de las pestañas ,dentro del componente e iremos al final del código mostrado añadiendo un enlace nuevo al HTML de la división con éste contenido al final del texto ,pero antes del último </div>:  <br/><a onclick="openNews(27)" href="#" style="border- bottom-style: groove;">Enlace creado por mi para probar el depurador Firebug</a>  Repetimos la operación pero ahora cambiamos la división “contenedorNoticias” añadiéndole otra división nueva con ID 27.  <div style="display: none;" class="noticia" id="noticia27"><div class="tituloNot"><a href="javascript:windowalert('Noticia creada por mi');">Noticia creada por mi</a><br/></div><span class="fechaNot">Publicada el:<strong> 23/04/2007</strong></span><span class="enlaceNot"><a href="javascript:windowalert('Noticia creada por mi');"> Leer </a></span><div class="descNot"/></div>
  • 29. EJEMPLOS : FIREBUG Nota: Le he puesto de ID noticia27 porque la última noticia es la noticia18, por poner un número alto.Además no hace falta meter la división noticia27 dentro del contenedor del resto porque el código busca por todo el árbol DOM para encontrar el elemento con dicho ID. Comprobamos que al no insertar el enlace dentro de una división donde se aplican los estilos CSS para enlaces aparecerá ,con una fuente y un color distintos, lógicamente:
  • 31. EJEMPLOS : FIREBUG  Así podemos crear nuestra propia noticia sin tener que cambiar el código fuente que genera el servidor http Apache meditante el script PHP.  Podemos llamar directamente a las funciones,por ejemplo a “returnNews()” sin tenerque hacer uso de los eventos, mediante la pestaña “Console” ,escribimos el nombre de la función o cualquier otra instrucción y pulsamos en “Run” justo debajo del panel derecho que es el hueco para insertar las líneas a ejecutar…  Ésta parte es de la más útiles que tiene el depurador ya que podemos utilizar código para modificar la página, podemos llamar a openNews(numero) donde numero es la noticia a mostrar, o podemos ver el valor de noticia en un momento concreto e inspeccionar un objeto de la página, como por ejemplo un elemento,un nodo del DOM, por medio del uso de funciones, para acortar se suele utilizar document.getElementById(„id‟) ,que localiza elementos del árbol por su id , por medio de una función llamada $(„id‟) , de forma que $(„examenes‟) nos devuelve el elemento (lista en este caso) correspondiente: <li id="examenes">
  • 32. EJEMPLOS : FIREBUG La última pestaña pero no menos importante es “Net” y sirve para comprobar que todos los ficheros de la web han sido descargados ,muestra lo que tardaron en hacerlo.