Awesomium IWebview ResourceInterceptor c#

时间:2014-09-26 17:28:55

标签: c# event-handling awesomium

我想在Awesomium中使用多个视图,但它在WebCore中有ResourceInterceptor常用用法我不能单独分配ResourceInerceptor, 如何实现

    List<myBrowser> browsers = new List<myBrowser>();
       WebCore.Started += (se, ea) => { 
       WebCore.ResourceInterceptor = new myResourceInterceptor(); 
        };
      for (int i = 0; i < 5; i++)
        {
         WebSession session = WebCore.CreateWebSession(folder + "\\b" + i,new WebPreferences());
         WebView view = WebCore.CreateWebView(1024, 768, session, WebViewType.Window);
         myBrowser b = new myBrowser(folder + "\\b" + i,ref view);
         b.view.Source = "www.google.com".ToUri();
        }




    public class myBrowser
    {
      .. .
     public myBrowser(string data,ref WebView view)
      {
          this.dataFolder = data;
          this.view = view;
          view.LoadingFrameComplete += view_LoadingFrameComplete;            
       }
    }

   // I can get unique WebViewId (request.ViewId) how to route this event to correct "myBrowser"
   public class myResourceInterceptor: IResourceInterceptor
    {
      public ResourceResponse OnRequest(ResourceRequest request)
      {
        Console.Write("Request"+request.ViewId); 
      }
    }

我可以在IResourceInterceptor.OnRequest中获得唯一的WebViewId(request.ViewId) 如何路由此事件以纠正&#34; myBrowser&#34;实例

还是有更好的方法来满足这种需求吗?

我希望这次能得到答案:)

1 个答案:

答案 0 :(得分:1)

您不需要手动将其路由回正确的实例。当您在OnRequest方法中返回ResourceResponse时,mybrowser实例或发送请求的websession将获得响应。如果由于某种原因你确实需要MyBrowser实例,请保留一个ViewId字典,MyBrowser而不仅仅是MyBrowser列表,然后你可以索引你想要的浏览器。 viewid应该在您创建的webview中。