CefSharp 注入js的两种方法

我们在应用程序嵌入浏览器的过程中,或多或少需要插入js实现一些功能。

CefSharp 注入js的两种方法_第1张图片

 

下面介绍下CefSharp注入js的两种方法。

一、js代码量较少的情况下

string script = "function showmessage(){alert('调用了!');};";
string jscode = "var script = document.createElement(\"script\");\r\n";
jscode += "script.type = \"text/javascript\";\r\n";
jscode += $"script.text = \"{script}\";";
jscode += "document.body.appendChild(script);"; 
ChromeBrowser.ExecuteJavaScriptAsync(jscode);

二、代码量较多,或者代码中包含双引号等字符的情况下。可将文件保存为js文件,然后上传到服务器,使用一下方法注入

string jscode = "var script = document.createElement(\"script\");\r\n";
jscode += "script.type = \"text/javascript\";\r\n";
jscode += $"script.src = \"https://yoururl.com/test.js?v=" + getTime() + "\";\r\n";
jscode += "document.body.appendChild(script);";
ChromeBrowser.ExecuteJavaScriptAsync(jscode);

后面带的gettime是获取本地的时间戳,可以防止js缓存

如果目标站点是iframe结构的,使用以下方法可注入到指定的iframe页面

ChromeBrowser.GetBrowser().GetFrame("yourFrameName").ExecuteJavaScriptAsync(jscode);

以上就是CefSharp注入js的两种方法。

顺便说说WebBrowser注入js的方法

var tag = browser.Document.CreateElement("script");
var scriptElement = tag.DomElement as IHTMLScriptElement;
scriptElement.type = "text/javascript";//设定为Javascript
scriptElement.text = script;//设置内容
browser.Document.Body.AppendChild(tag);

指定iframe

var tag = browser.Document.Window.Frames["yourFrameName"].Document.CreateElement("script");
var scriptElement = tag.DomElement as IHTMLScriptElement;
scriptElement.type = "text/javascript";//设定为Javascript
scriptElement.text = script;//设置内容
browser.Document.Window.Frames["yourFrameName"].Document.Body.AppendChild(tag);

你可能感兴趣的:(C#,javascript,前端,vue.js)