0

いくつかの優れたUI(jQuery)機能を備えたマスターページがあります。これらのオプションの1つは、埋め込まれたYouTube(または他の同様の)オブジェクトとの干渉です。それぞれの場合、この場合、setIntervalイベントは、埋め込まれたビデオが新しいフレームの表示を停止します(1秒程度)。

詳細: 100x100の画像が5つしかない「ポラロイド」ギャラリー(ヘッダー内)があり(テスト:プリロードはパフォーマンスに影響しません)、ギャラリーはそれらを表示または非表示にします(フェードイン/フェードアウト)。 )一定期間後。(テスト:アニメーション化されていない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 に答える