簡體   English   中英

用戶在CefSharp中選擇文本時如何獲取事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM