0

我有一个带有一些不错的 UI (jQuery) 功能的母版页。这些选项之一是与我嵌入的 YouTube(或其他类似)对象进行交互。在这种情况下,在每个 setInterval 事件中,嵌入的视频都会停止显示新帧(大约一秒钟)。

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

经过一些测试,我得出的结论是,这不是图片的“动画”显示或隐藏,而是间隔本身(因为更改为 display:hide 或 block 具有相同的结果)。也许它本身就是我的“画廊”“功能”......

 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;
     }
 }

这不像我的功能正在做非常尴尬的事情,是吗?所以,我在想我需要一个更“松散”的区间函数。但有没有选择?

哦.. 差点忘了提:FireFox 和 Chrome 表现不错;使用 IE(还有什么)有最多的性能问题。

4

1 回答 1

1

setInterval/setTimeout 是无可替代的——这些在基于浏览器的 ECMAScript 中对事件进行计时的唯一方法。

在这里掌握真正的问题并不容易,但我猜你使用 setInterval 触发的任何东西都比它必须的要重(因为它是 jQuery) - 你应该尝试让它更有效率。

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

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

setInterval(poladroid, 3000);
于 2010-05-18T11:09:48.517 回答