zoukankan      html  css  js  c++  java
  • 一个浏览器循环刷新网页的例子

    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++;
                }
            }      
        }
    View Code
     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");
            }
        }
    View Code

    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)

        

  • 相关阅读:
    js--在页面元素上(移动到或获取焦点)、鼠标离开(或失去焦点)
    Oracle 树操作、递归查询(select…start with…connect by…prior)
    oracle 错误码查看命令oerr ora及常用错误码总结--不断更新
    Dbvisual连接远程数据库报错Error Code: 17401
    struts2 转发、重定向概述
    javascript array操作
    理解 Node.js 里的 process.nextTick()
    js的in运算符与instanceof运算符
    Javascript引擎单线程机制及setTimeout执行原理说明
    NodeJS错误处理最佳实践
  • 原文地址:https://www.cnblogs.com/bianren/p/3718236.html
Copyright © 2011-2022 走看看