我目前正在为一个使用jQuery Mobile(http://jquerymobile.com/)和Photoswipe(http://www.photoswipe.com/)的照片库的客户端开发移动网站。< / p>
我目前要解决的当前问题是:
到目前为止,我在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