Я расширил PhotoSwipe с помощью функции слайд-шоу, см. this example. Слайд-шоу начинается, если вы нажмете кнопку «Воспроизвести» в верхнем правом углу и остановите слайд-шоу, нажав кнопку паузы в правом верхнем углу. Это отлично работает на ПК.PhotoSwipe: как связать функцию с событием крана изображения?
Он работает также на моем iPad, но нажатие кнопки «Пауза» имеет побочный эффект: изображение увеличено. Понятия не имею, таким образом, это вызывает. Есть идеи?
Функция Start/Stop выполняется в функции playpause(). Чтобы избавиться от этого побочного эффекта, мне нравится использовать однократное событие на изображении для выполнения моей функции playpause().
Так что мой вопрос: как связать функцию playpause() с событием click/tap на изображении?
Это код, я использую:
/** HTML **/
<div class="pswp__top-bar">
<div class="pswp__counter"></div>
<!-- Play/Pause button -->
<a href="javascript:playpause()" id="link--play"><img src="res/play.png" width="30" height="30" id="$playpause" alt="Speel/Stop (spatie balk)" title="Speel/Stop (spatie balk)"></a>
<button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
/** JS **/
function slideShowTimer() {
if ((stopAfterLastSlide)&&((slide_index == items.length-1))) {
document.images['$playpause'].src = play_img.src;
clearTimeout(slideShowTimerID);
playing= !playing;
pswp.close();
}
else {
slideShowTimerID = setTimeout("slideShowTimer()",viewtime);
pswp.next();
}
};
function playpause() {
playing= !playing;
if (!playing) {
document.images['$playpause'].src = play_img.src;
clearTimeout(slideShowTimerID);
} else {
document.images['$playpause'].src = pause_img.src;
slideShowTimer();
}
};
pswp = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options);
pswp.listen('destroy', function() {
if (playing) {
playing = false;
document.images['$playpause'].src = play_img.src;
clearTimeout(slideShowTimerID);
}
});
pswp.init();
/** CSS **/
#link--play {
position: absolute;
right: 132px;
padding: 6px;
z-index: 9999;
}
Я добавил код выше, и я понятия не имею, где я могу вставить event.preventDefault(); У меня нет события. Реализация https://photoswipe.uservoice.com/forums/275302-feature-requests-ideas/suggestions/6964114-autoplay работает для меня только на ПК, на iPad событие click не работает! –
На сенсорных устройствах событие touchstart делает трюк. Вот моя полная реализация: https://github.com/tkuther/piwigo-bootstrap-darkroom/blob/master/template/_photoswipe_js.tpl#L188 –