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

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

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

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

Есть идеи? Я могу опубликовать части своего кода, если требуется.

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

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

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

11

Решение

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

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

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

0

Другие решения

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

-2

По вопросам рекламы [email protected]