Сейчас я работаю над надстройкой Internet Explorer, которая должна сканировать HTML-документ на наличие URL-адресов в виде обычного текста, а затем «связывать» их.
У меня есть доступ к DOM веб-сайтов.У него была идея обойти все DOM-узлы и найти «ссылки» с помощью RegEx, чтобы заменить этот текст HTML-кодом, однако при изменении свойства «InnerText» объекта IHTMLElement все его дочерние узлыпотерял, что серьезно f * cks вверх веб-сайта.
Вот некоторый код:
//This method is called when IE has finished loading a page
void _webBrowser2Events_DocumentComplete(object pDisp, ref object URL)
{
if (pDisp == _webBrowser2)
{
HTMLDocument pageContent = _webBrowser2.Document;
IHTMLElement bodyHtmlElmnt = pageContent.body;
fixElement(bodyHtmlElmnt);
}
}
А вот метод fixElement:
void fixElement(IHTMLElement node)
{
if (node.innerText!=null && ((IHTMLElementCollection)node.children).length==0)
{
node.innerText= node.innerText.Replace("testString", "replaceWithThis");
}
foreach (IHTMLElement child in (node.children as mshtml.IHTMLElementCollection))
{
fixElement(child);
}
}
Это работает, нотолько для узлов, у которых нет дочерних элементов.
Может кто-нибудь помочь мне с этой проблемой, я был бы очень признателен!
С уважением
// Henrik