WebBrowser.Document.Body.InnerHtml奇怪的行为

时间:2010-03-25 10:40:00

标签: c# winforms

我正在尝试加载页面,然后删除其中的一些元素。虽然这样做我遇到了奇怪的行为。当我做的时候

webBrowser1.Document.Body.InnerHtml = webBrowser1.Document.Body.InnerHtml;

关闭了一些JavaScript代码,例如对于Google.com,它会关闭自动完成功能。这是为什么?我想它与JavaScript初始化有关,如果是这样,我怎样才能重新初始化页面?

UPD: 刚刚创建了新项目,放置了2个按钮&网页浏览器。一样。这是代码

private void button1_Click(object sender, EventArgs e)
{
    webBrowser1.Navigate("http://google.com");
}

private void button2_Click(object sender, EventArgs e)
{
    webBrowser1.Document.Body.InnerHtml = webBrowser1.Document.Body.InnerHtml;
}

2 个答案:

答案 0 :(得分:0)

解决了这个问题。事实证明,设置InnerHtml属性会破坏DOM结构。解决方案是使用Microsoft.mshtml命名空间和appendChild和removeChild等方法。

答案 1 :(得分:-1)

我不确定你为什么要在这些代码行中加入'webBrowser1'部分。

我认为,一旦页面加载,大部分自动完成都会被应用。他们可能会监控各个元素,但不会直接附加到这些元素上。因此,当您实际上为页面重置HTMl的Body时,将删除JS为2watching的元素,但永远不会再次调用。我听说谷歌为JS做了一些有趣的事情,让人们很难看到它是什么。