Poner XMLHttpRequest en una fábrica de

Gestión de Tiempo de ejecución Código de Conducta

  

Problema que desea administrar y depurar el código de conducta en tiempo de ejecución. Teoría Usar la palabra clave Eval o dinámicamente la asignación de funciones a las propiedades de objetos es una gran parte de la programación dinámica. Programación dinámica involucra código que muestra un comportamiento en tiempo de ejecución, o de Código de conducta. Código de Conducta no es una mala idea, pero lo hace para depurar más complicado. El principal problema con el código de comportamiento es que el depurador no tiene idea de qué fuente es la depuración. Solución Hay varias soluciones se puede considerar aquí que en breve:

• Aplicar la prueba impulsada por el desarrollo y realizar las pruebas en profundidad de forma progresiva. Hacer lo contrario se producirán errores que se generan en las piezas de código que no tienen problemas. A lo largo de este artículo, recetas de uso basado en pruebas técnicas de desarrollo que puede inspeccionar a comprender cómo funciona el código. Yo aconsejo vivamente que se tome un momento para explorar cómo se escribe el código, si aún no lo ha hecho. Echa un vistazo a estos archivos, por ejemplo: / web / ROOT / ajaxrecipes / JavaScript / conventions.html, / web / ROOT / ajaxrecipes / JavaScript / proxy.html, y / web / ROOT / ajaxrecipes / JavaScript / variablebehavior.html.

• Generar el código en un búfer que es objeto de dumping en el cuadro de texto página HTML. Tome el código objeto de dumping y péguelo en una página HTML para su ejecución. El código objeto de dumping contendrá el error que se puede depurar. Esta solución sólo es aconsejable, sin embargo, si usted está teniendo problemas persistentes y no puede encontrar la fuente.

• los principios de utilización simple. Me gusta el código dinámico y genera tanto como cualquier otro, pero me quedo lejos de código que es muy inteligente y trata de resolver muchos problemas a la vez. Por ejemplo, yo normalmente escribir código detallado y no se combinan varios operadores en una única declaración .

• Utilice un depurador. Mozilla y Firefox han depuradores bastante decente, y usted debe usar. Con Microsoft Visual Studio 2005, es posible depurar código JavaScript muy complicado.

Poner XMLHttpRequest en una fábrica de

¿Quieres poner XMLHttpRequest en una fábrica. Teoría Cuando se utiliza XMLHttpRequest, el problema es cómo crear una instancia de XMLHttpRequest. Cada navegador tiene una forma diferente de crear instancias de XMLHttpRequest. Esto es lo que la mayoría de Mozilla y otros navegadores de uso (el código también funciona en Internet Explorer desde la versión 7): var xmlhttp = new XMLHttpRequest (); Utiliza el siguiente código para las versiones de Internet Explorer antes de las 7: var xmlhttp = new ActiveXObject ( 'Microsoft.XMLHTTP'); Microsoft.XMLHTTP El buffer es un identificador general, ya que hay especialidades disponibles en función del navegador. Solución La respuesta al problema es que a instancias de XMLHttpRequest es necesario utilizar diferentes técnicas en diferentes navegadores. Para poder crear una instancia del objeto XMLHttpRequest, que necesita para crear una abstracción. La abstracción podría ser una clase o una función, pero que usted elija no importa. Lo que importa es que se crea una abstracción o de aplicar la Fábrica pattern.1 En la aplicación patrón Factory, el principal reto es identificar qué navegador se está ejecutando el script y usar la creación de instancias XMLHttpRequest adecuado. El jsolait bibliotecas, Prototype, Yahoo! patrones, y Dojo Toolkit todos XMLHttpRequest aplicar una abstracción que se codifica de la misma manera. Para ilustrar la esencia de la forma en que se codifica en cuenta el siguiente código fuente, que es de Yahoo! Diseño de Plan de Bibliotecas (http://developer.yahoo.com/ypatterns).

createXhrObject: function (TransactionID) (var obj, http; try (/ / crea la instancia de XMLHttpRequest en navegadores no-IE y asigna a http. http = new XMLHttpRequest ();/ / Objeto literal con http y propiedades ID obj = (conn: http, tid: TransactionID);) catch (e) (for (var i = 0; i http = new ActiveXObject (this._msxml_progid [i]);/ / Objeto literal con http y propiedades ID obj = (conn: http, tid: TransactionID);) catch (e) ())) finally (return obj;)),

Las instancias están envueltos en una serie de intentar coger manzanas. Un try y catch en JavaScript es un bloque de excepción. La idea detrás de esta forma de abstracción que intenta ejecutar un código fuente, y si no haces otra cosa. Los siguientes pasos se realizan en el código fuente:

1. Introduzca el bloque de la primera excepción.

2. Ejecutar la creación de instancias XMLHttpRequest utilizando la palabra clave nueva.

3. Si las obras de instancias, entonces se alcanza el bloque finally.

4. Si no la creación de instancias, se genera una excepción y el bloque de captura se inicia un bucle.

5. El ciclo de los intentos de crear una instancia del objeto XMLHttpRequest de Internet Explorer mediante identificadores diferentes al que hace referencia el miembro de datos this._msxml_progid.

6. Si el objeto XMLHttpRequest no puede ser instanciada, un bloque catch vacío captura la excepción.

7. Independientemente de lo que sucede, el último bloque se ejecuta y devuelve la instancia del objeto almacenado en la variable obj. La idea principal de la abstracción es ejecutar el código, y si el navegador no es compatible con la funcionalidad, se genera una excepción. La excepción es capturada y hace que una secuencia de instancias diferentes para empezar. Lo que me preocupa de este código es que no intenta averiguar lo que es compatible, pero utiliza las excepciones JavaScript. Dado que la aplicación actual, se genera una excepción para amajority de los casos. Esto es así porque en el momento de escribir esto, Internet Explorer tiene una cuota de mercado superior al 80%. Esto significa que el intento de crear una instancia de XMLHttpRequest utilizando la nueva palabra clave no funcionará y generará una excepción. La forma alternativa de crear instancias de XMLHttpRequest es utilizado por la biblioteca Jaxson, como se indica en los artículos Ajax en acción (Manning, 2005) y Professional Ajax (Wrox, 2006). La técnica se muestra en la Ajax en acción es perfect2 y es implementado por Jaxson la siguiente manera.

 Fuente: / website / root / scripts / communications.js si (window.ActiveXObject) (FactoryXMLHttpRequest = function () (return new ActiveXObject ( "Microsoft.XMLHTTP");) else if (window.XMLHttpRequest) (FactoryXMLHttpRequest = function () (return new XMLHttpRequest ();)) throw new error ( "No se pudo crear una instancia de XMLHttpRequest");

Nota Para crear una instancia del objeto XMLHttpRequest en Internet Explorer, una sola línea de código fuente se utiliza. En cambio, otras bibliotecas de uso intentos de instancias múltiples. Estos intentos de instancias múltiples no son necesarios porque, por la documentación de MSDN, sólo es necesario el uso de la cadena Microsoft.XMLHTTP en Internet Explorer versión 6 y siguientes. Cuando una instancia del objeto XMLHttpRequest, recuerda lo siguiente en mente:

• Usted tendrá que utilizar una abstracción, porque la gente seguirá utilizando versiones antiguas de Internet Explorer desde hace algún tiempo por venir. Por lo tanto, seguirás teniendo la necesidad de averiguar cuál es la técnica de instancias de usar.

• Usted no debe usar las excepciones para probar la funcionalidad esperada. Si lo hace, sin pensar hará excepciones que se oculta.

• El mejor enfoque es poner a prueba su funcionalidad y luego una instancia de la instancia de XMLHttpRequest.

• Todo lo que dijo, si se utiliza una instanciación predefinidos que usa excepciones, como el Yahoo! Diseño de Plan de Bibliotecas, no es el fin del mundo. El punto de esta receta es para sugerir un mejor enfoque a utilizar siempre que sea posible.

un artículo presentado por Sonja Lande


Descargo de responsabilidad:Nuestro sitio web no es responsable por el contenido de este artículo. Webarticles es un recurso de información gratuito.
Importante: Este artículo "Poner XMLHttpRequest en una fábrica", fue traducida por un software automático. Sentimos pena por los errores de ortografía que pueda haber ocurrido. Gracias por su comprensión.


Online: 212 users browsing the articles directory   


  

|