为什么WebBrowser控件有这种奇怪的行为?

Ody*_*dys 1 c# webbrowser-control

我有一张表格webbrowser.事件:Navigating,NavigatedDocumentCompleted连接.

这是我告诉它后得到的 .Navigate(new Url("http://google.com"));

20:42:42:036: 1. Navigating to: http://google.com/
20:42:42:545: 2. Navigated: http://www.google.com/
20:42:42:854: 3. Navigating to: about:blank
20:42:43:002: 4. Navigated: about:blank
20:42:43:004: 5. Loaded: about:blank
20:42:43:158: 6. Loaded: http://www.google.com/
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么我会得到这些about:blank东西吗?

代码只显示e.Url每个事件处理程序的参数.

Gus*_*ori 5

似乎自动导航到about:blank是WebBrowser对象使用的已知"安全毯",以确保HTML对象在尝试加载您请求的页面之前有效,如本MSDN文章中所述:

[...] IWebBrowser2 :: Navigate2方法用于导航到about:blank页面.导航到此空白页面可确保加载MSHTML,并通过动态HTML(DHTML)对象模型提供HTML元素.

此外,该DocumentCompleted事件应该工作.你确定你的活动没有做其他事吗?

我尝试过这个简单的代码,它按预期工作:

namespace CSharpWindowsPractice
{
    using System;
    using System.Windows.Forms;

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
        {
            this.listBox1.Items.Add("Navigated to: " + e.Url);
        }

        private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
        {
            this.listBox1.Items.Add("Navigating to: " + e.Url);
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            this.listBox1.Items.Add("DocumentCompleted: " + e.Url);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.webBrowser1.Navigate(new Uri(@"http://google.com"));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

按下按钮后,您将获得以下信息:

在此输入图像描述