使用“setTimeout”重复功能会导致浏览器显示“正在加载...”消息

时间:2010-10-31 15:37:34

标签: javascript jquery html security browser

我有这个横幅旋转器工作正常,除了一个问题......

这个旋转器首先通过该函数,当它到达“setTimeout”语句时,它会一次又一次地触发“循环”功能。

你们可能知道在Firefox中左下角有一个状态栏,表示“正在加载”或“等待domain.com ......”等等。

问题在于此;当您在Firefox中进入网站时,状态栏显示“已加载”并消失。然后在8秒后(setTimeout延迟),状态栏再次显示,并显示“从domain.com获取数据...”之类的内容。它不会消失。 此消息很可能是由setTimeout代码引起的,该代码会一次又一次地触发函数cycle

有没有办法“解决”这个问题?

这可能也发生在其他浏览器中,但到目前为止我只在FF中测试过它。

   function ban_rot(){

    //First preload images
// counter
       var i = 0;

    // create object
    imageObj = new Image();

    // set image list
    images = new Array();
    images[0] = "../Graphics/adv/1.gif"
    images[1] = "../Graphics/adv/2.jpg"

    // start preloading
    for (i = 0; i <= images.length; i++) {
        imageObj.src = images[i];
    }
    ///////////////////////
    var links = new Array("http://www.link1.com", "http://www.link2.se");
    var alts = new Array("alt1", "alt2");
    var titles = new Array("title1", "title2");

    var counter = 0;
    var banner_div = document.getElementById("ban_rot");
    cycle();

    function cycle() {
        if (counter == links.length) {
            counter = 0;
        }
        else if (counter < links.length) {
            banner_div.innerHTML = '<a href=\"' + links[counter] + '\"><img src=\"' + images[counter] + '\" border=\"1px\" style=\"border-color:#000;\" alt=\"' + alts[counter] + '\" title=\"' + titles[counter] + '\"></a>';
            //increase counter
            counter++;
        }
        setTimeout(cycle, 8000);
    } //end cycle function
} //end ban_rot function

1 个答案:

答案 0 :(得分:1)

浏览器显示加载指示符,因为您正在加载新图像。