Utilizando JavaScript con el WebBrowser de WPF (2/2)

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.

  1. void browser_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
  2. {
  3.    HTMLDocumentClass doc = browser.Document as HTMLDocumentClass;
  4.    IHTMLDocument2 doc2 = browser.Document as IHTMLDocument2;
  5.    originalContent = doc2.body.innerHTML;
  6.    //Creamos el script
  7.    IHTMLScriptElement script = (IHTMLScriptElement)doc2.createElement(«SCRIPT»);
  8.    script.type = «text/javascript»;
  9.    //función de javascript
  10.    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

  1.   IHTMLStyleSheet style = (IHTMLStyleSheet)doc2.createStyleSheet(«», 0);
  2.             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

 

  1. IHTMLElementCollection nodes = doc.getElementsByTagName(«head»);
  2.   foreach (IHTMLElement elem in nodes)
  3.   {
  4.      //Añadir el script
  5.      HTMLHeadElementClass head = (HTMLHeadElementClass)elem;
  6.     head.appendChild((IHTMLDOMNode)script);
  7. }
  8.   
  9. //llamarlo
  10. var wholeScript = doc2.Script;
  11. wholeScript.GetType().InvokeMember(
  12. «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.

2 comentarios sobre “Utilizando JavaScript con el WebBrowser de WPF (2/2)”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *