好(更好)替代setInterval或setTimeout

时间:2010-05-18 09:04:35

标签: javascript jquery intervals

我有一个带有一些不错的UI(jQuery)功能的母版页。其中一个选项是与我的嵌入式YouTube(或其他相似的)对象进行干扰。在每种情况下,在这种情况下,setInterval事件使嵌入的视频停止显示新帧(比如一秒钟)。

更多细节: 我有一个“宝丽来”画廊(在标题中),其中只有5个100x100图像(测试:预加载对性能没有影响),我的画廊将显示或隐藏它们(淡入/淡出)一段的时间。 (测试:非动画显示:隐藏或显示:块对性能没有影响)。

经过一些测试,我得出结论,它不是“动画”显示或隐藏图片,但它是间隔本身( - 自改变显示:隐藏或阻止具有相同的结果) 。也许这本身就是我的“画廊”“功能”......

 function poladroid() {
     if (!galleryHasFocus) {
         if (galleryMax >= 0) {
             galleryCurrent++;

             if (galleryCurrent > galleryMax) {
                 galleryCurrent = 0;
                 showPictures = !showPictures;
             }
             if (showPictures) {
                 $('#pic-' + galleryCurrent.toString()).show("slow");
             }
             else {
                 $('#pic-' + galleryCurrent.toString()).hide("slow");
             }
         }
     }
     if (!intervalSet) {
         window.setInterval("poladroid()", 3000);
         intervalSet = true;
     }
 }

这不是我的功能真的很尴尬的东西吗?所以,我在想我需要一个更“宽松”的间隔函数..但它有一个选项吗?

Ow ..几乎忘记提及它:FireFox和Chrome表现相当不错;使用IE(还有什么)有最大的性能问题。

1 个答案:

答案 0 :(得分:1)

setInterval / setTimeout没有替代品 - 这些 是基于浏览器的ECMAScript中计时事件的唯一方法。

这里不容易理解真正的问题,但我猜测你使用setInterval触发的任何东西比它必须更重(因为它是jQuery) - 你应该尝试提高效率。

如果您想要一个易于使用的幻灯片,请查看http://github.com/oyvindkinsey/JsSlideshow - 它有一个演示here

顺便说一句,不要使用文字作为setTimeout / setInterval的第一个参数,使用函数引用

setInterval(poladroid, 3000);