fbpx
Wikipedia

Prototype

Para el videojuego, véase Prototype.

Prototype
Información general
Tipo de programa Biblioteca javascript
Desarrollador Prototype Core Team
Licencia MIT
Información técnica
Programado en Javascript
Versiones
Última versión estable 1.7.1 22 de septiembre de 2015 (5 años, 11 meses y 29 días)
Asistencia técnica
Enlaces
Sitio web oficial
Repositorio de código

Prototype es un framework escrito en JavaScript que se orienta al desarrollo sencillo y dinámico de aplicaciones web. Es una herramienta que implementa las técnicas AJAX y su potencial es aprovechado al máximo cuando se desarrolla con Ruby On Rails.

Introducción

Con la Web 2.0 las técnicas de desarrollo de páginas web necesitaban dar un gran salto. Con esto en mente nació la técnica AJAX, que gracias a Prototype permite el desarrollo ágil y sencillo de páginas Web, esto en relación al desarrollador, y provee al cliente una manera más rápida de acceder al servicio que solicita. Prototype es un Framework basado en JavaScript orientado a proporcionar al desarrollador de técnicas AJAX listas para ser usadas. El potencial de Prototype es aprovechado al máximo si se desarrolla con Ruby On Rails, esto no quiere decir que no se puede usar desde otro lenguaje, solamente que demandara un "mayor esfuerzo" en el desarrollo.

Técnica AJAX

Antes de comenzar a desarrollar Prototype, es necesario presentar el concepto AJAX, debido a que Prototype emplea AJAX.

AJAX proviene de Ashyncronous JavaScript And XML. En pocas palabras AJAX es una técnica de desarrollo Web que incorpora varias tecnologías, como son el JavaScript y XML, consiguiendo de esta manera una forma de navegar rápida, ágil y dinámica.

AJAX funciona de la siguiente manera

evento 
  1. Se crea y configura un objeto XMLHttpRequest
  2. El objeto XMLHttpRequest realiza una llamada al servidor
  3. La petición se procesa en el servidor
  4. El servidor retorna un documento XML que contienen el resultado
  5. El objeto XMLHttpRequest llama a la función callback() y procesa el resultado
  6. Se actualiza el DOM (Document Object Model)de la página asociado con la petición con el resultado devuelto

Las características de XMLHttpRequest son

  • Comunicación GET/POST
  • Documentos pueden ser texto plano/xml
  • Trabaja en segundo plano
  • Número limitado de peticiones
  • Permite especificar un manejador para el control de cambios de estado
  • Manejador notifica el estado de la petición:
-Inicializada -Iniciada -En proceso de retornar la información -Operación completada 

El tipo de respuesta puede ser

  • Documento XML
  • Texto
  • Procesado en el cliente
  • Mostrado directamente
  • JavaScript
  • Evaluado en JavaScript mediante ‘eval()’
  • JSON, «JavaScript ObjectNotation»:
  • Formato ligero para el intercambio de datos
  • Subconjunto de la notación literal de objetos de Javascript que no requiere el uso de Javascript

Propiedades de XMLHttpRequest

  • onreadystatechange: El manejado del evento llamado en cada cambio de estado del objeto
  • readyState: Indica el estado del objeto o la petición
  • 0 = sin inicializar
  • 1 = cargando
  • 2 = fin de la carga
  • 3 = actualizando la información recibida
  • 4 = Operación completada
  • status: Estado HTTP devuelto por el servidor
  • Error 404 si la página no se encuentra
  • Error 200 si todo ha ido bien.

Las ventajas de AJAX son

  • Mayor interactividad
  • Recuperación asíncrona de datos, reduciendo el tiempo de espera del usuario
  • Facilidad de manejo del usuario
  • El usuario tiene un mayor conocimiento de las aplicaciones de escritorio
  • Se reduce el tamaño de la información intercambiada
  • Portabilidad entre plataformas
  • No requieren instalación de complementos, applets de Java, ni ningún otro elemento
  • Código público

Las desventajas de AJAX son

  • Usabilidad: Comportamiento del usuario ante la navegación
  • Botón de volver atrás del navegador
  • Empleo de iframes ocultos para almacenar el historial
  • Empleo de fragmento identificador del URL (‘#’) y recuperación mediante JavaScript
  • Problema al agregar marcadores/favoritos en un momento determinado de la aplicación
  • Problemas al imprimir páginas renderizadas dinámicamente
  • Tiempos de respuesta entre la petición del usuario y la respuesta del servidor
  • Empleo de feedback visual para indicar el estado de la petición al usuario
  • Requiere que los usuarios tengan el JavaScript activado en el navegador
  • En el caso de Internet Explorer 6 y anteriores, que necesita tener activado el ActiveX

(En Internet Explorer 7, se implementa como JavaScript nativo)

  • Como en DHTML, debe comprobarse la compatibilidad entre navegadores y plataformas

Para obtener más información consulte la página sobre AJAX.

Prototype

Prototype es un framework desarrollado en JavaScript por Sam Stephenson para el desarrollo sencillo y dinámico de páginas Web. Prototype nos simplifica gran parte del trabajo cuando se pretende desarrollar páginas altamente interactivas.

Instalación

Para comenzar a trabajar con Prototype es necesario obtener el framework, para ello deben dirigirse al sitio http://www.prototypejs.org/ y descargar prototype.js y para usarlo deben hacer lo siguiente:

  • Enlazar en la página con la etiqueta <script>:
<script type="text/JavaScript" src="path/to/prototype.js"></script> 

si emplea Ruby On Rails no es necesario descargar prototype.js, la biblioteca viene incluida. Para hacer uso de ello simplemente se lo incluye dentro de la las etiquetas <head>:

<%= javascript_include_tag 'prototype' %> 

Funciones Prototype

Ahora que ya lo tenemos instalado es hora de empezar a usar Prototype. Prototype dispone de funciones sencillas para proporcionar ayuda a la hora de escribir los scripts.


Función $()

La Función $() es bastante útil, al principio puede parecer un poco abstracta, esta función es un atajo a la función del DOM document.getElementById(), Un ejemplo para explicarlo.

 <button onclick = "Hacer();" Id = "boton"> clic </button> <script> function Hacer(){var elemento = $('#boton');elemento.innerHTML = 'Saludos!'; elemento.style.color = 'blue';} </script> 

Esta etiqueta DIV donde quieras que aparezca el elemento:

<div id="boton"> </div> 

La función $(), puede recibir el id del elemento, o puede recibir el propio elemento, y si recibe más de un elemento devuelve un vector de elementos.

Función $A()

Esta función convierte cualquier parámetro en un objeto array, pero el objeto vector de Prototype no es exactamente como el vector de javascript, ya que posee una extensión llamada Enumerable, la cual es una copia del lenguaje de programación Ruby, dándole mucha más versatilidad a JavaScript. Un Ejemplo simple.

 <input type='button' value="click" onclick="Arreglo()"> <script> function Arreglo() {var Lista=document.getElementsByTagName('div'); var Arreglo = $A(Lista); Arreglo.each(function(el, indice){ el.innerHTML = indice + ':' + 'divider' + el.id; el.style.color = 'blue'; }) }; </script> 

Función $H()

Convierte un objeto en un hash enumerable

 <button onclick="duh();" id="mponce">clic</button> <script> function duh() {var ObjetoUsuario = {id: 1, login: "dponce",   email: "correo_falso@wikipedia.org"};   // convertimos el objeto a un HASH var el_hash = $H(ObjetoUsuario); $('dponce').innerHTML = el_hash.toQueryString(); } </script> 

Función $F()

Toma un ID y devuelve el valor de cualquier campo de formulario, por ejemplo, un menú select como este:

 <select name="ciudad" id="ciudad"> <option selected="Seleccionar" value="SE">Santiago Del Estero</option>  <option value="AR">Argentina</option>  </select> <script> $F('ciudad') // 'SE' </script> 

Función document.getElementsByClassName()

Recibe una clase como parámetro y devuelve un vector con los elementos que tienen como atributo className de la clase.

 <button onclick='duh();' id='padre'>clic</button> <script> function duh(){ var arrayNodosfamilia = document.getElementsByClassName('familia'); var Arreglo = $A(arrayNodosfamilia); Arreglo.each( function(el, indice){ el.innerHTML = indice + ':' + 'divider ' + el.id; el.style.color = 'blue'; }); } </script> 

Función $$()

Es una mejora de la función document.getElementsByClassName(), recibe como parámetro un selector CSS y devuelve un vector con cada elemento que cumpla con el criterio del selector dado, ejemplo.

 <button onclick="duh();" id="padre">clic</button> <div class="familia" id="hijo"><p>ay caramba!</p></div> <script> function duh(){ var arrayNodosFamilia = $$('div#ciudad div.familia'); arrayNodosFamilia.each( function(el, indice){ el.innerHTML = indice + ':' + 'divider ' + el.id; el.style.color = 'blue'; }); } </script> 

Además podemos escribir nuestro código con menos líneas, por ejemplo

 <script> function duh(){ $$('div#ciudad div.familia').each( function(el, indice){ el.innerHTML = indice + ':' + 'divider ' + el.id; el.style.color = 'blue'; }); } </script> 

Función Binding

Prototype también añade a la función objeto dos métodos bind y bindAsEventListener. Estos son usados para asociar una función a un objeto particular de modo que la palabra clave apunte a ese objeto. Supongamos que:

 var myObject = new Object(); myObject.message = "Hello!"; myObject.eventHandler = function() { alert(this.message); } $("mydiv").onmouseover = myObject.eventHandler; 

Tradicionalmente, se conseguiría un error, porque, cuando el evento llama a la función handler, esta se refiere al elemento mydiv, y no a myObject, entonces this.message es indefinido. Se puede solucionar este problema con:

$("mydiv").onmouseover = myObject.eventHandler.bind(myObject); 

Ahora funciona bien, porque la palabra clave se limita a myObject. Siguiendo esto, el bindAsEventListener hace lo mismo, aunque pasa el objeto del evento a través de su función de una manera compatible con los distintos navegadores.

Trabajando el DOM

Prototype tiene algunos objetos (Element, Insertion, Observer y Position) que permiten distintas formas de manipular el DOM.

El Objeto Element

La mayor parte de los métodos de «Element» simplemente toman un ID o una referencia del objeto a Element que usted quiere manipular. Aquí tiene una mirada a algunos de los métodos más útiles:

 // Esconder el elemento Element.hide(elemento) // Mostrar el elemento Element.show(elemento) // Añadir una clase CSS al elemento Element.addClassName(elemento, "ClaseCSS") // Quitar la clase CSS del elemento Element.removeClassName(elemento, "ClaseCSS") // Devuelve verdadero si el elemento tiene la clase CSS Element.hasClassName(elemento, "ClaseCSS") 

El objeto INSERTION

El objeto Insertion añade fragmentos de HTML en, y alrededor de, un Elemento. Hay cuatro tipos de Insertion: Before (antes), After (después), Top (cima) and Bottom (inferior). Esto le muestra como añadiría algún HTML antes de un elemento con el ID "myelement":

new Insertion.Before("myelement", "<p>I'm before!</p>"); 

El objeto POSITION

El objeto Position puede indicar la posición en pantalla, y proporcionar información sobre la posición en relación con otros elementos de forma compatible con los navegadores. Esto debe ocupar la mayor parte del código complicado de animaciones, efectos y del código de arrastrar y soltar.

Manejando formularios

Los objetos Form y Field prevén un número de funciones simples pero convenientes para trabajar con formularios y campos «input», así como el código que soporta la puesta en práctica de AJAX con Prototype.

El objeto Form

Generalmente, los métodos del objeto Form toman una ID o una referencia del objeto a un elemento:

 // Deshabilita todos los campos de un formulario Form.disable(formulario) // Habilita todos los campos de un formulario Form.enable(formulario) // Limpia todos los campos de un formulario Form.reset(formulario) // Devuelve una lista con todos los valores del formulario Form.getElements(formulario) // Enfocar el primer campo Form.focusFirstElement(formulario) 

El objeto Field

El objeto Field trata con elementos individuales del formulario y sus métodos típicamente toman un ID o una referencia del objeto a un elemento de un modo muy similar al objeto Form:

 // Limpia el o los campos, acepta cualquier número de argumentos Field.clear(campo1, campo2) // Devuelve el foco a un campo Field.focus(campo) // Selecciona un campo Field.select(campo) 

La serialización del Formulario

En términos de Prototype, serializar un formulario significa leer todos los elementos del formulario y convertirlos en una cadena codificada en URL similar a la que sería enviado si usted aceptara el formulario. Por ejemplo:

 <form id="busqueda" action="busqueda.php" method="post"> <input type="text" name="consultar" value="algo" /> <select name="campo"> <option value="nombre">Nombre del Artista</option>  <option value="titulo" selected="selected">Titulo de la canción</option>  </select>  <input type="submit" name="submit" value="Buscar" /> </form>  Form.serialize($("busqueda")) 

Note que Form.serialize ingeniosamente deja de lado las diferentes maneras en que los elementos del formulario son accesados, de modo que inputs, selects, checkboxes y los radio buttons son manejados correctamente. Form.serialize es útil para varias tareas, pero es el mejor cuando trabajamos con AJAX.

Observadores de formulario

Form. Observer y Form.Element. Observer permiten observar un formulario y enviar “callbacks” cuando los datos cambien. Estos son actualmente dos versiones de cada “observer” que verifican el valor actualizado. El primero es un observador periódico, que trabaja así:

 new Form. Observer($("myform"), 1, myCallBackFunction); new Form.Element. Observer($("myfield"), 1, myCallBackFunction); 

Estos «observadores» comprueban cada segundo si los datos se han modificado y, si esto es así, llamará a myCallBackFunction.

El segundo tipo de «observador» está basado en los eventos y solamente realizará la comprobación cuando se produzca la modificación o un clic-evento para los elementos. Ejemplo:

 new Form.EventObserver($("myform"), myCallBackFunction); new Form.Element.EventObserver($("myfield", myCallbackFunction); 

Si en todos los campos del formulario se colocan «observadores», tendremos una manera mucho más eficiente de observar el formulario. Pero, si se quiere “observar” los cambios de elementos que no soportan estos eventos, se debe usar los observadores periódicos.

Es totalmente posible realizar estas funciones sin emplear Prototype, pero demandaría un gran esfuerzo y muchas líneas de código, en una palabra se intentaría reinventar la rueda, «para que programar algo si ya existe», solamente hay que usarlo y aportar a la modificación de lo que ya está hecho. Por eso Prototype es un framework, una biblioteca lista para ser usada en un ambiente de producción.

La Web 2.0 ya es un hecho y Prototype está pensado para ello, para aprovechar al máximo la productividad y extender las fronteras de las web's ágiles, dinámicas y sencillas.

Prototype vs...

Al comparar Prototype con otro framework, hay que distinguir el propósito de cada uno. Supongamos que se desea implementar AJAX en un proyecto basado en PHP y se decide implementar PROTOTYPE como framework. En tal caso este no sería recomendable, dado que para PHP existe otro framework más apropiado llamado Xajax. En cambio si se desarrolla con Ruby la opción es Prototype, el cual ya viene integrado en Rails

Es difícil compararlos a todos. Sin embargo, todos proveen de un mejor servicio tanto para el cliente y una manera de producir más rápida para el desarrollador. Cuando FLASH parecía copar el mercado de las aplicaciones web, hoy AJAX se lleva el premio y todas apuntan a implementar esta Técnica.

Proyectos basados en Prototype

Alternativas que emplean AJAX

DOJO Toolkit (http://dojotoolkit.org/)

  • Biblioteca JavaScript de código abierto
  • Proporciona un API para el control y manipulación de historial
  • Proporciona en el lado del cliente para la manipulación de URL y marcadores/ favoritos
  • Widgets
  • Ordenar tablas
  • Validación de formularios
  • Menús y barras de menús
  • Google y Yahoo! Maps

XAJAX ()

  • Es una biblioteca PHP de código abierto
  • Abundante documentación
  • Fácil de utilizar:
  • No requiere gran conocimiento de JavaScript
  • Sencillo de emplear:
  • Incluir biblioteca en página PHP
  • Instanciar el objeto ‘xajax’
  • Implementación de nuevas funciones en PHP

XOAD (http://www.xoad.org/, antes NAJAX)

  • Biblioteca orientada a objetos basada en PHP
  • Documentación de las clases y tutoriales sencillos
  • Emplea JSON y objetos PHP para la comunicación
  • Soporta eventos del lado del cliente y del servidor

Conclusión

Prototype es un framework más que implementa AJAX, si se lo compara con otro puede ganar o perder, pero esta un paso adelante del resto en lo que respecta al desarrollo de páginas ágiles e interactiva. El mundo cambió y hace uso de las bondades de la Web 2.0, Prototype brinda su aporte a este auge, para lograr mejores servicios a menor costo de desarrollo.

Con la introducción de AJAX en aplicaciones Web el manejo del objeto XMLHttpRequest se hace simple. En una secuencia en donde el usuario interactúa con la Web y provoca una petición, se crea un objeto XMLHttpRequest, luego este objeto realiza una llamada al servidor solicitando el evento. la petición se procesa en el servidor y devuelve un resultado en formato XML, o texto plano, o JavaScript, etc. que contienen el resultado de la petición. Luego el objeto XMLHttpRequest hace un llamado a la función callback() para procesar el resultado y por último se actualiza el DOM (Document Object Model) con el resultado devuelto.

De esta manera AJAX permite lograr páginas rápidas y ágiles brindado un servicio mejor al usuario.

Enlaces externos

  •   Datos: Q746599

prototype, para, videojuego, véase, información, generaltipo, programabiblioteca, javascriptdesarrollador, core, teamlicenciamitinformación, técnicaprogramado, enjavascriptversionesÚltima, versión, estable1, septiembre, 2015, años, meses, días, asistencia, téc. Para el videojuego vease Prototype PrototypeInformacion generalTipo de programaBiblioteca javascriptDesarrolladorPrototype Core TeamLicenciaMITInformacion tecnicaProgramado enJavascriptVersionesUltima version estable1 7 1 22 de septiembre de 2015 5 anos 11 meses y 29 dias Asistencia tecnicaEnlacesSitio web oficial Repositorio de codigo editar datos en Wikidata Prototype es un framework escrito en JavaScript que se orienta al desarrollo sencillo y dinamico de aplicaciones web Es una herramienta que implementa las tecnicas AJAX y su potencial es aprovechado al maximo cuando se desarrolla con Ruby On Rails Indice 1 Introduccion 1 1 Tecnica AJAX 1 1 1 AJAX funciona de la siguiente manera 1 1 2 Las caracteristicas de XMLHttpRequest son 1 1 3 El tipo de respuesta puede ser 1 1 4 Propiedades de XMLHttpRequest 1 1 5 Las ventajas de AJAX son 1 1 6 Las desventajas de AJAX son 2 Prototype 2 1 Instalacion 2 2 Funciones Prototype 2 2 1 Funcion 2 2 2 Funcion A 2 2 3 Funcion H 2 2 4 Funcion F 2 2 5 Funcion document getElementsByClassName 2 2 6 Funcion 2 2 7 Funcion Binding 2 3 Trabajando el DOM 2 3 1 El Objeto Element 2 3 2 El objeto INSERTION 2 3 3 El objeto POSITION 2 4 Manejando formularios 2 4 1 El objeto Form 2 4 2 El objeto Field 2 4 3 Observadores de formulario 2 5 Prototype vs 2 6 Proyectos basados en Prototype 3 Alternativas que emplean AJAX 3 1 DOJO Toolkit http dojotoolkit org 3 2 XAJAX https web archive org web 20060831015457 http www xajaxproject org 3 3 XOAD http www xoad org antes NAJAX 4 Conclusion 5 Enlaces externosIntroduccion EditarCon la Web 2 0 las tecnicas de desarrollo de paginas web necesitaban dar un gran salto Con esto en mente nacio la tecnica AJAX que gracias a Prototype permite el desarrollo agil y sencillo de paginas Web esto en relacion al desarrollador y provee al cliente una manera mas rapida de acceder al servicio que solicita Prototype es un Framework basado en JavaScript orientado a proporcionar al desarrollador de tecnicas AJAX listas para ser usadas El potencial de Prototype es aprovechado al maximo si se desarrolla con Ruby On Rails esto no quiere decir que no se puede usar desde otro lenguaje solamente que demandara un mayor esfuerzo en el desarrollo Tecnica AJAX Editar Antes de comenzar a desarrollar Prototype es necesario presentar el concepto AJAX debido a que Prototype emplea AJAX AJAX proviene de Ashyncronous JavaScript And XML En pocas palabras AJAX es una tecnica de desarrollo Web que incorpora varias tecnologias como son el JavaScript y XML consiguiendo de esta manera una forma de navegar rapida agil y dinamica AJAX funciona de la siguiente manera Editar evento Se crea y configura un objeto XMLHttpRequest El objeto XMLHttpRequest realiza una llamada al servidor La peticion se procesa en el servidor El servidor retorna un documento XML que contienen el resultado El objeto XMLHttpRequest llama a la funcion callback y procesa el resultado Se actualiza el DOM Document Object Model de la pagina asociado con la peticion con el resultado devueltoLas caracteristicas de XMLHttpRequest son Editar Comunicacion GET POST Documentos pueden ser texto plano xml Trabaja en segundo plano Numero limitado de peticiones Permite especificar un manejador para el control de cambios de estado Manejador notifica el estado de la peticion Inicializada Iniciada En proceso de retornar la informacion Operacion completada El tipo de respuesta puede ser Editar Documento XML Texto Procesado en el cliente Mostrado directamente JavaScript Evaluado en JavaScript mediante eval JSON JavaScript ObjectNotation Formato ligero para el intercambio de datos Subconjunto de la notacion literal de objetos de Javascript que no requiere el uso de JavascriptPropiedades de XMLHttpRequest Editar onreadystatechange El manejado del evento llamado en cada cambio de estado del objeto readyState Indica el estado del objeto o la peticion 0 sin inicializar 1 cargando 2 fin de la carga 3 actualizando la informacion recibida 4 Operacion completada status Estado HTTP devuelto por el servidor Error 404 si la pagina no se encuentra Error 200 si todo ha ido bien Las ventajas de AJAX son Editar Mayor interactividad Recuperacion asincrona de datos reduciendo el tiempo de espera del usuario Facilidad de manejo del usuario El usuario tiene un mayor conocimiento de las aplicaciones de escritorio Se reduce el tamano de la informacion intercambiada Portabilidad entre plataformas No requieren instalacion de complementos applets de Java ni ningun otro elemento Codigo publicoLas desventajas de AJAX son Editar Usabilidad Comportamiento del usuario ante la navegacion Boton de volver atras del navegador Empleo de iframes ocultos para almacenar el historial Empleo de fragmento identificador del URL y recuperacion mediante JavaScript Problema al agregar marcadores favoritos en un momento determinado de la aplicacion Problemas al imprimir paginas renderizadas dinamicamente Tiempos de respuesta entre la peticion del usuario y la respuesta del servidor Empleo de feedback visual para indicar el estado de la peticion al usuario Requiere que los usuarios tengan el JavaScript activado en el navegador En el caso de Internet Explorer 6 y anteriores que necesita tener activado el ActiveX En Internet Explorer 7 se implementa como JavaScript nativo Como en DHTML debe comprobarse la compatibilidad entre navegadores y plataformasPara obtener mas informacion consulte la pagina sobre AJAX Prototype EditarPrototype es un framework desarrollado en JavaScript por Sam Stephenson para el desarrollo sencillo y dinamico de paginas Web Prototype nos simplifica gran parte del trabajo cuando se pretende desarrollar paginas altamente interactivas Instalacion Editar Para comenzar a trabajar con Prototype es necesario obtener el framework para ello deben dirigirse al sitio http www prototypejs org y descargar prototype js y para usarlo deben hacer lo siguiente Enlazar en la pagina con la etiqueta lt script gt lt script type text JavaScript src path to prototype js gt lt script gt si emplea Ruby On Rails no es necesario descargar prototype js la biblioteca viene incluida Para hacer uso de ello simplemente se lo incluye dentro de la las etiquetas lt head gt lt javascript include tag prototype gt Funciones Prototype Editar Ahora que ya lo tenemos instalado es hora de empezar a usar Prototype Prototype dispone de funciones sencillas para proporcionar ayuda a la hora de escribir los scripts Funcion Editar La Funcion es bastante util al principio puede parecer un poco abstracta esta funcion es un atajo a la funcion del DOM document getElementById Un ejemplo para explicarlo lt button onclick Hacer Id boton gt clic lt button gt lt script gt function Hacer var elemento boton elemento innerHTML Saludos elemento style color blue lt script gt Esta etiqueta DIV donde quieras que aparezca el elemento lt div id boton gt lt div gt La funcion puede recibir el id del elemento o puede recibir el propio elemento y si recibe mas de un elemento devuelve un vector de elementos Funcion A Editar Esta funcion convierte cualquier parametro en un objeto array pero el objeto vector de Prototype no es exactamente como el vector de javascript ya que posee una extension llamada Enumerable la cual es una copia del lenguaje de programacion Ruby dandole mucha mas versatilidad a JavaScript Un Ejemplo simple lt input type button value click onclick Arreglo gt lt script gt function Arreglo var Lista document getElementsByTagName div var Arreglo A Lista Arreglo each function el indice el innerHTML indice divider el id el style color blue lt script gt Funcion H Editar Convierte un objeto en un hash enumerable lt button onclick duh id mponce gt clic lt button gt lt script gt function duh var ObjetoUsuario id 1 login dponce email correo falso wikipedia org convertimos el objeto a un HASH var el hash H ObjetoUsuario dponce innerHTML el hash toQueryString lt script gt Funcion F Editar Toma un ID y devuelve el valor de cualquier campo de formulario por ejemplo un menu select como este lt select name ciudad id ciudad gt lt option selected Seleccionar value SE gt Santiago Del Estero lt option gt lt option value AR gt Argentina lt option gt lt select gt lt script gt F ciudad SE lt script gt Funcion document getElementsByClassName Editar Recibe una clase como parametro y devuelve un vector con los elementos que tienen como atributo className de la clase lt button onclick duh id padre gt clic lt button gt lt script gt function duh var arrayNodosfamilia document getElementsByClassName familia var Arreglo A arrayNodosfamilia Arreglo each function el indice el innerHTML indice divider el id el style color blue lt script gt Funcion Editar Es una mejora de la funcion document getElementsByClassName recibe como parametro un selector CSS y devuelve un vector con cada elemento que cumpla con el criterio del selector dado ejemplo lt button onclick duh id padre gt clic lt button gt lt div class familia id hijo gt lt p gt ay caramba lt p gt lt div gt lt script gt function duh var arrayNodosFamilia div ciudad div familia arrayNodosFamilia each function el indice el innerHTML indice divider el id el style color blue lt script gt Ademas podemos escribir nuestro codigo con menos lineas por ejemplo lt script gt function duh div ciudad div familia each function el indice el innerHTML indice divider el id el style color blue lt script gt Funcion Binding Editar Prototype tambien anade a la funcion objeto dos metodos bind y bindAsEventListener Estos son usados para asociar una funcion a un objeto particular de modo que la palabra clave apunte a ese objeto Supongamos que var myObject new Object myObject message Hello myObject eventHandler function alert this message mydiv onmouseover myObject eventHandler Tradicionalmente se conseguiria un error porque cuando el evento llama a la funcion handler esta se refiere al elemento mydiv y no a myObject entonces this message es indefinido Se puede solucionar este problema con mydiv onmouseover myObject eventHandler bind myObject Ahora funciona bien porque la palabra clave se limita a myObject Siguiendo esto el bindAsEventListener hace lo mismo aunque pasa el objeto del evento a traves de su funcion de una manera compatible con los distintos navegadores Trabajando el DOM Editar Prototype tiene algunos objetos Element Insertion Observer y Position que permiten distintas formas de manipular el DOM El Objeto Element Editar La mayor parte de los metodos de Element simplemente toman un ID o una referencia del objeto a Element que usted quiere manipular Aqui tiene una mirada a algunos de los metodos mas utiles Esconder el elemento Element hide elemento Mostrar el elemento Element show elemento Anadir una clase CSS al elemento Element addClassName elemento ClaseCSS Quitar la clase CSS del elemento Element removeClassName elemento ClaseCSS Devuelve verdadero si el elemento tiene la clase CSS Element hasClassName elemento ClaseCSS El objeto INSERTION Editar El objeto Insertion anade fragmentos de HTML en y alrededor de un Elemento Hay cuatro tipos de Insertion Before antes After despues Top cima and Bottom inferior Esto le muestra como anadiria algun HTML antes de un elemento con el ID myelement new Insertion Before myelement lt p gt I m before lt p gt El objeto POSITION Editar El objeto Position puede indicar la posicion en pantalla y proporcionar informacion sobre la posicion en relacion con otros elementos de forma compatible con los navegadores Esto debe ocupar la mayor parte del codigo complicado de animaciones efectos y del codigo de arrastrar y soltar Manejando formularios Editar Los objetos Form y Field preven un numero de funciones simples pero convenientes para trabajar con formularios y campos input asi como el codigo que soporta la puesta en practica de AJAX con Prototype El objeto Form Editar Generalmente los metodos del objeto Form toman una ID o una referencia del objeto a un elemento Deshabilita todos los campos de un formulario Form disable formulario Habilita todos los campos de un formulario Form enable formulario Limpia todos los campos de un formulario Form reset formulario Devuelve una lista con todos los valores del formulario Form getElements formulario Enfocar el primer campo Form focusFirstElement formulario El objeto Field Editar El objeto Field trata con elementos individuales del formulario y sus metodos tipicamente toman un ID o una referencia del objeto a un elemento de un modo muy similar al objeto Form Limpia el o los campos acepta cualquier numero de argumentos Field clear campo1 campo2 Devuelve el foco a un campo Field focus campo Selecciona un campo Field select campo La serializacion del FormularioEn terminos de Prototype serializar un formulario significa leer todos los elementos del formulario y convertirlos en una cadena codificada en URL similar a la que seria enviado si usted aceptara el formulario Por ejemplo lt form id busqueda action busqueda php method post gt lt input type text name consultar value algo gt lt select name campo gt lt option value nombre gt Nombre del Artista lt option gt lt option value titulo selected selected gt Titulo de la cancion lt option gt lt select gt lt input type submit name submit value Buscar gt lt form gt Form serialize busqueda Note que Form serialize ingeniosamente deja de lado las diferentes maneras en que los elementos del formulario son accesados de modo que inputs selects checkboxes y los radio buttons son manejados correctamente Form serialize es util para varias tareas pero es el mejor cuando trabajamos con AJAX Observadores de formulario Editar Form Observer y Form Element Observer permiten observar un formulario y enviar callbacks cuando los datos cambien Estos son actualmente dos versiones de cada observer que verifican el valor actualizado El primero es un observador periodico que trabaja asi new Form Observer myform 1 myCallBackFunction new Form Element Observer myfield 1 myCallBackFunction Estos observadores comprueban cada segundo si los datos se han modificado y si esto es asi llamara a myCallBackFunction El segundo tipo de observador esta basado en los eventos y solamente realizara la comprobacion cuando se produzca la modificacion o un clic evento para los elementos Ejemplo new Form EventObserver myform myCallBackFunction new Form Element EventObserver myfield myCallbackFunction Si en todos los campos del formulario se colocan observadores tendremos una manera mucho mas eficiente de observar el formulario Pero si se quiere observar los cambios de elementos que no soportan estos eventos se debe usar los observadores periodicos Es totalmente posible realizar estas funciones sin emplear Prototype pero demandaria un gran esfuerzo y muchas lineas de codigo en una palabra se intentaria reinventar la rueda para que programar algo si ya existe solamente hay que usarlo y aportar a la modificacion de lo que ya esta hecho Por eso Prototype es un framework una biblioteca lista para ser usada en un ambiente de produccion La Web 2 0 ya es un hecho y Prototype esta pensado para ello para aprovechar al maximo la productividad y extender las fronteras de las web s agiles dinamicas y sencillas Prototype vs Editar Al comparar Prototype con otro framework hay que distinguir el proposito de cada uno Supongamos que se desea implementar AJAX en un proyecto basado en PHP y se decide implementar PROTOTYPE como framework En tal caso este no seria recomendable dado que para PHP existe otro framework mas apropiado llamado Xajax En cambio si se desarrolla con Ruby la opcion es Prototype el cual ya viene integrado en RailsEs dificil compararlos a todos Sin embargo todos proveen de un mejor servicio tanto para el cliente y una manera de producir mas rapida para el desarrollador Cuando FLASH parecia copar el mercado de las aplicaciones web hoy AJAX se lleva el premio y todas apuntan a implementar esta Tecnica Proyectos basados en Prototype Editar Ruby on Rails https web archive org web 20180607060649 http www rubyonrails com Script aculo us Thomas Fuchs http script aculo us Rico http openrico org Behaviour https web archive org web 20050814234240 http www ripcord co nz behaviour KumbiaPHP framework http www kumbiaphp com Alternativas que emplean AJAX EditarDOJO Toolkit http dojotoolkit org Editar Biblioteca JavaScript de codigo abierto Proporciona un API para el control y manipulacion de historial Proporciona en el lado del cliente para la manipulacion de URL y marcadores favoritos Widgets Ordenar tablas Validacion de formularios Menus y barras de menus Google y Yahoo MapsXAJAX https web archive org web 20060831015457 http www xajaxproject org Editar Es una biblioteca PHP de codigo abierto Abundante documentacion Facil de utilizar No requiere gran conocimiento de JavaScript Sencillo de emplear Incluir biblioteca en pagina PHP Instanciar el objeto xajax Implementacion de nuevas funciones en PHPXOAD http www xoad org antes NAJAX Editar Biblioteca orientada a objetos basada en PHP Documentacion de las clases y tutoriales sencillos Emplea JSON y objetos PHP para la comunicacion Soporta eventos del lado del cliente y del servidorConclusion EditarPrototype es un framework mas que implementa AJAX si se lo compara con otro puede ganar o perder pero esta un paso adelante del resto en lo que respecta al desarrollo de paginas agiles e interactiva El mundo cambio y hace uso de las bondades de la Web 2 0 Prototype brinda su aporte a este auge para lograr mejores servicios a menor costo de desarrollo Con la introduccion de AJAX en aplicaciones Web el manejo del objeto XMLHttpRequest se hace simple En una secuencia en donde el usuario interactua con la Web y provoca una peticion se crea un objeto XMLHttpRequest luego este objeto realiza una llamada al servidor solicitando el evento la peticion se procesa en el servidor y devuelve un resultado en formato XML o texto plano o JavaScript etc que contienen el resultado de la peticion Luego el objeto XMLHttpRequest hace un llamado a la funcion callback para procesar el resultado y por ultimo se actualiza el DOM Document Object Model con el resultado devuelto De esta manera AJAX permite lograr paginas rapidas y agiles brindado un servicio mejor al usuario Enlaces externos Editarhttp www prototypejs org http prototype conio net Prototype Window Class http script aculo us http www ajaxian com http particletree com http www json org http ajaxload info http www sergiopereira com articles prototype js html http www ajaxhispano com https web archive org web 20060903052407 http tetlaw id au view blog really easy field validation with prototype Como validar Un Formulario http www kumbiaphp com Ejemplos Prototype Datos Q746599Obtenido de https es wikipedia org w index php title Prototype amp oldid 132309185, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos