c#向CEF加入js代码

       //异步

       private void async button1_Click(object sender, EventArgs e)
        {
            //注入本机bin\x86\debug下的文件
            browser.ExecuteScriptAsync(File.ReadAllText(@"JavaScript2.js"));

            //也可加入到资源中直接取字符串

            //browser.ExecuteScriptAsync(Resource.JavaScript2);
            //也可以注入网络文件

            // 调用网页上已有js方法,等待js 方法执行完后,获取返回值
            CefSharp.JavascriptResponse  t =  await browser.GetBrowser().MainFrame.EvaluateScriptAsync("testGetData()");
            
            // t.Result 是 CefSharp.JavascriptResponse 对象
            // t.Result.Result 是一个 object 对象
            if (t.Result != null)
            {
                MessageBox.Show(t.Result.ToString());
            }

            //注入js代码。当然也可以是jquery代码。如果页面没有jq库,要先注入jq库
            //下面演示给 当前地址包含login的, 界面上div class=develop 的第一个input赋值aaaa
            var curUrl = browser.Address.ToLower();
            if (curUrl.Contains("login".ToLower()))
            {
                string script = "";
                script += "(function btn() {";
                script += " var obj = document.getElementsByClassName('develop');";
                script += " if (obj.length > 0)";
                script += " {";
                script += "  obj[0].getElementsByTagName('input')[0].focus();";
                script += "  obj[0].getElementsByTagName('input')[0].value ='aaaa';";
                script += " }";
                script += " })()";
                //注入执行js
                browser.ExecuteScriptAsync(script);
            }

        }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用 CefSharp 截取请求的代码如下: ```csharp using CefSharp; using CefSharp.WinForms; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace CefSharpExample { public partial class MainForm : Form { private ChromiumWebBrowser browser; public MainForm() { InitializeComponent(); InitializeChromium(); } private void InitializeChromium() { CefSettings settings = new CefSettings(); settings.CachePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "CefSharp\\Cache"); Cef.Initialize(settings); browser = new ChromiumWebBrowser("https://www.google.com"); browser.FrameLoadEnd += Browser_FrameLoadEnd; browser.RequestHandler = new RequestHandler(); browser.Dock = DockStyle.Fill; this.Controls.Add(browser); } private void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e) { if (e.Frame.IsMain) { browser.ExecuteScriptAsync("alert('Page loaded.');"); } } public class RequestHandler : IRequestHandler { public bool OnBeforeBrowse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool isRedirect) { return false; } public bool OnBeforeResourceLoad(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback) { Console.WriteLine(request.Url); return false; } public bool GetAuthCredentials(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, bool isProxy, string host, int port, string realm, string scheme, IAuthCallback callback) { return false; } public bool OnCertificateError(IWebBrowser chromiumWebBrowser, IBrowser browser, CefErrorCode errorCode, string requestUrl, ISslInfo sslInfo, IRequestCallback callback) { return false; } public void OnPluginCrashed(IWebBrowser chromiumWebBrowser, IBrowser browser, string pluginPath) { } public CefReturnValue OnBeforeResourceLoad(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResourceRequestCallback callback) { return CefReturnValue.Continue; } public bool OnResourceResponse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response) { return false; } public void OnRenderProcessTerminated(IWebBrowser chromiumWebBrowser, IBrowser browser, CefTerminationStatus status) { } public bool OnQuotaRequest(IWebBrowser chromiumWebBrowser, IBrowser browser, string originUrl, long newSize, IRequestCallback callback) { return false; } public void OnResourceRedirect(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response, ref string newUrl) { } public bool OnProtocolExecution(IWebBrowser chromiumWebBrowser, IBrowser browser, string url) { return false; } public void OnRenderViewReady(IWebBrowser chromiumWebBrowser, IBrowser browser) { } public bool OnResourceLoadComplete(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength) { return false; } public void OnResourceLoadComplete(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response, HttpStatusCode status) { } public void OnProtocolExecutionComplete(IWebBrowser chromiumWebBrowser, IBrowser browser, string url, bool wasSuccessful) { } public bool OnBeforeBrowse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool userGesture, bool isRedirect) { return false; } public void OnDocumentAvailableInMainFrame(IWebBrowser chromiumWebBrowser, IBrowser browser) { } public void OnFrameAttached(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame) { } public void OnFrameDetached(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame) { } public void OnPluginCrashed(IWebBrowser chromiumWebBrowser, IBrowser browser, string pluginPath, string pluginVersion) { } public void OnRenderFrameReady(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame) { } public bool OnResourceRedirect(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response) { return false; } } } } ``` 在这个例子中,我们创建了一个 `ChromiumWebBrowser` 控件并访问了 Google 主页。我们在 `RequestHandler` 类中实现了 `OnBeforeResourceLoad` 方法来截取请求,并在控制台输出请求的 URL。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顺其自然~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值