Почему после изменения DOM обновление IWebBrowser2 не обновляется?

A имеют веб-браузер, встроенный в диалог моего приложения Win32 С++ (без MFC, ATL и т.д.), и я изначально установил содержимое документа из строки, содержащей некоторый код HTML. Этот HTML отображается правильно. Когда происходит событие "завершение документа", я манипулирую DOM, например. добавив текст node к элементу BODY.

Проблема заключается в том, что хотя вызов IHTMLElement::get_outerHTML на интерфейсе элемента BODY указывает, что присутствует текст node, содержимое браузера в диалоговом окне остается неизменным.

Я пробовал звонить как IWebBrowser2::Refresh, так и ::InvalidateRect/::UpdateWindow, но не помогает.

Любые идеи? При необходимости я могу разместить части своего кода.

Кроме того, кто-нибудь знает

  • необходимо ли как-то активировать обновление, как правило, после изменения DOM (или должно быть автоматическим).
  • имеет ли смысл IWebBrowser2::Refresh, когда документ HTML был загружен из строки, а не URL

Все еще надеясь на ответ на этот... кто-нибудь?

Ответ 1

Я нашел проблему - это была ошибка в моем коде. Был очень неясный вызов IWebBrowser2:: Refresh в коде, который перезагружал страницу, тем самым возвращая мои динамические изменения в DOM.

Ответ 2

Вы должны протестировать его, используя статический контент, например

<html>
<head></head>
<body>
Hello World
<script>
alert("a");
</script>
</body>
</html>

Если окно предупреждения отображается, но ничего не имеет, эта отметка, которую вы реализуете, имеет проблемы.