Изменение содержимого компонента управления WebBrowser устраняет изображения - PullRequest
0 голосов
/ 18 января 2012

У меня есть некоторый код, показанный ниже, который перемещает компонент WebBrowser к Google. Затем он пытается изменить некоторые теги ссылки и снова отобразить страницу, все работает нормально, но когда вызывается оператор обновления, исчезает логотип Google в верхнем левом углу, я пробовал это с помощью update (), а не обновления (), а также с использованием методов и классов, связанных с классом Document, используемым элементом управления WebBrowser. По сути, я ищу понимание того, как я могу изменить источник страницы, который использует WebBrowser, не теряя логотип Google, желаемый эффект будет во многом похож на поддержку Opera редактирования страниц без необходимости их перезагрузки.

string url = @"http://www.google.com/search?q=myquery";

browser.Navigate( url );

Console.WriteLine( "Waiting for page to load" );
while ( !loaded )           // Waits for document completed event
{
    Application.DoEvents();
    Console.Write( "." );
    Thread.Sleep( 50 );
}
Console.WriteLine( "Page Loaded");

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml( browser.DocumentText );

HtmlAttribute testAttrib = doc.CreateAttribute( "style" );
testAttrib.Value = "background-color: #222222";

HtmlNodeCollection linkNodes = doc.DocumentNode.SelectNodes( "//a[@href]" );
foreach ( HtmlNode linkNode in linkNodes )
{
    if ( linkNode.Attributes[ "href" ].Value.Contains( "sourceforge" ) )
    {
        linkNode.Attributes.Add( testAttrib );
        break;
    }
}

browser.Url = new Uri( url );
browser.DocumentText = doc.DocumentNode.OuterHtml;
browser.Refresh();
...