本人通过C#的webBrowser控件加载了一个JSP界面,想执行其中的一个JS函数,本人把webBrowser1.Document.InvokeScript(“load”, new object[] { reader.GetString(6), reader.GetString(5) });这段代码放到Form2_Load 中执行不了,但是放到button1_Click中通过点击却可以,求指导。
解决方案
20
那是原因是网页还未load完成,js尚未加载,放在Load里时,webBrowser load和执行JS几乎是在同一时间发生。假如他们中间加个时间间隔可能不会出现这个问题。
你所说的button不会是原因是form加载后webBrowser就开始加载,等你点击button时已经加载完成。你试试form出现后立马按button1不留时间间隔也会复制你说的这个问题。
所以,最好把你的JS执行放在webBrowser1_DocumentCompleted事件里:
你所说的button不会是原因是form加载后webBrowser就开始加载,等你点击button时已经加载完成。你试试form出现后立马按button1不留时间间隔也会复制你说的这个问题。
所以,最好把你的JS执行放在webBrowser1_DocumentCompleted事件里:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//网页能否加载完成
if (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
return;
if (e.Url.ToString() != webBrowser1.Url.ToString())
return;
//主页加载完成后登录
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
try
{
webBrowser1.Document.InvokeScript("load", new object[] { reader.GetString(6), reader.GetString(5) });
}
catch(Exception)
{
throw;
}
}
}