webBrowser可以获取ajax生成的内容吗? 本帖最后由 shijie03 于 2012-09-13 17:33:20 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 必须可以,webBrowser本身就可以显示ajax请求的html啊,如果单纯的ajax信息,你可以找到ajax请求的UR了就可以了~ 可以,不过 控件没有办法知道 javascript的事件,DocumentComplete也不会发生,只能自己写个Timer去检查内容是不是改变了。 我在另一个帖子里写的测试代码http://topic.csdn.net/u/20120820/10/f2f21a45-5395-4cef-8d08-34e2022be8f1.html System.Timers.Timer timer = null; private void Form1_Load(object sender, EventArgs e) { string url = "http://stock.finance.sina.com.cn/hkstock/finance/01398.html"; webBrowser1.Navigate(url); timer = new System.Timers.Timer(1000); timer.AutoReset = false; timer.Elapsed += new System.Timers.ElapsedEventHandler(Timer_Elapsed); } public delegate void GetDataHandler(); private void Timer_Elapsed(object sender, ElapsedEventArgs e) { Invoke(new GetDataHandler(getData)); timer.Start(); } private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { //避免webbroswer.DocumentCompleted被多次引发 if ((e.Url != webBrowser1.Url) || (webBrowser1.ReadyState != WebBrowserReadyState.Complete)) return; //下面写你要在页面加载完毕后执行的代码。 getSelectedCtrl(); } private void getSelectedCtrl() { System.Windows.Forms.HtmlDocument doc = this.webBrowser1.Document; System.Windows.Forms.HtmlElementCollection selectCtrls = doc.GetElementsByTagName("select"); string attName; foreach (System.Windows.Forms.HtmlElement selectCtrl in selectCtrls) { attName = selectCtrl.GetAttribute("table"); if (attName.Equals("tableGetBalanceSheet"))//如果table属性是资产负债表的话,模拟引发“报表类型”的选择控件 { foreach(HtmlElement option in selectCtrl.Children) { if(option.GetAttribute("value") == "zero") { option.SetAttribute("selected", "selected"); break; } } selectCtrl.RaiseEvent("onchange"); timer.Start(); return; } } } 如何得到“某个类型的所有实例” 如何更改tableadapter的connection属性 datagridview 如何访问NT server 多线程 中的 线程结束问题 请教 Literal控件中jquery无法获取input的值 C#前台使用事务调用存储过程的问题 高手们!有谁知道这种xptable效果怎么做吗? [Q]读文件时怎样将流当前位置指回文件头 请教,c# Winfrom中的DataGridView行颜色 请各位高手帮忙,刚开始学C#,第一个程序都过不了啊
http://topic.csdn.net/u/20120820/10/f2f21a45-5395-4cef-8d08-34e2022be8f1.html System.Timers.Timer timer = null; private void Form1_Load(object sender, EventArgs e)
{
string url = "http://stock.finance.sina.com.cn/hkstock/finance/01398.html"; webBrowser1.Navigate(url);
timer = new System.Timers.Timer(1000);
timer.AutoReset = false;
timer.Elapsed += new System.Timers.ElapsedEventHandler(Timer_Elapsed);
} public delegate void GetDataHandler(); private void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
Invoke(new GetDataHandler(getData)); timer.Start();
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//避免webbroswer.DocumentCompleted被多次引发
if ((e.Url != webBrowser1.Url) || (webBrowser1.ReadyState != WebBrowserReadyState.Complete))
return;
//下面写你要在页面加载完毕后执行的代码。 getSelectedCtrl();
} private void getSelectedCtrl()
{
System.Windows.Forms.HtmlDocument doc = this.webBrowser1.Document;
System.Windows.Forms.HtmlElementCollection selectCtrls = doc.GetElementsByTagName("select");
string attName; foreach (System.Windows.Forms.HtmlElement selectCtrl in selectCtrls)
{
attName = selectCtrl.GetAttribute("table");
if (attName.Equals("tableGetBalanceSheet"))//如果table属性是资产负债表的话,模拟引发“报表类型”的选择控件
{
foreach(HtmlElement option in selectCtrl.Children)
{
if(option.GetAttribute("value") == "zero")
{
option.SetAttribute("selected", "selected");
break;
}
}
selectCtrl.RaiseEvent("onchange");
timer.Start();
return; } } }