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

C# WebBrowser.Document.Body.InnerHtml奇怪的行为,c#,winforms,C#,Winforms,我正在尝试加载页面,然后删除其中的一些元素。在这样做的时候,我遇到了奇怪的行为。当我这样做的时候 webBrowser1.Document.Body.InnerHtml = webBrowser1.Document.Body.InnerHtml; 它会关闭一些JavaScript代码,例如,对于Google.com,它会关闭自动完成。为什么呢?我想这与JavaScript初始化有关,如果是这样,我如何重新初始化页面 upd: 刚刚创建了一个新项目,放置了两个按钮和WebBrowser。同样的事

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

webBrowser1.Document.Body.InnerHtml = webBrowser1.Document.Body.InnerHtml;
它会关闭一些JavaScript代码,例如,对于Google.com,它会关闭自动完成。为什么呢?我想这与JavaScript初始化有关,如果是这样,我如何重新初始化页面

upd: 刚刚创建了一个新项目,放置了两个按钮和WebBrowser。同样的事情。这是密码

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;
}

我不知道为什么在这些代码行中有“webBrowser1”部分


我假设这些自动完成大部分都是在页面加载后应用的。它们可能监视各个元素,但不直接连接到这些元素。因此,实际上,当您重置页面的HTMl主体时,JS正在监视的元素将被删除,但不会再次调用。我听说谷歌对JS做了一些有趣的事情,让人们很难看到它是什么。

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

webBrowser1是我表单上WebBrowser类型的控件。事实上,我在和不同的网站合作,只是以谷歌为例。我有点困惑为什么我会在那里投票。。。如果webBrowser1是表单元素,那么尝试访问其Document.Body.InnerHTML属性是没有意义的。我知道google.com就是一个例子,因此我用你的例子来解释为什么我相信这种行为正在发生。但是根据您的评论,我认为您的代码只是混淆了JS引擎。你用的是什么浏览器?在其他浏览器中也会发生同样的情况吗?不是我:我不能否决投票,因为我在浏览器方面的声誉不到100,这是System.Windows.Forms Framework 3.5版的标准控件。我认为这是在使用IE引擎,而不是试图指责任何人。我只是想知道我的答案有什么“不好”,除了我没有给出一个确切的答案,但问题是我很迷茫。