隐藏

c#向CEF加入js代码

发布:2023/9/18 14:49:19作者:管理员 来源:本站 浏览次数:480

 //异步

       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);
            }

        }