首页 > 代码库 > 一个浏览器循环刷新网页的例子
一个浏览器循环刷新网页的例子
class Program { public static void Main(string[] args) { int i=0; String[] urlarray = new String[] { "http://www.baidu.com/", "http://msdn.microsoft.com/", "http://www.qidian.com/Default.aspx" }; RefreshPage repa = new RefreshPage(0, 1, urlarray, false); while (i < 7) { repa.Next(); repa.FindCurrent = "No"; i++; } } }
class RefreshPage { int CurrentPage; int NextPage; String[] UrlArray; public String FindCurrent="No"; bool Stop; public RefreshPage(int CurrentPage, int NextPage, String[] UrlArray, bool Stop) { this.CurrentPage = CurrentPage; this.NextPage = NextPage; this.UrlArray = UrlArray; this.Stop = Stop; } public void Next() { SHDocVw.ShellWindows sw = new SHDocVw.ShellWindows(); while (FindCurrent == "No") { foreach (SHDocVw.InternetExplorer Iweb in sw) { if (Iweb.LocationURL.StartsWith(UrlArray[CurrentPage])) { HTMLDocument doc2 = Iweb.Document as HTMLDocument; HTMLScriptElement script = (HTMLScriptElement)doc2.createElement("script"); script.text = "function newDoc(url){window.location.assign(url)} t=setTimeout(\"newDoc(" + "‘" + UrlArray[NextPage] + "‘" + ")\", 5000)"; HTMLBody body = doc2.body as HTMLBody; if (body != null) { body.appendChild((IHTMLDOMNode)script); FindCurrent = "Yes"; } else continue; } } } CurrentPage+= 1; NextPage += 1; if (NextPage >= UrlArray.Length) NextPage = 0; if (CurrentPage >= UrlArray.Length) CurrentPage = 0; System.Console.WriteLine("current"); } }
1. 首先需要引用两个dll
SHDocVw.dll
mshtml.dll
2. 本例子是按照所给出的数组,数组中存储的是将要循环访问的url,程序访问打开的网页寻找与数组的第一个url匹配的值,并且给他添加脚本,使该网页跳转到另一个url,即
数组的下一个值,使数组中所有url循环访问到。
3. 变量FindCurrent非常重要,由于浏览器打开一个网页需要时间,而程序读取确是,很快的,如果没有这个变量的判断,则代码会一直读不到当前要寻找的url。
while (FindCurrent == "No")
同理读取到当前url,但是html内容还没有load完,也无法读到html 的body,会导致一直读不到html body,下面这个判断也非常重要
if (body != null)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。