1

Web ページのヘッダーには、スライドショーを表示するバナーがあります。例はここにあります。これで、ユーザーがフォト ギャラリーを含むページにいて、サムネイルをクリックすると、ライトボックスが開きます ( shadowbox.js )。ライトボックスを開くと同時に、ユーザーが背景に気を取られないように、スライドショー スクリプトを停止する必要があります。

要約: 通常: スライド ショーのスクリプトが実行され ています。ユーザーがサムネイルをクリックすると (特定の rel 属性 "shadowbox" を持つ): スライド ショー スクリプトがブロックされます。 ライトボックスを閉じると(Shadowbox のonCloseフックを使用しますか?)、ヘッダーのスライド ショーのスクリプトを再初期化する必要があります。

これに関するアイデアはありますか?

4

1 に答える 1

1

使用している Shadowbox のバージョンは、現在の安定版リリースであるv3.0.3です。

使用している他のプラグインの名前はDurpal Rotating Banner v6ですが、バージョン7.2を使用できます。

Shadowbox Hook Optionsを使用し、Rotating Banner スクリプトを操作する.onOpen();ことは完全に正しいです。onClose();ただし、Rotating Banner スクリプトには、カスタマイズされたメニューを介してオプションを構成する以外に、API の使用に関するドキュメントがありません。

十分に文書化された JavaScript のダウンロード可能な zip ファイルを調べると、使用しているバージョンに関係なく、Durpal Rotating Bannerとやり取りする方法が示されます。

まず、Shadowbox のプラグイン バージョンは使用せず、 Shadowbox Web サイトのスタンドアロン バージョンのみを使用しますが、この方法は、この回答にたどり着いたさまざまな Shadowbox プラグイン (Drupal、WordPress など) を表す必要があります。

にアクセスできない場合Shadowbox.init({});は、Web ページの body タグを閉じる直前にこのスクリプトを使用します。それ以外の場合は、次のコード ブロックにジャンプします。

  <script type="text/javascript">

     window.onload=function(){

        Shadowbox.setup('',{

            // Besides 'pause' and 'resume' are 'prev', 'next', and 'stop' found in the jQuery Cycle Plugin (check inside jQuery Easing Plugin to see if it's combined).

              onOpen: function(){
                  jQuery('.rb-slides').each(function () {
                    if (jQuery(this).cycle) {
                      jQuery(this).cycle('pause');
                    }
                  });
              },
              onClose: function(){
                  jQuery('.rb-slides').each(function () {
                    if (jQuery(this).cycle) {
                      jQuery(this).cycle('resume');
                    }
                  });
              }

            // If you have access to Shadowbox.init({}), then place the above onOpen and onClose in there instead of using this script.

        });

     };

   </script>

経由で Shadowbox の初期化にアクセスできる場合は、以下に示すようにとの部分Shadowbox.init({});を使用します。onOpen();onClose();

  <script type="text/javascript">

       Shadowbox.init({

           onOpen: function(){
               jQuery('.rb-slides').each(function () {
                 if (jQuery(this).cycle) {
                   jQuery(this).cycle('pause');
                 }
               });
           },
           onClose: function(){
               jQuery('.rb-slides').each(function () {
                 if (jQuery(this).cycle) {
                   jQuery(this).cycle('resume');
                 }
               });
           }

       });

   </script>

私のテスト環境では、これは Base または jQuery Adapter インターフェイスを備えた Shadowbox でうまく機能します...私にとっては (jQuery ライブラリに加えて) ダウンロード オプションです。

上記のスクリプトは、Shadowbox が開いたときに Web ページで見つかったすべての回転バナーを一時停止し、Shadowbox が閉じたときにそれらをすべて再開します。

于 2012-05-30T06:15:34.877 に答える