jQuery Mobile / Photoswipe /主页导航打破

时间:2012-11-29 17:59:59

标签: javascript jquery ios jquery-mobile photoswipe

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

我目前要解决的当前问题是:

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

到目前为止,我在iPhone设备上遇到过这个问题,我可以在Safari中复制这个问题。我现在已经绞尽脑汁待了好几个小时,无法弄清楚造成这个问题的原因。

您可以在此处查看实时网址: 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'是否为null然后从'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

0 个答案:

没有答案