Javascript 如何在用户选择文本时获取事件
我正在使用WinForms v43允许用户在显示的网页上选择文本。每次选择文本时,我都需要一个事件,因此我使用JS连接onmouseup事件,并尝试将所选文本作为返回值从JS传递给C。但每次我在网页上选择某个内容时,浏览器都会挂起UI线程。如果省略arg,则会触发事件。有没有办法让CefSharp在传递arg时从JS调用C方法 我这样做是为了init:Javascript 如何在用户选择文本时获取事件,javascript,c#,chromium,cefsharp,Javascript,C#,Chromium,Cefsharp,我正在使用WinForms v43允许用户在显示的网页上选择文本。每次选择文本时,我都需要一个事件,因此我使用JS连接onmouseup事件,并尝试将所选文本作为返回值从JS传递给C。但每次我在网页上选择某个内容时,浏览器都会挂起UI线程。如果省略arg,则会触发事件。有没有办法让CefSharp在传递arg时从JS调用C方法 我这样做是为了init: browser = new ChromiumWebBrowser("www.google.com""); browser.RegisterJsO
browser = new ChromiumWebBrowser("www.google.com"");
browser.RegisterJsObject("jsObject", this, false);
我在FrameLoadEnd上执行此操作:
因此,当用户选择页面上的某些文本时,此方法应触发:
public void OnSelected(string selected){
MessageBox.Show("The user selected some text [" + selected + "]");
}
奇怪的是,当我尝试使用文本值时,我的C处理程序会触发
browser.ExecuteScriptAsync(@"
document.body.onmouseup = function(){
jsObject.OnSelected('hello world')
}
");
首先,CefSharp只能将原语值封送为参数。确保您的选择是一个字符串,并且应该触发事件。对我有用 将FrameLoadEnd中的代码更改为: browser.RegisterJsObjectjsObject,this,false;生成编译器错误:无法从“bool”转换为“CefSharp.BindingOptions”。
browser.ExecuteScriptAsync(@"
document.body.onmouseup = function(){
jsObject.OnSelected('hello world')
}
");
browser.ExecuteScriptAsync(@"
document.body.onmouseup = function(){
jsObject.OnSelected(window.getSelection().toString())
}
");