【问题标题】:Why doesn't IWebBrowser2 refresh after a DOM change?为什么在 DOM 更改后 IWebBrowser2 不刷新?
【发布时间】:2015-03-15 22:59:44
【问题描述】:

在我的 Win32 C++ 应用程序(没有 MFC、ATL 等)的对话框中嵌入了一个 Web 浏览器,我最初从包含一些 HTML 代码的字符串设置文档的内容。此 HTML 已正确呈现。当“文档完成”事件发生时,我操作 DOM,例如通过将文本节点附加到 BODY 元素。

问题在于,虽然在 BODY 元素的界面上调用 IHTMLElement::get_outerHTML 表明存在文本节点,但对话框中的浏览器内容似乎没有改变。

我尝试同时调用IWebBrowser2::Refresh::InvalidateRect/::UpdateWindow,但都没有帮助。

有什么想法吗?如果需要,我可以发布我的部分代码。

还有人知道吗

  • 原则上是否需要在修改 DOM 后以某种方式触发刷新(或者应该是自动的)
  • 当 HTML 文档从字符串而不是 URL 加载时,IWebBrowser2::Refresh 是否有意义

仍然希望得到这个问题的答案……有人吗?

【问题讨论】:

标签: c++ dom mshtml iwebbrowser2


【解决方案1】:

你应该使用静态内容来测试它,例如

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

如果警告框显示但没有任何内容,则此标记您的实现有问题。

【讨论】:

    【解决方案2】:

    我发现了问题 - 这是我的代码中的一个错误。在重新加载页面的代码中,对 IWebBrowser2::Refresh 的调用非常模糊,因此将我对 DOM 的动态更改还原。

    【讨论】:

      猜你喜欢
      • 2019-06-03
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 2020-04-30
      • 2020-10-14
      • 1970-01-01
      相关资源
      最近更新 更多