关于将Awesomium 1.6.6迁移到1.7.1的WebView问题

时间:2013-06-04 16:14:46

标签: awesomium

我正在将代码从Awesomium 1.6.6迁移到1.7.1,它会加载一个url并将其保存为png。 想知道几个问题:

  1. 设置WebView.Source是否隐式加载页面(显然是这样,从提供的示例判断)?

  2. WebView.ResourceRequest用于设置发布和推送一些表单数据的请求。在1.7.1方式中,我将ResourceInterceptor附加到WebCore并引发一个事件,以便被WebViews捕获并针对ProcessId进行筛选。但是,有没有办法将ResourceInterceptor连接到WebView以使其更简单?

  3. WebView.RequestScrollData()和WebView.ScrollDataReceived用于获取调整大小的宽度/高度数据。这应该是从WebView.Height / Width中获取的吗?并且,何时保证设置(即在LoadingFrameComplete等)?

  4. 如何检测调整大小已结束,即以前的WebView.ResizeComplete事件?

1 个答案:

答案 0 :(得分:2)

嗯,这很尴尬,我有点自言自语......

所以我想出了最后两个问题的答案:

获取大小应该通过从WebView的LoadingFrameComplete事件执行的JavaScript代码完成:

    WebView _view;
    _view.LoadingFrameComplete += LoadingFrameCompleteHandler;

    private void LoadingFrameCompleteHandler(object sender, FrameEventArgs e)
    {
        if (e.IsMainFrame)
        {
            var view = (WebView)sender;
            var js = "(function() { some js code to return size }) ();";
            var size = view.ExecuteJavascriptWithResult(js);

            if (size != JSValue.Null && size != JSValue.Undefined)
            {
                var values = (JSValue[])size;
                int width = (int)values[0];
                int height = (int)values[1];
                view.Resize(width, height);
            }
        }
    }

这就是你如何捕捉调整大小:

    WebView view;
    ((BitmapSurface)view.Surface).Resized += YourResizeHandler;