Изменить отображаемую страницу в веб-браузере - PullRequest
1 голос
/ 18 января 2010

есть ли способ изменить визуализированную HTML-страницу в веб-браузере? Что мне нужно, это изменить визуализированную страницу HTML в моем элементе управления веб-браузера, чтобы выделить выделенный текст.

Что я сделал, так это использовал webclient и использовал webclient.Downloadstring (), чтобы получить исходный код страницы. Выделите определенный текст, а затем запишите его снова в браузере. Проблема в том, что изображения вместе с этой страницей не отображаются, поскольку они отображаются как относительный путь.

Есть ли способ решить эту проблему? Есть ли способ обнаружения изображений в веб-браузере?

Ответы [ 2 ]

2 голосов
/ 21 января 2010

Не знаете, почему вам нужно изменить HTML-код на более светлый текст, почему бы не использовать IHighlightRenderingServices?

Чтобы указать базовый URL-адрес при загрузке строки HTML, необходимо использовать интерфейс документа IPersistMoniker и указать URL-адрес вРеализация IMoniker.

0 голосов
/ 15 сентября 2012

Я предлагаю вам сделать это по-другому, скачать и заменить текст с помощью элемента управления веб-браузера, таким образом, ваши ссылки будут работать. Все, что вы делаете, это заменяете все, что находится в текстовом поле поиска, на следующее, говорите, что поисковым термином является «привет», затем вы заменяете все вхождения «приветствие» следующим:

<font color="yellow">hello</font> 

Конечно, этот HTML может быть заменен тегом SPAN (который является встроенной версией тега DIV, поэтому ваши строки не будут прерываться при использовании SPAN, но будут использовать DIV). Но в любом случае оба эти тега имеют атрибут style, где вы можете использовать CSS для изменения его цвета или миллион других свойств, совместимых с CSS, как показано ниже:

<SPAN style="background-color: yellow;">hello</SPAN>

Конечно, существует множество других способов изменить цвет с помощью HTML, не стесняйтесь искать в Интернете больше, если хотите.

Теперь вы можете использовать функцию .Replace () в dotnet, чтобы сделать это (заменить искомый текст), это очень просто. Таким образом, вы можете получить весь документ в виде строки, используя .DocumentText, и как только все вхождения будут заменены (используя .Replace ()), вы можете установить его обратно в .DocumentText (поэтому вы используете .DocumentText, чтобы получить оригинал строка и установка .DocumentText с замененной строкой). Конечно, вы, вероятно, не хотите делать это с элементами внутри фактического HTML, поэтому вы можете просто перебрать все элементы на странице, выполнив цикл For Each для всех элементов, как показано ниже:

For Each someElement as HTMLElement in WebBrowser1.Document.All 

И каждый элемент будет иметь .InnerText / .InnerHTML и .OuterText / .OuterHTML, которые вы можете получить (прочитать из) и установить (перезаписать замененным текстом).

Конечно, для ваших нужд вы, вероятно, просто захотите заменить и перезаписать .InnerText и / или .OuterText.

Если вам нужна дополнительная помощь, дайте мне знать. В любом случае, я бы хотел узнать, как это все-таки сработало для вас, или, если есть что-то еще, любой из нас может сделать, чтобы повысить ценность вашей проблемы. Приветствия.

...