У меня есть веб-браузер, встроенный в диалог моего приложения Win32 C ++ (без MFC, ATL и т. Д.), И я изначально устанавливаю содержимое документа из строки, содержащей некоторый HTML-код. Этот HTML-код отображается правильно. Когда происходит событие «завершение документа», я манипулирую DOM, например, добавив текстовый узел к элементу BODY.
Проблема в том, что хотя звонит IHTMLElement::get_outerHTML
на интерфейсе элемента BODY указывает, что текстовый узел присутствует, содержимое браузера отображается в диалоговом окне без изменений.
Я пытался позвонить обоим IWebBrowser2::Refresh
а также ::InvalidateRect
/::UpdateWindow
, но ни один не помогает.
Есть идеи? Я могу опубликовать части своего кода, если требуется.
Кроме того, кто-нибудь знает
IWebBrowser2::Refresh
имеет смысл, когда документ HTML был загружен из строки, а не URLВсе еще надеетесь на ответ на этот … кто-нибудь?
Вы должны проверить это, используя статический контент, например
<html>
<head></head>
<body>
Hello World
<script>
alert("a");
</script>
</body>
</html>
Если окно предупреждения показывается, но без чего-либо, у этой отметки у вас есть проблема.
Я нашел проблему — это была ошибка в моем коде. Был очень неясный вызов IWebBrowser2 :: Refresh в коде, который перезагружал страницу, таким образом возвращая мои динамические изменения в DOM.