WebView2 可以导航到应用程序中嵌入的 html 资源吗?
Can WebView2 Navigate to an html resource embedded in the application?
我一直在将我们的应用程序从使用 CHtmlView
转换为 WebView2。我们的应用程序有一个基于 Web 的起始页,通常从我们的服务器获取所有信息,但我们有本地资源设置,以防我们的服务器出现故障或客户端出现互联网问题。使用 CHtmlView
我们能够导航到嵌入式资源中的 html 页面,如下所示:
HINSTANCE hInstance = AfxGetResourceHandle();
ASSERT(hInstance != NULL);
TCHAR lpszModule[_MAX_PATH];
if (GetModuleFileName(hInstance, lpszModule, _MAX_PATH))
{
CString strResourceURL;
strResourceURL.Format(_T("res://%s/%d"), lpszModule, IDR_STARTPAGE);
Navigate2(strResourceURL, NULL,NULL);
}
这将加载页面和也作为资源嵌入的图像。
WebView2 Navigate 似乎不支持同样的方法,因为传递相同的字符串只会给出一个空白页面。
我能够通过 LoadResource
将页面加载到 CString
,然后将其传递给 NavigateToString
。这可以正常加载页面,但会显示 none 的图像。有什么方法可以使用 WebView2 获取嵌入的图像吗?
WebView2 不支持 res
URI 方案。对于不在磁盘上的应用程序内容,您可以使用:
NavigateToString
:您可以提供创建的应用程序 HTML 进行渲染,但是无法额外引用动态创建的应用程序的子资源。
WebResourceRequested
: You can use the CoreWebView2.WebResourceRequested
event to intercept any resource requests that you want after setting the filter via AddWebResourceRequestedFilter
。在这种情况下,您可以拦截任何资源请求并决定提供您自己的响应流,而不是让请求实际进入网络。
您可以同时使用这两者,使用 NavigateToString
提供初始 HTML 进行渲染,在 HTML 中引用特定域上的子资源,例如 app.example
,然后在 WebResourceRequested
中拦截对 app.example
的所有请求并提供您自己的流。
我一直在将我们的应用程序从使用 CHtmlView
转换为 WebView2。我们的应用程序有一个基于 Web 的起始页,通常从我们的服务器获取所有信息,但我们有本地资源设置,以防我们的服务器出现故障或客户端出现互联网问题。使用 CHtmlView
我们能够导航到嵌入式资源中的 html 页面,如下所示:
HINSTANCE hInstance = AfxGetResourceHandle();
ASSERT(hInstance != NULL);
TCHAR lpszModule[_MAX_PATH];
if (GetModuleFileName(hInstance, lpszModule, _MAX_PATH))
{
CString strResourceURL;
strResourceURL.Format(_T("res://%s/%d"), lpszModule, IDR_STARTPAGE);
Navigate2(strResourceURL, NULL,NULL);
}
这将加载页面和也作为资源嵌入的图像。
WebView2 Navigate 似乎不支持同样的方法,因为传递相同的字符串只会给出一个空白页面。
我能够通过 LoadResource
将页面加载到 CString
,然后将其传递给 NavigateToString
。这可以正常加载页面,但会显示 none 的图像。有什么方法可以使用 WebView2 获取嵌入的图像吗?
WebView2 不支持 res
URI 方案。对于不在磁盘上的应用程序内容,您可以使用:
NavigateToString
:您可以提供创建的应用程序 HTML 进行渲染,但是无法额外引用动态创建的应用程序的子资源。WebResourceRequested
: You can use theCoreWebView2.WebResourceRequested
event to intercept any resource requests that you want after setting the filter viaAddWebResourceRequestedFilter
。在这种情况下,您可以拦截任何资源请求并决定提供您自己的响应流,而不是让请求实际进入网络。
您可以同时使用这两者,使用 NavigateToString
提供初始 HTML 进行渲染,在 HTML 中引用特定域上的子资源,例如 app.example
,然后在 WebResourceRequested
中拦截对 app.example
的所有请求并提供您自己的流。