WebBrowser执行网页中多个JS

.Net技术 码拜 8年前 (2016-09-21) 1450次浏览
Winform中利用webBrowser执行网页中的下载文件功能的JS
单个JS可以执行,多个JS无法按顺序执行,本人的示例代码如下:

private void btnDownload_Click(object sender, EventArgs e)
{
	for (int i = 0; i < 3; i++)
	{
		webBrowser1.Document.InvokeScript("download()", new object[] { i });
		this.richTextBox1.Text += DateTime.Now.ToString() + " 执行download("+i+")..\n";
	}
	this.richTextBox1.Text +=  DateTime.Now.ToString() + " 下载完成";
}

打印结果

2016/09/19 23:49:13 执行download(0)..
2016/09/19 23:49:13 执行download(1)..
2016/09/19 23:49:13 执行download(2)..
2016/09/19 23:49:13 下载完成

几个结果在同时打印出来,只有最后一个download(2)执行了,其他2个未能执行。
在InvokeScript之后尝试添加了Thread.sleep()后会导致Form Not Responding
讨教:怎么样让InvokeScript执行完毕后 再继续往下执行?

解决方案

50

执行有没有返回结果?等返回结果

50

怎么判断是最后一个download完成了?从你的代码上看,显示的结果应该是:
执行3次“执行download(…)”,然后显示一次:“下载完成”
这个结果与实际结果相符,是符合预期的,代码中没有看到怎么判断download执行结果的部分

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明WebBrowser执行网页中多个JS
喜欢 (0)
[1034331897@qq.com]
分享 (0)