用VB.NET在CEFSharp中捕获Javascript鼠标事件
我有一个使用CEFSharp的VB.NET Winforms应用程序,我对它非常满意 目前,我能够将JS代码注入目标站点,例如在站点上触发函数或设置文本框值等。 同时,我还设法从目标网站上的文本框控件读取值 现在,我正在努力进一步发展: 我还希望能够在显示的网站上的javascript事件中使用我的代码做出反应。 e、 当网站上触发特定的javascript事件时,我可以在代码中调用vb.net函数 目前,我正在特别关注鼠标移动事件,如果可能的话,还将关注鼠标滚轮移动时的情况 我已经在web上和C中的Stackoverflow上找到了2-3个相关参考,包括CEFSharp常见问题解答中的示例,但我不完全确定如何将其移植到VB.NET。请参见此处提到的示例: 这里是Stackoverflow: 所以在原则上这应该是可能的,但我只是迷失在VB.NET翻译中 有人能给我指一下正确的方向吗?用VB.NET在CEFSharp中捕获Javascript鼠标事件,.net,vb.net,cefsharp,.net,Vb.net,Cefsharp,我有一个使用CEFSharp的VB.NET Winforms应用程序,我对它非常满意 目前,我能够将JS代码注入目标站点,例如在站点上触发函数或设置文本框值等。 同时,我还设法从目标网站上的文本框控件读取值 现在,我正在努力进一步发展: 我还希望能够在显示的网站上的javascript事件中使用我的代码做出反应。 e、 当网站上触发特定的javascript事件时,我可以在代码中调用vb.net函数 目前,我正在特别关注鼠标移动事件,如果可能的话,还将关注鼠标滚轮移动时的情况 我已经在web上和
提前感谢您的帮助。在另一个论坛的一些专家的帮助下,我能够将官方的CEFSharp示例移植到VB.NET 以下是我使用Visual Studio 2017所做的工作 首先,我创建了BoundObject类,并将其添加到我已经在其中使用的程序中:
Imports CefSharp.WinForms
Imports CefSharp
Public Class BoundObject
Friend browser As ChromiumWebBrowser
Public Sub browser_FrameLoadEnd(sender As Object, e As FrameLoadEndEventArgs)
If e.Frame.IsMain Then
browser.ExecuteScriptAsync("document.body.onmouseup = Function()
{
bound.onSelected(window.getSelection().toString());
}
"");")
End If
End Sub
Public Sub OnSelected(ByVal selected As String)
MessageBox.Show("The user selected some text [" & selected & "]")
End Sub
End Class
然后,我在我的Public Sub New函数的末尾添加了以下代码:
CefSharpSettings.LegacyJavascriptBindingEnabled = True
Dim obj As New BoundObject()
obj.browser = browser
browser.RegisterJsObject("bound", obj)
AddHandler browser.FrameLoadEnd, AddressOf obj.browser_FrameLoadEnd
第一行是必需的,因为我使用的是CEFSharp的V63,从这个版本开始,有一种处理绑定函数的新方法,但是通过启用旧绑定方法,旧方法仍然可用
我还必须更改事件名称,因为该C示例中的原始事件名称似乎在较新版本的CEFSharp中被重命名
我使用Devtools控制台测试了这段代码,我可以调用bound.onSelected函数,将JS中的字符串传递给vb.net应用程序,并使用JS中从网站接收到的字符串启动textbox
希望这能帮助一些人,因为似乎只有很少的例子