jueves, 9 de septiembre de 2010

[SilverLight] Integración con HTML

Uno de los temas más complicados o que por el momento no parece que tenga una solución clara es integrar HTML normal con una aplicación de SilverLight. Me explico con un sencillo ejemplo: supongamos el escenario de una aplicación en la que tenemos dentro un mininavegador donde podemos acceder a otras páginas. ¿Es posible? Evidentemente. ¿Es una solución bonita? En mi modesta opinión, no. ¿Y por qué voy a hablar de ello? Porque no he encontrado otras soluciones…

Como primera medida encuentro la solución que se propone a través de este tutorial, empleando un control WebBrowser al que mediante su propiedad Source le podemos indicar el código html a carga. Podemos indicarlo mediante un típico enlace a página, creando un URI o bien añadiendo en el string el código html “a pelo”. El problema de todo esto es que para que el objeto WebBrowser funcione debe ejecutarse fuera del navegador (es un requerimiento del propio objeto). Si queremos que a través del propio navegador usemos html, tenemos la siguiente opción.

Esta opción consiste en un tipo de fuerza bruta. Como principio básico conocemos que SilverLight no puede procesar el código HTML desde dentro del navegador, por lo que nuestra solución pasa por añadir un iframe desde el cual carguemos el código HTML y separarlo de la propia aplicación SilverLight (pero dentro de la misma aplicación ASP). El método es simple: creamos un tag div en la página principal, introducimos el iframe (podemos acceder a él a través del DOM) y le asignamos coordenadas absolutas, de forma que aparezca encima de la aplicación SilverLight:

   1: <iframe id="iframeReport" style="position:absolute;top:120px;left:0px;width:200px;height:200px;visibility:hidden;margin-left:15px;" src="http://www.google.com/"></iframe>
   1: System.Windows.Browser.HtmlElement myFrame = System.Windows.Browser.HtmlPage.Document.GetElementById("iframeReport"); 
   2: myFrame.SetStyleAttribute("visibility",

Evidentemente hay varios componentes que intentan simular el comportamiento del HTML (como por ejemplo este), pero sin soporte oficial por parte del equipo de desarrollo de SilverLight.

No hay comentarios:

Publicar un comentario