WinForm应用程序与JavaScript脚本交互取值
BingWay原创作品,转载请注明作者和出处。
最近做了一个小东西,用于WinForm应用程序获取网站的用户登录信息(包括用户名、密码、角色),是一款Web网站辅助管理的小应用程序。
1 <script type="text/javascript">
2 function GetData()//用此方法,会弹出“缺少对象”错误
3 {
4
5 var username = document.getElementById("txtuname").value ;
6 var password = document.getElementById("txtpwd").value ;
7 var ddlrole = document.getElementById("ddlRole");//得到DropdownListid
8 var role = ddlrole.options[ddlrole.selectedIndex].text ;//得到选中文本值
9 return [username,password,role];
10 }
11 </script>
2 function GetData()//用此方法,会弹出“缺少对象”错误
3 {
4
5 var username = document.getElementById("txtuname").value ;
6 var password = document.getElementById("txtpwd").value ;
7 var ddlrole = document.getElementById("ddlRole");//得到DropdownListid
8 var role = ddlrole.options[ddlrole.selectedIndex].text ;//得到选中文本值
9 return [username,password,role];
10 }
11 </script>
本想用上面的脚本,此脚本在浏览器中运行一切正常,能得到值,但是跑到WinForm应用程序中,一直报“缺少对象”错误。调试再三未果的情况下,得出一个经典的结论,那就是传说中的人品问题。后来,查出原因,发现是“document.getElementById("txtuname").value”跑到应用程序中就报“缺少对象错误。
//登录页面
Parameters.username = txtuname.Text;//点击登陆时,赋值
Parameters.pwd = txtpwd.Text;
Parameters.role = ddlRole.SelectedValue;
Parameters.username = txtuname.Text;//点击登陆时,赋值
Parameters.pwd = txtpwd.Text;
Parameters.role = ddlRole.SelectedValue;
//后台代码
public string username = Parameters.username;//静态全局变量传值
public string password = Parameters.pwd;
public string role = Parameters.role;
public string password = Parameters.pwd;
public string role = Parameters.role;
//调用后台数据
<script type="text/javascript">
function GetData()
{
var username ="<%= username %>";
var password = "<%= password %>" ;
var role ="<%=role%>" ;
return [username,password,role];
}
</script>
<script type="text/javascript">
function GetData()
{
var username ="<%= username %>";
var password = "<%= password %>" ;
var role ="<%=role%>" ;
return [username,password,role];
}
</script>
应用程序中,对脚本的调用:
object[] Data = webBrowser1.Document.InvokeScript("GetData");//获取脚本数据
foreach( string info in Data ){
info=info+","; //循环取值
}
string[] arr=info.Split(char.Parse(","));
Parameters.username = arr[0].ToString(); //得到登录输入用户名
Parameters.pwd = arr[1].ToString(); //得到登录输入密码
Parameters.role = arr[2].ToString(); //得到登录选择角色
foreach( string info in Data ){
info=info+","; //循环取值
}
string[] arr=info.Split(char.Parse(","));
Parameters.username = arr[0].ToString(); //得到登录输入用户名
Parameters.pwd = arr[1].ToString(); //得到登录输入密码
Parameters.role = arr[2].ToString(); //得到登录选择角色
以上是我的方法,如果大家有更好的方法,还请不吝赐教!