1

我目前正在为一个使用 jQuery Mobile (http://jquerymobile.com/) 和 Photoswipe (http://www.photoswipe.com/) 的照片库的客户端开发一个移动站点。

到目前为止,我正在尝试解决的当前问题是:

  • 转到照片库页面
  • 点击“返回”按钮或Logo返回首页
  • 尝试单击前 3 个导航按钮中的任何一个(这些链接到移动站点内的内部“页面”(div)),但没有任何反应。您可以在地址栏中看到 URL 已更新,但内容实际上并未更改,因此这些导航按钮本质上是死链接。

到目前为止,我一直在 iPhone 设备上遇到这个问题,我可以在 Safari 中复制这个问题。我已经为此绞尽脑汁好几个小时了,无法弄清楚是什么导致了这个问题。

您可以在此处查看实时 URL: http ://cms.vizergy.com/vsites/Preview.aspx?siteguid=af91c21b-1717-4e57-935c-a617fed2303b

这是我将 Photoswipe 附加到页面的代码:

    /*
 * IMPORTANT!!!
 * REMEMBER TO ADD  rel="external"  to your anchor tags. 
 * If you don't this will mess with how jQuery Mobile works
 */

(function(window, $, PhotoSwipe){

     var options = {jQueryMobile: false};
     $(document).ready(function(){

     /* var activePage = $('.ui-page-active'); */

     var activePage = $('.ui-page-active');
     if($(".ui-page-active").is(".pGalOn")) {          
          photoSwipeInstance = $("ul.pGal a", activePage).photoSwipe(options,  activePage.attr('id'));
     }

          $('div.pGalOn')
               .live('pageshow', function(e){

                    var 
                         currentPage = $(e.target),
                         photoSwipeInstance = $("ul.pGal a", e.target).photoSwipe(options,  currentPage.attr('id'));

                    return true;

               })

               .live('pagehide', function(e){

                    var 
                         currentPage = $(e.target),
                         photoSwipeInstance = PhotoSwipe.getInstance(currentPage.attr('id'));

                    if (typeof photoSwipeInstance != "undefined" && photoSwipeInstance != null) {
                         Code.PhotoSwipe.detatch(photoSwipeInstance);
                    }

                    return true;

               });

     });

}(window, window.jQuery, window.Code.PhotoSwipe));

任何帮助/见解将不胜感激!

编辑:

从我出色的开发同事那里得到帮助,他发现 Photoswipe 的代码存在缺陷。看起来有一行说如果“windowsHashChangeHandler”为空,则从“hashChange”事件中删除所有事件处理程序,使后退按钮无用。基本上改变你的photoswipe.js文件中的以下内容:

if (this.isBackEventSupported && this.settings.backButtonHideEnabled){         Util.Events.remove(window, 'hashchange', this.windowHashChangeHandler);

   }

对此:

if (this.isBackEventSupported && this.settings.backButtonHideEnabled && this.windowHashChangeHandler !== null){
                    Util.Events.remove(window, 'hashchange', this.windowHashChangeHandler);
               }

详细信息可以在这里找到: https ://github.com/codecomputerlove/PhotoSwipe/pull/351

4

0 回答 0