我目前正在为一个使用 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