本人通过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; } } }