分享
WebView 问题合集
输入“/”快速插入内容
WebView 问题合集
飞书用户6223
6月27日修改
💡
在 v1.3.395 版本会新增 WebView 组件, 命令很多, 正在更新中, 封装好的部分已上传到 xcgui 仓库。
其实已经可以正常使用了:
webview例子预览版
, 有刚需命令可联系我提前进行封装。
获取最新更新方法可查看:
go get 获取带日期版本号的库
WebView2 相关地址
Microsoft Edge WebView2 简介
WebView2 文档
: 这个很重要, 找函数全看这里了, 里面那个目录最下面有按钮可下载为 PDF 本地查看。
Webview2 运行时下载
: win10 从 2004 版本开始内置 WebView2 运行时。
WebView2 SDK 更新日志
:可查看指定方法是在哪个版本的运行时加入的。
WebView2 SDK 更新日志-老版本
:可查看指定方法是在哪个版本的运行时加入的。
WebView2 SDK 下载
: 可获取 runtimes\win-x64\native\WebView2Loader.dll, 项目已经内置了, 一般无需额外获取.
当前库中使用的 Webview2 运行时版本号是 136.0.3240.44
可使用
edge.GetVersion()
获取。
高版本运行时是兼容低版本的。低版本运行时不用高版本的方法也没有问题。
修改 Webview 的代码要在 UI 线程执行
否则会报错:
This method can only be called from the thread that created the object.
需要调用 UI 线程, 在回调函数里执行:
a.CallUT()
.
查询指定方法受支持的最低运行时版本
比如
put_IsNonClientRegionSupportEnabled
,这是很重要的方法,它支持拖动 webview 窗口。
在
WebView2 SDK 更新日志-老版本
中搜索
put_IsNonClientRegionSupportEnabled
,可找到:
代码块
Go
1.0.2420.47
Release Date: March 25, 2024
NuGet package for WebView2 SDK 1.0.2420.47
For full API compatibility, this Release version of the WebView2 SDK requires WebView2 Runtime version 123.0.2420.47 or higher.
看最后, 可知最低需要
123.0.2420.47
版本的运行时。
支持 win7/8.1 的最后一个 WebView2 运行时版本是 109.0.1518.140
在 win7 使用
小型引导程序
进行安装时会自动下载此版本,而不是最新版本。
你需要注意的就是高版本的方法在低版本是用不了的,会报空指针异常。
如果你想离线安装这个运行时,下载:
百度网盘
支持 win7 的最后 go 版本是 1.20,低版本和新版本是可以共存的,查看:
go新版本在win7无法运行
IStream 对象不再使用了需要释放
不管是你传参的还是函数返回的, 不再使用后都要释放, 以防内存泄漏.
获取的对象不再使用了需要释放, 以防内存泄漏, 因为获取到的是 com 对象, gc回收了go对象, 但 com 对象不会被go gc回收, 所以需要手动释放
代码块
Go
settings, _ := wv.GetSettings()
settings.SetIsStatusBarEnabled(
false
)
settings.Release()
例外情况:
由于 wv.WebView2_2 到 27 是常用的对象, 这些wv内部声明的对象会在调用wv.Close()时自动释放, 窗口关闭时会自动调用 wv.Close(), 你点进Close的源码可以看到释放的代码, 所以这些不需要你手动释放.
封装的有普通方法和Must版本的方法
Must版本的方法会忽略错误, 实际上com对象的方法基本不会调用出错, 除非传参有问题, 传参有问题也基本不会导致崩溃, 只是操作会无效.