En el anterior Post vimos como llamar desde nuestra página web a metodos de nuestra aplicación WPF, en este vamos a ver como podemos inyectar JavaScript, Css nuevos y llamar al JavaScript que hemos inyectado.
Para el ejemplo vamos a utilizar este Javascript que nos resalta de amarillo en la pagina Web las palabras que pasemos por parámetros.
Para todos los pasos lo que se va a utilizar es el objeto DOM de la pagina, vamos a ver como podemos manejarlo de cualquier manera ya que tenemos acceso total a el.
Lo primero que tenemos que hacer es inyectar el script, para ello utilizaremos el evento LoadCompleted del navegador.
- void browser_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
- {
- HTMLDocumentClass doc = browser.Document as HTMLDocumentClass;
- IHTMLDocument2 doc2 = browser.Document as IHTMLDocument2;
- originalContent = doc2.body.innerHTML;
- //Creamos el script
- IHTMLScriptElement script = (IHTMLScriptElement)doc2.createElement(«SCRIPT»);
- script.type = «text/javascript»;
- //función de javascript
- script.text = hilightScript;
En este código obtenemos el documento que tenemos en la pagina, creamos el script a través del método createElement y lo asignamos
Ahora vamos a insertar un nuevo estilo css
- IHTMLStyleSheet style = (IHTMLStyleSheet)doc2.createStyleSheet(«», 0);
- style.cssText = «.hl {color:#f00;background-color:#ff0;font-weight:bold;}»;
Con esas dos líneas hemos creado un nuevo estilo en la página, ahora solo falta llamarla, el paso mas complicado
- IHTMLElementCollection nodes = doc.getElementsByTagName(«head»);
- foreach (IHTMLElement elem in nodes)
- {
- //Añadir el script
- HTMLHeadElementClass head = (HTMLHeadElementClass)elem;
- head.appendChild((IHTMLDOMNode)script);
- }
- //llamarlo
- var wholeScript = doc2.Script;
- wholeScript.GetType().InvokeMember(
- «hilite_injected», BindingFlags.InvokeMethod, null, wholeScript, new object[] { «prueba,google» });
Y con esto llamaríamos al javascript que hemos inyectado, realmente sencillo interactuar con las paginas que mostremos en nuestro webbrowser.
En el anterior Post vimos como llamar desde nuestra página web a metodos de nuestra aplicación WPF, en
T0d0estamuybien