首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用WebView2打开内存中的网页?

如何使用WebView2打开内存中的网页?
EN

Stack Overflow用户
提问于 2022-01-29 05:52:06
回答 2查看 558关注 0票数 1

我的C++代码有以下步骤,试图获得JavaScript生成的HTML代码。

  1. 调用ICoreWebView2Settings::put_IsScriptEnabled打开JavaScript特性
  2. 调用ICoreWebView2::NavigateToString设置内存中的网页.
  3. NavigationCompleted发生时,我们获取整个网页的HTML代码。

不幸的是,这显然是一种种族状况。有时,JavaScript码在<body>中被忽略,只有<head>中的JavaScript码才有效果。有时,我们得到了<html><head></head><body></body></html>

当使用ICoreWebView2::Navigate打开远程网页时,我没有看到这个问题。这似乎是ICoreWebView2::NavigateToString中的一个bug。因此,用ICoreWebView2::NavigateToString替换ICoreWebView2::Navigate似乎是一个更好的选择,但我不知道如何使用ICoreWebView2::Navigate打开内存中的HTML文档。我应该使用什么方案?file://还是memory://等等?有什么建议吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-31 15:31:53

我尝试过许多方法来获得JavaScript呈现的代码,我得到的最好的方法是:

  1. 调用ICoreWebView2::AddWebResourceRequestedFilterICoreWebView2::add_WebResourceRequested来启用伪URI,例如“ICoreWebView2::AddWebResourceRequestedFilter
  2. 在事件WebResourceRequested的回调中,
代码语言:javascript
运行
复制
1. Call `ICoreWebView2WebResourceRequestedEventArgs::get_ResourceContext` to get the request.
代码语言:javascript
运行
复制
2. Call `ICoreWebView2Environment::CreateWebResourceResponse` to create the response.
代码语言:javascript
运行
复制
3. Call `ICoreWebView2WebResourceRequestedEventArgs::put_Response` on the argument of the callback.
  1. 在事件NavigationCompleted的回调中,我们获取JavaScript呈现的HTML代码。
票数 0
EN

Stack Overflow用户

发布于 2022-01-31 09:09:13

我认为您可以在数据URL中使用ICoreWebView2::Navigate。数据URL从data:方案开始,您可以使用data:text/html,来显示HTML。您可以参考下面的示例代码:

代码语言:javascript
运行
复制
webviewWindow->Navigate(L"data:text/html,<h1>Hello, World!</h1> <script>alert('hi');</script>");

上面的代码将显示一个HTML文档“你好,世界!”并执行JavaScript警报。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70902673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档