WebBrowser js 变量
概述
WebBrowser控件是Windows Forms应用程序中用于显示网页内容的一个控件,通过该控件,用户可以在桌面应用程序中嵌入一个基于IE内核的浏览器引擎,从而在应用程序内部浏览网页内容,除了基本的网页浏览功能外,WebBrowser控件还支持与JavaScript代码进行交互,包括执行JavaScript函数和获取或设置JavaScript变量的值。
源码详解
1、创建WebBrowser控件并导航到指定网页:
需要在Windows Forms应用程序中添加一个WebBrowser控件,并设置其属性以适应界面布局。
使用WebBrowser控件的Navigate方法导航到指定的URL。
2、插入JavaScript代码以获取变量值:
为了获取JavaScript变量的值,需要向当前文档中插入一段JavaScript代码,这段代码可以是一个函数,用于返回指定变量的值。
如果页面中有一个JavaScript变量appVersion,其值为"小米",可以通过插入以下代码来创建一个名为showAppVersion的函数,该函数会返回appVersion的值:
function showAppVersion() { return appVersion; }
3、调用JavaScript函数并获取返回值:
使用WebBrowser控件的Document属性获取当前页面的文档对象。
调用文档对象的InvokeScript方法,传入要执行的JavaScript函数名(如"showAppVersion")以及一个空数组作为参数列表,这将执行JavaScript函数并返回其结果。
将返回的结果转换为适当的类型(如string),以便在C#代码中使用。
4、处理异常情况:
在调用InvokeScript方法之前,需要判断token是否存在,以避免因变量未定义而导致的错误,可以使用typeof操作符来检查变量类型,如果变量不存在则返回undefined。
如果变量存在但未定义,可以根据需要决定是否继续执行后续代码。
5、完整示例代码:
using System; using System.Windows.Forms; namespace WebBrowserExample { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { webBrowser1.Navigate("http://www.baidu.com"); } private string GetJsVar(string varname) { if (webBrowser1.Document == null) return "No document"; webBrowser1.Document.InvokeScript("eval", new object[] { "if(typeof(" + varname + ")!='undefined'){var script=document.createElement('script');script.type='text/javascript';script.text='function show" + varname + "(){return " + varname + ";}';document.body.appendChild(script);}else{var script=document.createElement('script');script.type='text/javascript';script.text='function show" + varname + "(){return undefined;}';document.body.appendChild(script);}document.body.removeChild(script);" }); object jscriptObj = webBrowser1.Document.InvokeScript("show" + varname ); if (jscriptObj != null) { if (jscriptObj.ToString() != "undefined") return jscriptObj.ToString(); } return "no js var"; } } }
相关问题与解答
1、问题:如何在WebBrowser控件中触发JavaScript事件?
解答:要在WebBrowser控件中触发JavaScript事件,可以使用Document对象的fireEvent方法,需要获取要触发事件的元素(如按钮),然后使用fireEvent方法触发相应的事件(如onclick)。
HtmlElement button = webBrowser1.Document.GetElementById("myButton"); button.FireEvent("onclick");
2、问题:如何设置WebBrowser控件中的JavaScript变量值?
解答:要设置WebBrowser控件中的JavaScript变量值,可以使用Document对象的InvokeScript方法结合eval函数,构建一个包含赋值语句的字符串(如"x = 10"),然后将其作为参数传递给eval函数。
webBrowser1.Document.InvokeScript("eval", new object[] { "x = 10" });
这样,就将JavaScript变量x的值设置为10。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1083514.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复