[英]How to get an event when the user selects text in CefSharp
我正在使用CefSharp WinForms v43允許用戶在顯示的網頁上選擇文本。 每當“文本被選中”時,我都需要一個事件,因此我正在使用JS鈎掛onmouseup
事件,並嘗試將所選文本作為返回值從JS傳遞到C#。 但是,每次我在網頁上選擇內容時,瀏覽器都會掛斷UI線程。 如果我忽略arg,則觸發該事件。 有什么方法可以讓CefSharp在傳遞arg時從JS調用C#方法?
我這樣做是為了初始化:
browser = new ChromiumWebBrowser("www.google.com"");
browser.RegisterJsObject("jsObject", this, false);
我在FrameLoadEnd
上執行此FrameLoadEnd
:
browser.ExecuteScriptAsync(@"
document.body.onmouseup = function(){
jsObject.OnSelected(window.getSelection())
}
");
因此,當用戶在頁面上選擇一些文本時,此方法應觸發:
public void OnSelected(string selected){
MessageBox.Show("The user selected some text [" + selected + "]");
}
當我嘗試使用文字值時,我的C#處理程序會觸發足夠的奇怪。
browser.ExecuteScriptAsync(@"
document.body.onmouseup = function(){
jsObject.OnSelected('hello world')
}
");
AFAIK,CefSharp只能將原始值封送為args。 確保您選擇的是字符串,並且事件應觸發。 為我工作。
將FrameLoadEnd
的代碼更改為此:
browser.ExecuteScriptAsync(@"
document.body.onmouseup = function(){
jsObject.OnSelected(window.getSelection().toString())
}
");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.