Как разрешить пользователю нажимать на ссылку при отображении галереи фотоизображений?
Я использую плагин PhotoSwipe для jQuery.
Мой сайт использует фиксированное меню, когда пользователь прокручивает страницу вниз.
С z-index я не смог заставить галерею photoswipe перекрывать мое меню. Поэтому я изменил размер панели по умолчанию, чтобы освободить место для меню. Эту внешность я тоже предпочитаю.
Теперь, когда я открываю фотографию, но затем перехожу на другую страницу с PhotoSwipe, появляется некоторый обратный вызов PhotoSwipe, чтобы перенаправить пользователя туда, откуда он пришел.
Если я использую функцию обратного вызова photoswip для удаления и помещаю в нее предупреждение, это задерживает перенаправление (обратно на страницу, с которой пришел пользователь).
Как я могу разрешить пользователю закрывать фотогалерею без перенаправления?
РЕДАКТИРОВАТЬ: Вот как я инициализирую галерею photoswipe.
function showSoftwareGallery(sections, index){
var pswpElement = document.querySelectorAll('.pswp')[0];
var items = new Array(sections.length);
for(var i=0; i<sections.length; i++){
items[i] = {
src: sections[i].image,
w: 1920,
h: 1080,
};
}
// define options (if needed)
var options = {
// optionName: 'option value'
// for example:
index: index, // start at first slide
escKey: true,
arrowKeys: true,
shareEl: false,
closeEl:true,
captionEl: true,
fullscreenEl: true,
zoomEl: true,
};
// Initializes and opens PhotoSwipe
var headerHeight = $('nav').first().height();
var height = $(window).height() - headerHeight;
$('.pswp').first().css('height', height + 'px');
$('.pswp').first().css('top', headerHeight + 'px');
var gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options);
gallery.listen('destroy', function() { alert('destroy')});
gallery.init();
}
Редактировать 2 Вы видите здесь скриншот моего дисплея photoswipe. Это показывает, что мое главное меню все еще видимо, и пользователь может щелкнуть по нему.
1 ответ
src/js/history.js
Файл содержит этот код:
_listen('destroy', function() {
if(!_hashReseted) {
returnToOriginal();
}
});
Вы не предоставили воспроизводимый код, так что это не 100%, но должно быть полезно. Я бы изменил этот код на это:
_listen('destroy', function() {
if(!_hashReseted && !myApp.shouldClosePhotoswipe) {
returnToOriginal();
}
});
В вашем приложении добавьте этот код:
var myApp = {
// mix in with your javascript code
shouldClosePhotoswipe: false
}
И когда меню щелкнуло, чтобы пойти куда-нибудь, просто добавьте эту строку
myApp.shouldClosePhotoswipe = true;
Тогда вам нужно восстановить dist/photoswipe.js
файл.
Вы также можете просто отредактировать dist/photoswipe.js
файл напрямую.