# Interesante post en conseguir Mozilla XUL corriendo dentro de Internet Explorer por Jean-Yves Cronier

<datetime class="hidden">2005-10-30T00:00</datetime>

<!-- category -- mostlylucidcouk, Imported -->
## 

Interesante post en conseguir Mozilla XUL corriendo dentro de Internet Explorer por Jean-Yves Cronier

Publicado el Domingo, Septiembre 12, 2004 11:46

¡Que el cruce continúe! Jean-Yves Cronier se fue. [un comentario](/archive/2003/11/23/648.aspx) en mi [viejo post sobre HTC dentro de Mozilla](/archive/2003/11/23/648.aspx), apunta a un puesto que dejó en el [Foro XULPlanet](http://xulplanet.com/forum/viewtopic.php?t=1038) mostrando una técnica para obtener [Comportamientos XUL](http://xulplanet.com/tutorials/whyxul.html) correr dentro de Internet Explorer utilizando un comportamiento HTC simple como una especie de capa de interfaz. Esto es de nuevo, bastante fresco - y sería aún más fresco si se podría ampliar para permitir la traducción completa entre todos los comportamientos de IE HTC y su equivalente XUL! De todos modos, ya que esto se publica en un foro que no sé nada abot, voy a repetir el post aquí:

He reflexionado sobre las posibilidades que ofrece el comportamiento famoso HTC bajo IE. Creo que tal vez sería posible interpretar una pequeña parte de las especificaciones de XUL.

Una pequeña muestra:

index.xul :

| <!----> |
| --- |
| **Código:** |
| &lt;?xml versión="1.0" codificación="iso-8859-1"?&gt; <br>&lt;?xml-stylesheet type="text/css" href="xul.css" media="all"?&gt; <br>&lt;window id="ejemplo-ventana" title="Ejemplo" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; <br>&lt;control de etiquetas= valor "some-text"="Introducir algún texto"/&gt; <br>&lt;textbox id= "some-text" value="toto"/&gt; <br>&lt;control de etiquetas = "alguna contraseña" valor = "Introducir una contraseña"/&gt; <br>&lt;textbox id="some-password" type="password" maxlength="8"/&gt; <br>&lt;etiqueta de la lista de menús="Bus"&gt; <br>  &lt;menupopup&gt; <br>    &lt;etiqueta del elemento del menú="Coche"/&gt; <br>    &lt;etiqueta del menú="Taxi"/&gt; <br>    &lt;etiqueta del elemento de menú="Bus" seleccionado="true"/&gt; <br>    &lt;etiqueta del elemento del menú="Formación"/&gt; <br>  &lt;/menupopup&gt; <br>&lt;/menulista&gt; <br>&lt;/ventana&gt; |

xul.css :

| <!----> |
| --- |
| **Código:** |
etiqueta{comportamiento:url(label.htc)} <br>menuitem{comportamiento:url(menuitem.htc)} <br>menulist{comportamiento:url(menulista.htc)} <br>menupopup{comportamiento:url(menupopup.htc)} <br>textbox{comportamiento:url(textbox.htc)} <br>window{comportamiento:url(window.htc)}

label.htc :

| <!----> |
| --- |
| **Código:** |
| &lt;public:htc urn="window"&gt; <br>&lt;público: evento adjunto= "en documento listo" manejador= "construir" /&gt; <br>&lt;public:property name="value" /&gt; <br>&lt;script type="text/javascript"&gt; <br>function build(){this.innerHTML=this.value;} <br>&lt;/script&gt; <br>&lt;/public:htc&gt; |

menuitem.htc :

| <!----> |
| --- |
| **Código:** |
| &lt;public:htc urn="window"&gt; <br>&lt;público: evento adjunto= "en documento listo" manejador= "construir" /&gt; <br>&lt;public:property name="id" /&gt; <br>&lt;public:property name="label" /&gt; <br>&lt;public:property name="value" /&gt; <br>&lt;script type="text/javascript"&gt; <br>build() { <br> var option = document.createElement("opción"); <br> var style=this.currentStyle; <br> option.setAttribute("id",id); <br> if(this.id!=null){option.setAttribute("id",this.id);} <br> if(this.value!=null){option.setAttribute("value",this.value);} <br> if(label!=null){option.innerHTML=label;} <br> for(var prop en estilo){option.style[prop]=estilo[prop];} <br> esto.outerHTML=option.outerHTML; <br>} <br>&lt;/script&gt; <br>&lt;/public:htc&gt; |

menulist.htc :

| <!----> |
| --- |
| **Código:** |
| &lt;public:htc urn="window"&gt; <br>&lt;público: evento adjunto= "en documento listo" manejador= "construir" /&gt; <br>&lt;public:property name="id" /&gt; <br>&lt;script type="text/javascript"&gt; <br>build() { <br> var select = document.createElement("select"); <br> var style=this.currentStyle; <br> select.setAttribute("id",id); <br> if(id!=null){ <br> select.setAttribute("id",this.id); <br> select.setAttribute("nombre",this.id); <br>   } <br> select.innerHTML=this.innerHTML; <br> for(propulsor de varilla en estilo){ <br> seleccionar.style[prop]=estilo[prop]; <br>   } <br> select.style.width="100%"; <br> esto.outerHTML=select.outerHTML; <br>} <br>&lt;/script&gt; <br>&lt;/public:htc&gt; |

menupopup.htc :

| <!----> |
| --- |
| **Código:** |
| &lt;public:htc urn="window"&gt; <br>&lt;público: evento adjunto= "en documento listo" manejador= "construir" /&gt; <br>&lt;public:property name="id" /&gt; <br>&lt;public:property name="label" /&gt; <br>&lt;public:property name="value" /&gt; <br>&lt;script type="text/javascript"&gt; <br>build() { <br> var optgroup = document.createElement("optgroup"); <br> var style=this.currentStyle; <br> if(this.id!=null){optgroup.setAttribute("id",this.id);} <br> if(this.label!=null){optgroup.innerHTML=this.label;} <br> optgroup.innerHTML=this.innerHTML; <br> for(var prop en estilo){optgroup.style[prop]=estilo[prop];} <br> esto.outerHTML=optgroup.outerHTML; <br>} <br>&lt;/script&gt; <br>&lt;/public:htc&gt; |

textbox.htc :

| <!----> |
| --- |
| **Código:** |
| &lt;public:htc urn="window"&gt; <br>&lt;público: evento adjunto= "en documento listo" manejador= "construir" /&gt; <br>&lt;public:property name="id" /&gt; <br>&lt;public:property name="value" /&gt; <br>&lt;public:property name="type" /&gt; <br>&lt;public:property name="maxlength" /&gt; <br>&lt;script type="text/javascript"&gt; <br>build() { <br> var input = document.createElement("input"); <br> var style=this.currentStyle; <br> input.setAttribute("id",id); <br> if(valor!=null){input.setAttribute("valor",valor);} <br> if(type!=null){input.setAttribute("type",type);} <br> if(maxlength!=null){input.setAttribute("maxlength",maxlength);} <br> for(var prop en estilo){input.style[prop]=estilo[prop];} <br> input.style.width="100%"; <br> input.style.cursor="text"; <br> input.style.borderStyle="inset"; <br> input.style.borderColor="ActiveBorder"; <br> input.style.borderWidth="2px"; <br> input.style.backgroundColor="#FFFFFF"; <br> input.style.paddingLeft="2px"; <br> esto.outerHTML=input.outerHTML; <br>} <br>&lt;/script&gt; <br>&lt;/public:htc&gt; |

window.htc :

| <!----> |
| --- |
| **Código:** |
| &lt;public:htc urn="window"&gt; <br>&lt;público: evento adjunto= "en documento listo" manejador= "construir" /&gt; <br>&lt;public:property name="title" /&gt; <br>&lt;script type="text/javascript"&gt; <br>function build(){window.status=this.title;} <br>&lt;/script&gt; <br>&lt;/public:htc&gt; |

¿No es gracioso? ![Muy feliz.](http://xulplanet.com/forum/images/smiles/icon_biggrin.gif)

El objetivo de un proyecto como este en no es subir Internet Explorer, pero sólo para mostrar un poco de visión general a otros (que no tienen Mozilla Web Browser) las tecnologías disponibles con Mozilla Framework