使用webBrowser 提交表单,控制页面的两种方法
2008-05-16 10:37
369 查看
一、第一种方法貌似网上很少有人提。。。。就是使用javascript去控制页面。
熟悉javascript的人知道,它主要是用来控制客户端浏览器上行为动作的语言。
用浏览器随便打开一个页面,在地址栏输入: javascript:alert("a");void(0); 确认,就会弹出警告框。也就是说,可以通过在地址栏输入js代码,控制页面中内容。
比如要添表单,可以 javascript:document.getElementById("username").value="http://blogbeta.blueidea.com/warran";document.getElementById("password").value="123456";void(0);
那么,使用webBrowser,通过js去控制页面,提交表单。
webBrowser1.Navigate("javascript:document.getElementById(/"username/").value="http://blogbeta.blueidea.com//"warran/";document.getElementById(/"password/").value=/"123456/";void(0);");
如果还要提交表单,可以加上document.form1.submit();" 就可以了。
不过用这个方法,要注意两点:
1、在一次运行中,不能多次使用。
比如
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("javascript:document.getElementById("username").value="http://blogbeta.blueidea.com/warran";void(0);");
webBrowser1.Navigate("javascript:document.getElementById("password").value="123456";void(0);");
}
这样,就会出问题。结果是没反映。。。。但改成如下,就可以,但基本上,这样不适合实际应用。
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("javascript:document.getElementById("username").value="warran";void(0);");
messageBox.Show("aaa");
webBrowser1.Navigate("javascript:document.getElementById("password").value="123456";void(0);");
}
就是说弹个警告框,就可正常运行了。大致意思就是让主窗口重新激活一下,才行。。。
2、Navigate中的js代码不能过长,不然仍然会不执行。。。。
二、第二种方法。也是推荐使用的方法,使用ihtmldocument2的类去控制。
1、添加引用。
在COM中,选择Microsoft.mshtml
2、使用命名空间。
using mshtml;
3、具体代码。
IHTMLDocument2 doc = (IHTMLDocument2)this.webBrowser1.Document.DomDocument;
mshtml.HTMLInputTextElement text1;
text1 = (HTMLInputTextElement)doc.all.item("username", 0);
((mshtml.HTMLInputElement)(text1)).value = "warran";
//这里注意,因为是input输入框,所以要定义HTMLInputTextElement类
text1 = (HTMLInputTextElement)doc.all.item("password", 0);
((mshtml.HTMLInputElement)(text1)).value = "123456";
mshtml.HTMLFormElement f1 = (mshtml.HTMLFormElement)doc.all.item("form1", 0);
((HTMLFormElement)(f1)).submit();
熟悉javascript的人知道,它主要是用来控制客户端浏览器上行为动作的语言。
用浏览器随便打开一个页面,在地址栏输入: javascript:alert("a");void(0); 确认,就会弹出警告框。也就是说,可以通过在地址栏输入js代码,控制页面中内容。
比如要添表单,可以 javascript:document.getElementById("username").value="http://blogbeta.blueidea.com/warran";document.getElementById("password").value="123456";void(0);
那么,使用webBrowser,通过js去控制页面,提交表单。
webBrowser1.Navigate("javascript:document.getElementById(/"username/").value="http://blogbeta.blueidea.com//"warran/";document.getElementById(/"password/").value=/"123456/";void(0);");
如果还要提交表单,可以加上document.form1.submit();" 就可以了。
不过用这个方法,要注意两点:
1、在一次运行中,不能多次使用。
比如
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("javascript:document.getElementById("username").value="http://blogbeta.blueidea.com/warran";void(0);");
webBrowser1.Navigate("javascript:document.getElementById("password").value="123456";void(0);");
}
这样,就会出问题。结果是没反映。。。。但改成如下,就可以,但基本上,这样不适合实际应用。
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("javascript:document.getElementById("username").value="warran";void(0);");
messageBox.Show("aaa");
webBrowser1.Navigate("javascript:document.getElementById("password").value="123456";void(0);");
}
就是说弹个警告框,就可正常运行了。大致意思就是让主窗口重新激活一下,才行。。。
2、Navigate中的js代码不能过长,不然仍然会不执行。。。。
二、第二种方法。也是推荐使用的方法,使用ihtmldocument2的类去控制。
1、添加引用。
在COM中,选择Microsoft.mshtml
2、使用命名空间。
using mshtml;
3、具体代码。
IHTMLDocument2 doc = (IHTMLDocument2)this.webBrowser1.Document.DomDocument;
mshtml.HTMLInputTextElement text1;
text1 = (HTMLInputTextElement)doc.all.item("username", 0);
((mshtml.HTMLInputElement)(text1)).value = "warran";
//这里注意,因为是input输入框,所以要定义HTMLInputTextElement类
text1 = (HTMLInputTextElement)doc.all.item("password", 0);
((mshtml.HTMLInputElement)(text1)).value = "123456";
mshtml.HTMLFormElement f1 = (mshtml.HTMLFormElement)doc.all.item("form1", 0);
((HTMLFormElement)(f1)).submit();
相关文章推荐
- c#使用webBrowser,控制页面、提交表单的两种方法
- c#使用webBrowser,控制页面、提交表单的两种方法
- webBrowser,控制页面、提交表单的两种方法
- 使用layer的iframe层提交表单后,需要关闭当前的iframe层,然后刷新父页面的方法
- 使用js提交form表单的两种方法
- Html表单提交到Servlet输出到页面乱码 Html使用的编码是UTF-8编码显示页面,之后使用form表单提交字段到Servlet中,Servlet将利用getParamer方法获得fo
- 使用iframe提交表单不刷新页面的方法
- 使用js提交form表单的两种方法
- 使用js提交form表单的两种方法
- 使用JS和JQuery 阻止表单提交的两种方法
- 使用layer的iframe层提交表单后,需要关闭当前的iframe层,然后刷新父页面的方法
- jQuery使用serialize(),serializeArray()方法取得表单数据+字符串和对象类型两种表单提交的方法
- jQuery使用serialize(),serializeArray()方法取得表单数据+字符串和对象类型两种表单提交的方法
- 用js将form表单同时提交到两个不同页面的方法
- 把JSON数据载入到页面表单的两种思路(对easyui自带方法进行改进)
- 使用get方法提交form表单时出现乱码解决方法
- 在使用showModalDialog时struts1提交表单,弹出新页面问题处理
- JS控制页面控件隐藏显示的两种方法
- javascript控制页面控件隐藏显示的两种方法
- JS控制表单提交的方法