C# CefSharp封装的浏览器触摸获得焦点,有光标。无法输入中文。鼠标点击后正常。求解答谢谢!

C# CefSharp封装的浏览器触摸获得焦点,有光标。无法输入中文。鼠标点击后正常。求解答谢谢!,第1张

github上有问题的描述

解决方法

// browser是窗口上的浏览器控件

browserPreviewTextInput += (o, e) =>{

foreach (var character in eText)

   {        // 把每个字符向浏览器组件发送一遍

       browserGetBrowser()GetHost()SendKeyEvent((int)WMCHAR, (int)character, 0);

 

}

 // 不让cef自己处理

   eHandled = true;

};

没测试过,你最好自己测试下,题外话,其实用electron来开发不会更香吗?

cefsharp新手慎用,用的是js代码,可以获取元素修改元素,但是使用js。

var frame = cbGetMainFrame();

var task = frameEvaluateScriptAsync("(function() { return documentgetElementsByTagName('input')[0]value; })();", null);

这段代码你要充分利用py抓取到可靠信息,知道第一个input是什么,而且有value属性,不然就会报错。

frameEvaluateScriptAsync()允许你写入js片段。

网页抓捕当中我觉得这个还是靠谱的,现在C#有很多,webbrowser、webkitbrowser、geckofx、webkitsharp都是些噱头,一般的网页都无法搞定。

py的webdriver和android的webview同出一辙,跟webkit一样。

但是获取信息是不行的,比如我要抓取哪个元素值,你老老实实先把decument对象获取到,再抓。

CefSharp调用 js

CefSharpWinFormsChromiumWebBrowser wb;

方式1 ExecuteScriptAsync 方法使用方式与 js 的 eval方法一样,异步执行,无返回值。

// xxx为js的方法名称

wbExecuteScriptAsync("xxx()");

// 为 js 的 变量jsVar赋值 'abc'

wbExecuteScriptAsync("jsVar='abc'");

方式2 EvaluateScriptAsync 方法使用方式与 js 的 eval方法一样,异步执行,有返回值。

Task<CefSharpJavascriptResponse> t = wbEvaluateScriptAsync("callTest2()");

// 等待js 方法执行完后,获取返回值

tWait();

// tResult 是 CefSharpJavascriptResponse 对象

// tResultResult 是一个 object 对象,来自js的 callTest2() 方法的返回值

if(tResultResult != null)

{

MessageBoxShow(tResultResultToString());

}

以上就是关于C# CefSharp封装的浏览器触摸获得焦点,有光标。无法输入中文。鼠标点击后正常。求解答谢谢!全部的内容,包括:C# CefSharp封装的浏览器触摸获得焦点,有光标。无法输入中文。鼠标点击后正常。求解答谢谢!、c# cefsharp能不能像webbrowser那样获取到元素,修改这个元素的属性呢、如何用.net cefsharp调javascript方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9457482.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存