Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
energye
energy
提交
5063477b
energy
项目概览
energye
/
energy
通知
13
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
energy
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5063477b
编写于
10月 09, 2023
作者:
yanghye
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
A: demo chromium模拟事件
上级
3659531f
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
101 addition
and
0 deletion
+101
-0
example/mockevent/mockevent.go
example/mockevent/mockevent.go
+82
-0
example/mockevent/resources/index.html
example/mockevent/resources/index.html
+19
-0
未找到文件。
example/mockevent/mockevent.go
0 → 100644
浏览文件 @
5063477b
package
main
import
(
"embed"
"fmt"
"github.com/energye/energy/v2/cef"
"github.com/energye/energy/v2/cef/ipc"
"github.com/energye/energy/v2/cef/ipc/target"
"github.com/energye/energy/v2/consts"
"time"
)
//go:embed resources
var
resources
embed
.
FS
func
main
()
{
//全局初始化 每个应用都必须调用的
cef
.
GlobalInit
(
nil
,
&
resources
)
//创建应用
var
app
=
cef
.
NewApplication
()
cef
.
BrowserWindow
.
Config
.
Title
=
"Energy - mockevent"
cef
.
BrowserWindow
.
Config
.
Url
=
"fs://energy"
// 设置默认
cef
.
BrowserWindow
.
Config
.
LocalResource
(
cef
.
LocalLoadConfig
{
ResRootDir
:
"resources"
,
FS
:
&
resources
,
//静态资源所在的 embed.FS
}
.
Build
())
app
.
SetOnRenderLoadEnd
(
func
(
browser
*
cef
.
ICefBrowser
,
frame
*
cef
.
ICefFrame
,
httpStatusCode
int32
)
{
// 创建 dom visitor
visitor
:=
cef
.
DomVisitorRef
.
New
()
// 监听事件
// 这个事件在渲染进程中才会执行
visitor
.
SetOnVisit
(
func
(
document
*
cef
.
ICefDomDocument
)
{
body
:=
document
.
GetBody
()
inpText
:=
body
.
GetDocument
()
.
GetElementById
(
"inpText"
)
fmt
.
Println
(
"inpText"
,
inpText
.
GetElementBounds
())
ipc
.
EmitTarget
(
"dom"
,
target
.
NewTargetMain
(),
1
,
2
)
})
fmt
.
Println
(
"visitor:"
,
visitor
)
frame
.
VisitDom
(
visitor
)
})
cef
.
BrowserWindow
.
SetBrowserInit
(
func
(
event
*
cef
.
BrowserEvent
,
window
cef
.
IBrowserWindow
)
{
var
isLoad
bool
// 模拟一个其它任务中执行鼠标事件
var
mockEvent
=
func
()
{
// 页面加载完之后
for
{
if
isLoad
{
break
}
time
.
Sleep
(
time
.
Second
)
//一秒后执行
window
.
RunOnMainThread
(
func
()
{
//在UI主线程
chromium
:=
window
.
Chromium
()
// 鼠标事件
me
:=
&
cef
.
TCefMouseEvent
{}
/*
演示的是点击界面左上角Button按钮, 前提是需要知道按钮在界面的坐标
*/
// 设置坐标 相当于窗口内
me
.
Y
=
12
me
.
X
=
25
// 模拟鼠标到指定位置
chromium
.
SendMouseMoveEvent
(
me
,
false
)
// 模拟鼠标双击事件
// 左键点击按下1次
chromium
.
SendMouseClickEvent
(
me
,
consts
.
MBT_LEFT
,
false
,
1
)
// 左键点击抬起1次
chromium
.
SendMouseClickEvent
(
me
,
consts
.
MBT_LEFT
,
true
,
1
)
// 模拟文本框
//chromium.SendKeyEvent()
})
}
}
ipc
.
On
(
"dom"
,
func
(
s
,
a
int
)
{
fmt
.
Println
(
"dom"
,
s
,
a
)
mockEvent
()
})
})
//运行应用
cef
.
Run
(
app
)
}
example/mockevent/resources/index.html
0 → 100644
浏览文件 @
5063477b
<!DOCTYPE html>
<html
lang=
"en"
>
<head>
<meta
charset=
"UTF-8"
>
<title></title>
<script>
function
btnClick
()
{
let
msg
=
document
.
getElementById
(
"
msg
"
)
msg
.
innerHTML
+=
"
mouse click<br>
"
}
</script>
</head>
<body>
<button
onclick=
"btnClick()"
>
Button
</button>
<br>
<input
type=
"text"
id=
"inpText"
><br>
<div
id=
"msg"
></div>
</body>
</html>
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录