WebBrowser.Document.Body.InnerHtml странное поведение - PullRequest
0 голосов
/ 25 марта 2010

Я пытаюсь загрузить страницу и удалить из нее некоторые элементы. При этом я столкнулся со странным поведением. Когда я делаю

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 голосов
/ 26 марта 2010

Решил эту проблему. Оказалось, что установка свойства InnerHtml нарушает структуру DOM. Решение заключается в использовании пространства имен Microsoft.mshtml и таких методов, как appendChild и removeChild.

0 голосов
/ 25 марта 2010

Я не уверен, почему у вас есть та часть 'webBrowser1' в этих строках кода для начала.

Я бы предположил, что большинство этих автозаполнений применяются после загрузки страницы.Они предположительно контролируют соответствующие элементы, но не связаны непосредственно с этими элементами.Таким образом, когда вы, по сути, сбрасываете тело HTMl для страницы, элементы, которые JS выполняет 2, удаляются, но никогда больше не вызываются.Я слышал, что Google делает с JS забавные вещи, чтобы людям было трудно понять, что это такое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...