代码:
InternetSetCookie(url, null, nn);
webBrowser1.Navigate(url);
webBrowser1.ScriptErrorsSuppressed = true;
获取的内容:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if ((e.Url != webBrowser1.Url) || (webBrowser1.ReadyState != WebBrowserReadyState.Complete))
return;
//下面写你要在页面加载完毕后执行的代码。
richTextBox2.Text = webBrowser1.Document.Body.InnerHtml;
}
网页:
页面加载完毕不一定ajax已经请求完毕并渲染数据,需要用Timer或者线程定时检查下dom对象是否已经有值,有值了在获取
示例代码如下,有帮助麻烦点个采纳【本回答右上角】,谢谢~~
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if ((e.Url != webBrowser1.Url) || (webBrowser1.ReadyState != WebBrowserReadyState.Complete))
return;
richTextBox2.Text = "文档已加载完毕,等待5s计时器完成后再获取内容";
bool ajaxLoaded = false;
new System.Threading.Thread(() => {
while (true)
{
this.Invoke(new Action(()=> {
if (webBrowser1.Document.GetElementById("aaa").GetAttribute("value") != "")
{ //注意修改这里的代码,获取加载页面的控件,如工单号判断有值了才执行获取body.innerHTML操作
richTextBox2.Text = webBrowser1.Document.Body.InnerHtml;
}
}) );
if (ajaxLoaded) break;
System.Threading.Thread.Sleep(100);//100ms检查一次
}
}).Start();
//下面写你要在页面加载完毕后执行的代码。
}
要使用回调函数获取返回的json数据,再设置到控件。