1

在网页的标题中有一个显示幻灯片的横幅。一个例子可以在这里找到。现在,当用户在包含照片库的页面上并单击缩略图时,将打开一个灯箱 ( shadowbox.js )。在打开灯箱的同时,应该停止幻灯片脚本,以免用户被背景分散注意力。

总结: 正常:幻灯片脚本正在执行 当用户点击缩略图时(具有一定的 rel attr “shadowbox”):幻灯片脚本应该被阻止。 当灯箱关闭时(使用 Shadowbox 的onClose钩子?)标题中幻灯片放映的脚本应重新初始化。

对此有什么想法吗?

4

1 回答 1

1

您使用的 Shadowbox 版本是v3.0.3,当前的稳定版本。

您正在使用的另一个插件的名称是Durpal Rotating Banner v6,但可以使用7.2版本。

您使用Shadowbox Hook Options以及.onOpen();onClose();Rotating Banner 脚本进行交互是绝对正确的。但是,Rotating Banner 脚本除了通过自定义菜单配置选项外,没有 API 使用文档。

检查有据可查的 JavaScript 可下载压缩文件显示如何与Durpal Rotating Banner 交互,无论您使用的是什么版本。

首先,我不使用 Shadowbox 的插件版本,只使用来自Shadowbox网站的独立版本,但这种方法应该适用于那些登陆此答案的各种 Shadowbox 插件(例如,Drupal、WordPress)。

如果您无权访问Shadowbox.init({});,请在网页的结束 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 打开时暂停网页上找到的所有Rotating Banners,然后在 Shadowbox 关闭时将它们全部恢复。

于 2012-05-30T06:15:34.877 回答