2009-08-11 7 views
3

J'utilise WebKit dans une application C# pour rendre un document XML de style CSS, et j'aimerais pouvoir ajouter des éléments DOM. Comment puis-je avoir accès au DOM pour le faire? Le problème semble être qu'il n'y a aucune propriété dans la classe WebKitBrowser qui donne accès au membre webView privé. C'est possible? Dois-je modifier la classe pour l'ajouter? Est-ce que je fais juste mal?Comment puis-je accéder au DOM en utilisant WebKit.NET?

Répondre

0

WebKit.Net, à partir de 0.3.0 semble ne pas avoir accès au codedom. J'ai fait quelque chose de légèrement différent, j'ai utilisé le WebKit.Net, mais j'ai ajouté un écouteur HTTP à l'application, et j'ai mis en place le contrôle pour récupérer les pages à partir de là. De cette façon, j'ai accès aux messages et rappels dans la même application. Le reste je le fais avec JavaScript sur la page elle-même.

 HttpListener listener; 

    public Form1() { 
     InitializeComponent(); 

     listener = new System.Net.HttpListener(); 

     listener.Prefixes.Add("http://*:88/"); 
     listener.Start(); 
     IAsyncResult result = listener.BeginGetContext(new AsyncCallback( ListenerCallback), listener); 

    } 

    public static void ListenerCallback(IAsyncResult result) { 

    string resp = "<body>test</body"; 

     HttpListener listener = (HttpListener)result.AsyncState; 

     // Call EndGetContext to complete the asynchronous operation. 
     try { 
      HttpListenerContext context = listener.EndGetContext(result); 
      HttpListenerRequest request = context.Request; 

      // Obtain a response object. 
      HttpListenerResponse response = context.Response; 

      // Construct a response. 
      string webpage = request.Url.AbsolutePath.Substring(1); 
      string responseString = null; 
      if (string.IsNullOrEmpty(webpage)) { 
       responseString = resp; 
      } 
      else { 
       webpage = webpage.Replace(".", "_"); 
       responseString = webkit_test.Properties.Resources.ResourceManager.GetResourceSet(System.Globalization.CultureInfo.CurrentCulture, true, false).GetObject(webpage) as string; 
       if (responseString == null) { 
        responseString = "<html></html><body> 404 Web Page not Found</body>"; 
       } 
      } 
      byte[ ] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); 

      // Get a response stream and write the response to it. 
      response.ContentType = "text/html; charset=UTF-8"; 
      response.ContentLength64 = buffer.Length; 

      System.IO.Stream output = response.OutputStream; 
      output.Write(buffer, 0, buffer.Length); 
      output.Flush(); 

      // You must close the output stream. 
      output.Close(); 
      IAsyncResult result1 = listener.BeginGetContext(new AsyncCallback(ListenerCallback), listener); 
     } 
     catch { } 
    } 

Btw. Ce code lira également la page Web à partir d'une ressource embellie

Questions connexes