PhotoSwipe를 슬라이드 쇼 기능으로 확장했습니다. this example 오른쪽 위 모서리의 재생 단추를 클릭하고 오른쪽 위 모서리의 일시 중지 단추를 클릭하여 슬라이드 쇼를 중지하면 슬라이드 쇼가 시작됩니다. 이것은 PC에서 잘 작동합니다.PhotoSwipe : 함수를 이미지 탭 이벤트에 바인딩하는 방법?
내 iPad에서도 작동하지만 일시 중지 버튼을 클릭하면 부작용이 있습니다. 이미지가 확대됩니다. 나는이 원인을 전혀 모른다. 어떤 생각?
시작/정지 기능은 playpause() 함수에서 실행됩니다. 이 부작용을 없애기 위해 이미지의 단일 탭 이벤트를 사용하여 playpause() 함수를 실행하는 것을 좋아합니다.
제 질문은 : 어떻게 내 playpause() 함수를 이미지의 클릭/탭 이벤트에 바인딩합니까?
/** 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()를 삽입 할 수 있는지 잘 모르겠습니다. brcause 나는 어떤 사건도 없다. 구현 https://photoswipe.uservoice.com/forums/275302-feature-requests-ideas/suggestions/6964114-autoplay는 PC에서만 작동하며 iPad에서는 click 이벤트가 작동하지 않습니다! –
터치 장치에서 터치 스타트 이벤트가 트릭을 수행합니다. 내 전체 구현은 다음과 같습니다. https://github.com/tkuther/piwigo-bootstrap-darkroom/blob/master/template/_photoswipe_js.tpl#L188 –