1. 问题
最新在使用.NET开发的自助设备程序调用内嵌网页时,发现通过webBrowser1.Document.InvokeScript调用网页js方法有的会失效。
2. 分析
有的可以执行,有的不能执行,必然有问题。仔细考虑了下,不执行的js是否是跟网页加载时间有问题,当调用webBrowser1.Document.InvokeScript方法时如果网页还没加载完毕,肯定js发那个发就没法执行了。
3. 解决
看了下webBrowser控件的事件,有一个DocumentCompleted方法,Visual Studio里面对其描述为在Web浏览器控件中承载的文档全部加载后发生,也就是说网页加载完毕后会回调这个方法,所以将我们的InvokeScript写在这里就OK了。
示例如下:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser1.Document.InvokeScript("print", new string[] { "hello world" });
}