我的C++代码有以下步骤,试图获得JavaScript生成的HTML代码。
ICoreWebView2Settings::put_IsScriptEnabled
打开JavaScript特性ICoreWebView2::NavigateToString
设置内存中的网页.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://
等等?有什么建议吗?谢谢。
发布于 2022-01-31 15:31:53
我尝试过许多方法来获得JavaScript呈现的代码,我得到的最好的方法是:
ICoreWebView2::AddWebResourceRequestedFilter
和ICoreWebView2::add_WebResourceRequested
来启用伪URI,例如“ICoreWebView2::AddWebResourceRequestedFilter
”WebResourceRequested
的回调中,1. Call `ICoreWebView2WebResourceRequestedEventArgs::get_ResourceContext` to get the request.
2. Call `ICoreWebView2Environment::CreateWebResourceResponse` to create the response.
3. Call `ICoreWebView2WebResourceRequestedEventArgs::put_Response` on the argument of the callback.
NavigationCompleted
的回调中,我们获取JavaScript呈现的HTML代码。发布于 2022-01-31 09:09:13
我认为您可以在数据URL中使用ICoreWebView2::Navigate
。数据URL从data:
方案开始,您可以使用data:text/html,
来显示HTML。您可以参考下面的示例代码:
webviewWindow->Navigate(L"data:text/html,<h1>Hello, World!</h1> <script>alert('hi');</script>");
上面的代码将显示一个HTML文档“你好,世界!”并执行JavaScript警报。
https://stackoverflow.com/questions/70902673
复制相似问题