Diferencia entre revisiones de «Usuario:Juanda/jQuery/Introducción»

De WikiEducator
Saltar a: navegación, buscar
(Instalación plugin de jQuery para Eclipse Kepler)
 
(45 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
 
{{Usuario:juanda/jQuery/nav }}
 
{{Usuario:juanda/jQuery/nav }}
{{MiTitulo| Introducción}}
+
{{#widget:Slides}} {{MiTitulo| Curso de jQuery-Introducción}}  
 
+
 
<div class="slides layout-regular template-default">
 
<div class="slides layout-regular template-default">
 
<div class="slide">
 
<div class="slide">
Línea 7: Línea 6:
 
= Introducción =
 
= Introducción =
 
</div>
 
</div>
 +
 
<div class="slide">
 
<div class="slide">
=== ¿Qué es JQuery? ===
+
=== Requerimientos previos ===
 +
*html
 +
*Conocimiento básico de javascript
 +
*Conocimiento básico de document object model (DOM)
 +
</div>
  
 +
<div class="slide">
 +
=== ¿Qué es jQuery? ===
 
*jQuery es una librería de funciones JavaScript:
 
*jQuery es una librería de funciones JavaScript:
*“Write less, do more” (escribe menos, haz más)
+
*'''“Write less, do more”''' (escribe menos, haz más)
 
*Funcionalidad:
 
*Funcionalidad:
 
:Selección y manipulación de elementos HTML y CSS
 
:Selección y manipulación de elementos HTML y CSS
Línea 18: Línea 24:
 
:AJAX
 
:AJAX
 
:Compatibilidad con todos los navegadores
 
:Compatibilidad con todos los navegadores
:….   
+
:…
 
</div>
 
</div>
 +
 
<div class="slide">
 
<div class="slide">
=== CDN ===
+
===Versiones de jQuery===
 +
*Versión actual de jQuery: '''1.10.2''' y '''2.0.3'''
 +
*[http://jquery.org/license/ Licencia MIT]
 +
*La funcionalidad es la misma
 +
*La rama 2.x no es compatible con IE 6-8
 +
*La rama 2.x es algo más ligera
 +
*Usaremos la rama 1.x:
 +
:Misma funcionalidad
 +
:Mayor compatibilidad
 +
</div>
  
*Se puede descargar de JQuery.com (versión producción y versión desarrollo) e incluirla en nuestra web:
+
<div class="slide">
 +
 
 +
=== Versiones de jQuery ===
 +
*Versión de producción:
 +
:Minified y comprimida
 +
:Aproximadamente 90KB
 +
*Versión de desarrollo:
 +
: Sin comprimir
 +
: Aproximadamente 3 veces más pesada, en torno a 270KB
 +
 
 +
*La rama 2.x pesa un 10% menos, resulta inapreciable
 +
 
 +
*Se puede descargar de [http://www.jquery.com/download la web de jQuery]
 +
</div>
 +
<div class="slide">
 +
*Versión de producción:
 
<source lang="javascript">
 
<source lang="javascript">
<script type="text/javascript" src="jquery.js"></script>
+
<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
 
</source>  
 
</source>  
 +
*Versión de desarrollo
 +
<source lang="javascript">
 +
<script type="text/javascript" src="jquery-1.10.2.js"></script>
 +
</source>
 +
</div>
 +
 +
<div class="slide">
 +
 +
=== Uso de un CDN ===
 +
 
*También a través de un '''CDN''' (Content Delivery Network).
 
*También a través de un '''CDN''' (Content Delivery Network).
 
*¿Qué es un CDN? Grupo de servidores repartidos por todo el mundo en puntos estratégicos y pensados para la distribución de ficheros):
 
*¿Qué es un CDN? Grupo de servidores repartidos por todo el mundo en puntos estratégicos y pensados para la distribución de ficheros):
 
* CDN de Google:
 
* CDN de Google:
 
<source lang="javascript">
 
<source lang="javascript">
<script type="text/javascript" src="jquery.js"></script>
+
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
 
</source>  
 
</source>  
CND de Microsoft:
+
*CDN de Microsoft:
 
<source lang="javascript">
 
<source lang="javascript">
<script type="text/javascript" src="jquery.js"></script>
+
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.2.min.js"></script>
 
</source>  
 
</source>  
</div>
+
*CDN del propio jQuery:
<div class="slide">
+
: Minified:
=== Etiquetas de JavaScript en el código html ===
+
<source lang="html4strict">
+
<html>
+
<body>
+
<script type="text/javascript">
+
<!--
+
document.write("¡Hola Mundo!");
+
//-->
+
</script>
+
</body>
+
</html>
+
</source>
+
*Etiquetas de JavaScript:
+
 
<source lang="javascript">
 
<source lang="javascript">
 
+
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript"> </script>  
+
 
</source>  
 
</source>  
* Comentario en html (para que el navegador no muestre el javascript como texto si no lo sabe ejecutar). ¡Se debe poner para hacer validación W3C!
+
:Full:
</div>
+
<div class="slide">
+
<source lang="html4strict">
+
<!--  -->
+
</source>
+
* Comentario en JavaScript, útil en el ejemplo anterior, para que no se interprete dentro del JavaScript la marca de comentario de html:
+
 
<source lang="javascript">
 
<source lang="javascript">
// Comentario en JavaScript
+
<script type="http://code.jquery.com/jquery-1.10.2.js"></script>
</source>  
+
 
+
* Método write del objeto document para escribir en la página web:
+
<source lang="javascript">
+
document.write
+
 
</source>  
 
</source>  
 
</div>
 
</div>
<div class="slide">
 
  
===Colocación del JavaScript===
 
====JavaScript en el head====
 
<source lang="html4strict">
 
<html>
 
<head>
 
<script type="text/javascript">
 
....
 
</script>
 
</head>
 
...
 
</html>
 
</source>
 
*Ejecución mediante llamada, al “disparar” (trigger) un evento.
 
*Ejecución previa a la renderización del del body
 
 
</div>
 
 
<div class="slide">
 
<div class="slide">
====JavaScript en el body====
 
<source lang="html4strict">
 
<html>
 
<head>
 
</head>
 
<body>
 
<script type="text/javascript">
 
....
 
</script>
 
</body>
 
</html>
 
</source>
 
* Ejecución: Al cargar la página (generará contenido de la página)
 
  
 +
=== Momento de Ejecución del código Javascript ===
 +
* Cuando la página se ha cargado.
 +
<source lang="javascript">
 +
window.onload = function(){ /*Aquí viene mi código de javascript*/ }
 +
</source>
 +
* ¿Por qué? No se puede ejecutar hasta que el DOM se haya cargado completamente
 +
* Desventaja: Habrá que esperar la carga completa de imágenes y anuncios para su ejecución.
 
</div>
 
</div>
 
<div class="slide">
 
<div class="slide">
====JavaScript en un fichero externo====
+
{{Actividad|
 +
Title=Hola Mundo mediante javascript|
 +
* Crea una página web con un enlace que muestre un alert con el texto "Hola Mundo" y que "anule" el enlace.
 
<source lang="html4strict">
 
<source lang="html4strict">
<html>
+
<!DOCTYPE html>
<head>
+
<html>
<script type="text/javascript" src="xxx.js"></script>
+
<head>
</head>
+
  <meta charset="utf-8">
<body>
+
  <title>Hola Mundo en javaScript</title>
</body>
+
  <script type="text/javascript">
</html>
+
  window.onload = function() {
 +
  document.getElementById("holamundo").onclick = holaMundo;
 +
  }
 +
  function holaMundo()
 +
  {
 +
  alert ("Hola Mundo");
 +
  return false;
 +
  }
 +
  </script>
 +
</head>
 +
<body>
 +
  <a id="holamundo" href="http://jquery.com/">jQuery</a>
 +
</body>
 +
</html>
 
</source>
 
</source>
 
+
}}
*Para ahorrar código si se van a ejecutar los mismos scripts en varias páginas html.
+
*El script de JavaScript externo debe tener extensión .js
+
* El type nos lo podemos ahorrar si codificamos en html5
+
 
</div>
 
</div>
 
<div class="slide">
 
<div class="slide">
  
====JavaScript como valor de un atributo ====
+
=== Momento de Ejecución del código jQuery ===
<source lang="html4strict">
+
* Cuando el documento (DOM) esté preparado para ser manipulado.
<html>
+
* Antes de que se carguen imágenes o anuncios.
<head>
+
* ¡Ojo al efectuar acciones sobre imágenes si no están todavía cargadas!
</head>
+
<body>
+
<p onclick=”funcion();">
+
Ejemplo de Javascript
+
</p>
+
</body>
+
</html>
+
</source>
+
  
* Ensucia el código html y complica el mantenimiento del JavaScript
+
<source lang="javascript">
* Solo lo utilizaremos aquí para algunos casos especiales
+
  
 +
$(document).ready(function(){
 +
  // Aquí viene mi código jQuery
 +
});
 +
</source>
 
</div>
 
</div>
 
<div class="slide">
 
<div class="slide">
 +
{{Actividad|
 +
Title=Hola Mundo mediante jQuery|
 +
* Descarga una versión de jQuery e inserta las siguientes instrucciones de jQuery:
  
=== Etiqueta noscript===
 
*El javascript puede estar deshabilitado por el usuario o por el navegador.
 
 
*Si la página web requiere JavaScript para su correcto funcionamiento, se incluya un mensaje de aviso al usuario indicándole que debería activar JavaScript para disfrutar completamente de la página.
 
 
</div>
 
<div class="slide">
 
 
====Ejemplo uso etiqueta noscript====
 
 
<source lang="html4strict">
 
<source lang="html4strict">
<head>  
+
$("a").click(function(event) {
.
+
alert("Hola Mundo");
 +
event.preventDefault();
 +
});
 +
</source>
 +
*Resultado actividad:
 +
<source lang="html4strict">
 +
<!DOCTYPE html>
 +
<html lang="en">
 +
<head>
 +
<meta charset="utf-8">
 +
<title>Hola Mundo con jquery</title>
 +
<script src="jquery-1.10.2.min.js"></script>
 +
<script>
 +
$(document).ready(function() {
 +
$("a").click(function(event) {
 +
alert("Hola Mundo");
 +
event.preventDefault();
 +
});
 +
});
 +
</script>
 
</head>
 
</head>
 
<body>
 
<body>
<noscript>
+
<a href="http://jquery.com/">jQuery</a>
<p>Bienvenido a Mi Sitio</p>
+
  <p>
+
Esta página  requiere para su funcionamiento el uso de JavaScript.  
+
Si lo has deshabilitado intencionadamente, por favor vuelve a activarlo.
+
</p>
+
</noscript>
+
 
</body>
 
</body>
 
</source>
 
 
</div>
 
 
<div class="slide">
 
===Actividades===
 
 
</div>
 
 
<div class="slide">
 
 
{{Actividad|
 
Title=Javascript en el head|
 
* Crea una página web con el siguiente código y observa el orden de carga en el navegador.
 
<source lang="html4strict">
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
<head>
 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
<title>Ejemplo de código JavaScript en el propio documento</title>
 
<script type="text/javascript">
 
  alert("Hola Mundo");
 
</script>
 
</head>
 
<body>
 
<p>Mi primer programa con Javascript</p>
 
</body>
 
 
</html>
 
</html>
 
</source>
 
</source>
 
}}
 
}}
 
 
</div>
 
</div>
 
 
<div class="slide">
 
<div class="slide">
  
 +
=== Instalación plugin de jQuery para Eclipse Kepler o Luna ===
 +
*Instalamos el Marketplace de Eclipse desde Help->Install new Software (por defecto ya está instalado en Eclipse Kepler)
 +
*Ejecutamos Help->Eclipse Marketplace y buscamos JSDT jQuery y lo instalamos
 +
*Seleccionamos el proyecto y pulsamos en properties (botón derecho) y pulsamos JavaScript->Include Patht Library y seleccionamos jQuery.
  
{{Actividad|
+
*Si el plugin de jQuery no funciona, tocará utilizar Eclipse Juno :-(
Title=Javascript en el body|
+
*En Brackets funciona correctamente :-)
* Crea una página web con el siguiente código y observa el orden de carga en el navegador.
+
<source lang="html4strict">
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
<title>Ejemplo de código JavaScript en el propio documento</title>
+
</head>
+
<body>
+
<p>Mi primer programa con Javascript</p>
+
<script type="text/javascript">
+
  alert("Hola Mundo");
+
</script>
+
</body>
+
</html>
+
</source>
+
}}
+
 
+
 
+
 
</div>
 
</div>
 
<div class="slide">
 
<div class="slide">
  
===Tareas===
+
===Sintaxis===
 +
'''$(selector).action()'''
 +
*'''$''': Simbolo para definir JQuery (podríamos usar también JQuery)
 +
:'''selector''': Consulta sobre los elementos HTML (sintaxis muy similar a CSS)
 +
:'''action''': Acción que se ejecuta sobre los elementos
  
</div>
+
*Ejemplos:
<div class="slide">
+
<source lang="javascript">
 
+
$(this).hide() //oculta el elemento actual
{{DGA tarea|
+
$("p").hide() //oculta todos los elementos de tipo párrafo
Title=Ejercicio 1|
+
$("p.test").hide() //oculta todos los párrafos con class=test
Crea los ejercicios anteriores pero con el JavaScript como elemento inline
+
$("#test").hide() //oculta todos los elementos con id=test
}}
+
 
+
</div>
+
<div class="slide">
+
* Solución Ejercicio 1
+
¡Ojo con las comillas!
+
<source lang="html4strict">
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
<title>Ejercicio 1</title>
+
</head>
+
<body>
+
<p onclick="alert('Hola Mundo')">
+
Mi primer programa con Javascript
+
</p>
+
</body>
+
</html>
+
 
</source>
 
</source>
  
Línea 259: Línea 206:
 
<div class="slide">
 
<div class="slide">
  
{{DGA tarea|
+
=== Ejemplos de uso del selector de jQuery  ===
Title=Ejercicio 2|
+
<source lang="javascript">
Modificar el ejercicio anterior para que:
+
$("p")  //se seleccionan todos los elementos de tipo párrafo
*Todo el código JavaScript se encuentre en un archivo externo llamado codigo.js y el script siga funcionando de la misma manera.
+
$("p.intro")  //todos los párrafos con class=intro
*Después del primer mensaje, se debe mostrar otro mensaje que diga "Soy el primer script"
+
$("p#demo")  //todos los párrafos con id=demo
*Añadir algunos comentarios que expliquen el funcionamiento del código
+
$("[href]") //todos los elementos con atributo href
*Añadir en la página html un mensaje de aviso para los navegadores que no tengan activado el soporte de JavaScript
+
$("[href='#']") //todos los elementos con atributo href="#"
}}
+
$("[href!='#']")  //todos los elementos con atributo href diferente de "#"
 
+
$("[href$='.jpg']") //todos los elmentos con atributo href que acabe en .jpg
 +
$("p").css("background-color","yellow"); //modificamos el background-color de todos los párrafos a amarillo
 +
$("p#intro:first") //El primer párrafo con id="intro"
 +
$("ul li:first") El primer elemento <li> de cada <ul>
 +
$("div#intro .head") //Todos los elementos con class="head" dentro de un <div> con id="intro"
 +
</source>
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
* Solución Ejercicio 2
+
===jQuery.noConflict()===
Página html:
+
* Utilizamos jQuery.noConflict() para evitar conflictos de nombre con otras librerías de JavaScript.
<source lang="html4strict">
+
<source lang="javascript">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
+
<html>
<head>
+
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
<script src="jquery.js"></script>
<title>Ejercicio 2 - Archivo externo y varios mensajes</title>
+
<script>
<script type="text/javascript" src="codigo.js"></script>
+
var jq=jQuery.noConflict();
</head>
+
jq(document).ready(function(){
<body>
+
  jq("button").click(function(){
<noscript>
+
    jq("p").hide();
Esta página <strong>requiere</strong> el uso de JavaScript
+
  });
</noscript>
+
});
<p>Esta página muestra 2 mensajes</p>
+
</script>
</body>
+
</head>
 +
<body>
 +
<p>Esto es un párrafo.</p>
 +
<button>Pulsa aquí</button>
 +
</body>
 
</html>
 
</html>
 
</source>
 
</source>
 +
 
</div>
 
</div>
  
<div class="slide">
 
* Solución Ejercicio 2
 
Página codigo.js:
 
<source lang="html4strict">
 
// Al cargarse el archivo JavaScript, se muestra un mensaje
 
alert("Hola Mundo!");
 
// Despues del primer mensaje, se muestra otro mensaje seguido
 
alert("Hola Mundo por segunda vez!");
 
  
</source>
 
</div>
 
  
 
</div>
 
</div>

Última revisión de 06:24 19 nov 2013


Requerimientos previos

  • html
  • Conocimiento básico de javascript
  • Conocimiento básico de document object model (DOM)

¿Qué es jQuery?

  • jQuery es una librería de funciones JavaScript:
  • “Write less, do more” (escribe menos, haz más)
  • Funcionalidad:
Selección y manipulación de elementos HTML y CSS
Funciones de eventos en HTML
Efectos y animaciones de JavaScript
AJAX
Compatibilidad con todos los navegadores

Versiones de jQuery

  • Versión actual de jQuery: 1.10.2 y 2.0.3
  • Licencia MIT
  • La funcionalidad es la misma
  • La rama 2.x no es compatible con IE 6-8
  • La rama 2.x es algo más ligera
  • Usaremos la rama 1.x:
Misma funcionalidad
Mayor compatibilidad

Versiones de jQuery

  • Versión de producción:
Minified y comprimida
Aproximadamente 90KB
  • Versión de desarrollo:
Sin comprimir
Aproximadamente 3 veces más pesada, en torno a 270KB
  • La rama 2.x pesa un 10% menos, resulta inapreciable
  • Versión de producción:
	<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
  • Versión de desarrollo
	<script type="text/javascript" src="jquery-1.10.2.js"></script>

Uso de un CDN

  • También a través de un CDN (Content Delivery Network).
  • ¿Qué es un CDN? Grupo de servidores repartidos por todo el mundo en puntos estratégicos y pensados para la distribución de ficheros):
  • CDN de Google:
	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  • CDN de Microsoft:
	<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.2.min.js"></script>
  • CDN del propio jQuery:
Minified:
	<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
Full:
	<script type="http://code.jquery.com/jquery-1.10.2.js"></script>

Momento de Ejecución del código Javascript

  • Cuando la página se ha cargado.
window.onload = function(){ /*Aquí viene mi código de javascript*/ }
  • ¿Por qué? No se puede ejecutar hasta que el DOM se haya cargado completamente
  • Desventaja: Habrá que esperar la carga completa de imágenes y anuncios para su ejecución.


Icon activity.jpg

Hola Mundo mediante javascript

  • Crea una página web con un enlace que muestre un alert con el texto "Hola Mundo" y que "anule" el enlace.
 <!DOCTYPE html>
 <html>
 <head>
   <meta charset="utf-8">
   <title>Hola Mundo en javaScript</title>
   <script type="text/javascript">
   window.onload = function() { 
   		document.getElementById("holamundo").onclick = holaMundo;
   }
   function holaMundo()
   {
	   alert ("Hola Mundo");
	   return false;
   }
   </script>
 </head>
 <body>
   <a id="holamundo" href="http://jquery.com/">jQuery</a>
 </body>
 </html>




Momento de Ejecución del código jQuery

  • Cuando el documento (DOM) esté preparado para ser manipulado.
  • Antes de que se carguen imágenes o anuncios.
  • ¡Ojo al efectuar acciones sobre imágenes si no están todavía cargadas!
$(document).ready(function(){
   // Aquí viene mi código jQuery
});


Icon activity.jpg

Hola Mundo mediante jQuery

  • Descarga una versión de jQuery e inserta las siguientes instrucciones de jQuery:
		$("a").click(function(event) {
			alert("Hola Mundo");
			event.preventDefault();
		});
  • Resultado actividad:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Hola Mundo con jquery</title>
<script src="jquery-1.10.2.min.js"></script>
<script>
	$(document).ready(function() {
		$("a").click(function(event) {
			alert("Hola Mundo");
			event.preventDefault();
		});
	});
</script>
</head>
<body>
	<a href="http://jquery.com/">jQuery</a>
</body>
</html>




Instalación plugin de jQuery para Eclipse Kepler o Luna

  • Instalamos el Marketplace de Eclipse desde Help->Install new Software (por defecto ya está instalado en Eclipse Kepler)
  • Ejecutamos Help->Eclipse Marketplace y buscamos JSDT jQuery y lo instalamos
  • Seleccionamos el proyecto y pulsamos en properties (botón derecho) y pulsamos JavaScript->Include Patht Library y seleccionamos jQuery.
  • Si el plugin de jQuery no funciona, tocará utilizar Eclipse Juno :-(
  • En Brackets funciona correctamente :-)

Sintaxis

$(selector).action()

  • $: Simbolo para definir JQuery (podríamos usar también JQuery)
selector: Consulta sobre los elementos HTML (sintaxis muy similar a CSS)
action: Acción que se ejecuta sobre los elementos
  • Ejemplos:
$(this).hide() 		//oculta el elemento actual
$("p").hide() 		//oculta todos los elementos de tipo párrafo
$("p.test").hide() 	//oculta todos los párrafos con class=test
$("#test").hide() 	//oculta todos los elementos con id=test

Ejemplos de uso del selector de jQuery

$("p")  //se seleccionan todos los elementos de tipo párrafo
$("p.intro")  //todos los párrafos con class=intro
$("p#demo")  //todos los párrafos con id=demo
$("[href]") //todos los elementos con atributo href
$("[href='#']") //todos los elementos con atributo href="#"
$("[href!='#']")  //todos los elementos con atributo href diferente de "#"
$("[href$='.jpg']") //todos los elmentos con atributo href que acabe en .jpg
$("p").css("background-color","yellow"); //modificamos el background-color de todos los párrafos a amarillo
$("p#intro:first") 	//El primer párrafo con id="intro"
$("ul li:first") 	El primer elemento <li> de cada <ul>
$("div#intro .head") //Todos los elementos con class="head" dentro de un <div> con id="intro"

jQuery.noConflict()

  • Utilizamos jQuery.noConflict() para evitar conflictos de nombre con otras librerías de JavaScript.
<!DOCTYPE html>
<html>
<head>
<script src="jquery.js"></script>
<script>
var jq=jQuery.noConflict();
jq(document).ready(function(){
  jq("button").click(function(){
    jq("p").hide();
  });
});
</script>
</head>
<body>
<p>Esto es un párrafo.</p>
<button>Pulsa aquí</button>
</body>
</html>