2012-02-02 85 views
1

我有一个表格webbrowser。活动:附上Navigating,NavigatedDocumentCompleted为什么WebBrowser控件有这种奇怪的行为?

这就是我告诉它.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/ 

有人可以解释为什么我收到此about:blank东西后得到些什么?

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

+0

使用有关的':blank'可能意味着很多事情。如果您导航到除谷歌之外的其他网站,这是否会发生?系统上有什么版本的IE? – lukiffer 2012-02-02 07:57:15

+0

我的猜测是谷歌使用触发导航事件的iframe或对象标签。 – Candide 2012-02-02 08:03:37

回答

5

看来,自动导航到约:空白是所使用的WebBrowser对象,以确保HTML对象各种已知的“安全毯”是有效的尝试加载您请求的页面,如this MSDN article以前解释过:

[...] IWebBrowser2 :: Navigate2方法用于导航到about:空白页面。导航到这个空白页面可以确保加载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")); 
     } 
    } 
} 

按下按钮后,你会得到如下:

enter image description here

相关问题