1

我正在将代码从 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 事件?

4

1 回答 1

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;
于 2013-06-06T09:18:52.180 回答