【发布时间】:2021-12-08 20:03:26
【问题描述】:
我正在尝试创建一个准系统 WebView2 应用程序,它允许我从与应用程序所在位置相同的目录加载特定的 HTML 文件(因此,如果它在桌面上,安装在 C:\Windows\ 目录中,C:\Users\Poopy\ ,无论在哪里。HTML 文件的标题将是 main.html(或者我将其更改为 index.html)
不过,我怎样才能获取当前目录,并创建一个文件路径以在应用启动时加载?
经过一番摸索,这就是我的 Form1.cs 所拥有的:
if (webView != null && webView.CoreWebView2 != null) {
string currentPath = Directory.GetCurrentDirectory();
string text = System.IO.File.ReadAllText(currentPath + @"\main.html");
webView.CoreWebView2.NavigateToString(text);
this.webView.Source = new System.Uri(currentPath + @"\main.html");
}
我预计会发生什么:显示与应用程序位于同一文件夹中的空白文件。对于main.html,应显示带有文本“hello world”的白页。我将能够使用 F12 拉出开发工具弹出窗口。
实际发生的情况:如果没有在属性中指定来源,我会得到一个没有网页显示的空白屏幕。似乎没有出现 WebView 表单;如果我按 F12 不会弹出开发工具。如果指定了源,并且它是有效条目,我将加载 URL,或者如果我只输入文件名(假设它默认为仅输入 file:///main.html 的相对 URL)我会得到一个 ERR_FILE_NOT_FOUND 错误页面.
【问题讨论】:
-
问题中的代码
webView.CoreWebView2.NavigateToString(text);应该可以工作。我建议重新阅读minimal reproducible example 发布代码指南和edit 相应的问题。 IE。如果您在 显示 HTML 内容时遇到问题 - 删除所有与文件相关的代码并将text设置为某个常数,如果您在定位文件时遇到问题 - 相应地调整代码并解释您所看到的结果/预期结果. -
您是否尝试将 Source 设置为
file:///c:\temp\default.html(替换为实际路径) - 注意 3/ -
我回家后会试试看(下班后有朋友过生日)。我改用
file:\\\。 -
@AlexeiLevenkov 所以我在没有
this.webView.Source行的情况下尝试了它,但它仍然没有显示任何内容 - 甚至没有错误,就像应用程序中不存在 WebView 表单一样。 -
@mtk:
WebView与WebView2不同。WebView2的文档在这里:docs.microsoft.com/en-us/microsoft-edge/webview2/…