Utilizando JavaScript con el WebBrowser de WPF (2/2) - Blog de Oskar Alvarez

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.

Published 15/9/2009 8:11 por Oskar Alvarez
Archivado en:
Comparte este post:
http://geeks.ms/blogs/oalvarez/archive/2009/09/15/utilizando-javascript-con-el-webbrowser-de-wpf-2-2.aspx

Comentarios

# 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

Tuesday, September 15, 2009 8:50 AM por .NET con oskar

# re: Utilizando JavaScript con el WebBrowser de WPF (2/2)

T0d0estamuybien

Sunday, October 25, 2009 1:00 PM por david