Code Bye

webBrowser控件问题

本人通过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事件里:
		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;
				}
            }
		}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明webBrowser控件问题