Ich habe PhotoSwipe mit einer Diashow-Funktion erweitert, siehe this example Die Diashow wird gestartet, wenn Sie auf die Schaltfläche Wiedergabe in der oberen rechten Ecke klicken und die Diashow durch Klicken auf die Pause-Schaltfläche in der oberen rechten Ecke stoppen. Dies funktioniert auf einem PC einwandfrei.PhotoSwipe: Wie bindet man eine Funktion an das Image Tap Event?
Es funktioniert auch auf meinem iPad, aber das Klicken auf die Schaltfläche Pause hat einen Nebeneffekt: Das Bild wird gezoomt. Ich habe keine Ahnung also das verursacht. Irgendeine Idee?
Die Start/Stop-Funktion wird in einer Funktion playpause() ausgeführt. Um diesen Nebeneffekt loszuwerden, benutze ich gerne das single-tap-Ereignis auf dem Bild, um meine playpause() -Funktion auszuführen.
Meine Frage ist also: Wie binde ich meine playpause() -Funktion an das Click/TAP-Ereignis auf dem Bild?
Dies ist der Code, den ich verwenden:
/** 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;
}
Ich habe den obigen Code hinzugefügt und ich habe keine Ahnung, wo ich event.preventDefault() einfügen kann; Weil ich kein Ereignis habe. Die Implementierung https://photoswipe.uservoice.com/forums/275302-feature-requests-ideas/suggestions/6964114-autoplay funktioniert bei mir nur auf einem PC, auf einem iPad funktioniert das Click Event nicht! –
Auf Touch-Geräten funktioniert ein Touchstart-Event. Hier ist meine vollständige Implementierung: https://github.com/tkuther/piwigo-bootstrap-darkroom/blob/master/template/_photoswipe_js.tpl#L188 –