在使用webview组件的时候,出现打开页面空白排查后发现是虚拟主机映射时间顺序的问题,在一些稍微复杂一些的webview页面会出现,且在部分电脑复现,导致webview完全无法使用:如果webview页面在虚拟路径完成映射前加载,会找不到对应的路径,导致页面报错找不到对应的资源:
虚拟主机映射应该在webview加载前完成映射,避免路径找不到报错。
参考查到的资料
这个问题大概率是你的代码里有调用其它子程序造成的。可以去除相关子程序调用试试。
这个动作的白板问题基本可以排除"映射晚于导航"。动作定义(我通过 GetSharedActionByLink 接口拿到,修订 347)显示它确实用了 myserver|{serverPath} 映射和 HTML 内容模式,但 Quicker 侧代码是先映射后 NavigateToString,顺序正确。更关键的证据来自反馈帖(ViewTopic/41998):
GetSharedActionByLink
myserver|{serverPath}
NavigateToString
myserver/image
math.js
No resource with given URL found
about:blank
页面 HTML 约 42KB,在文档解析阶段依次做四件事,任何一环卡住都表现为白板:
$quickerSp('cal_check')
$quickerSp('turnOffMsgWindow')
init()
<script src="https://myserver/math.js">
await $quickerSp('getContent')
try { } catch {}
映射目录只承载 math.js 和两个 svg 图标。未配置 defaultBgColor 时 WebView 底色为透明,透出 WPF 窗口的浅色底,所以"白板"本身不能证明 WebView 没起来。
defaultBgColor
$quickerSp
IDispatch
useMultiThread=1
RunOnUiThread(true)
Promise.resolve(hostObjects.v)
.then
window.$quickerSp
CoreWebView2 == null
OpenUrlAndWaitClose
CheckWindowState