Слайдер сравнения изображений, написанный на Javascript, не работает в Firefox - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь использовать инструмент сравнения изображений из https://paulbrowne.xyz/image-comparison-slider, написанный на Javascript на веб-странице для клиента.Он отлично работает в Chrome и Safari, но, похоже, не в Firefox.Пользователь не может перетащить ползунок.Код выглядит следующим образом:

(function(){var elsH=document.querySelectorAll(".image-spliter .mover");var i=elsH.length;while(i--){var moverWidth=elsH[i].getBoundingClientRect().width;var imgLeft=elsH[i].nextElementSibling;var width=imgLeft.getBoundingClientRect().width;var height=imgLeft.getBoundingClientRect().height;elsH[i].style.left=width/2-moverWidth/2+'px';imgLeft.style.clip="rect(0px, "+width/2+"px, 999px, 0px)";var mouseDownX=0;var X;elsH[i].addEventListener("mousedown",function(e){X=e.clientX;mouseDownX=1;});elsH[i].addEventListener("mouseup",function(e){mouseDownX=0;});elsH[i].addEventListener("mouseout",function(e){mouseDownX=0;});elsH[i].addEventListener("touchstart",function(e){X=e.touches[0].clientX;mouseDownX=1;});elsH[i].addEventListener("touchend",function(e){mouseDownX=0;});elsH[i].addEventListener("mousemove",function(e){if(mouseDownX){this.style.left=parseInt(this.style.left)+(event.clientX-X)+"px";X=event.clientX;this.nextElementSibling.style.clip="rect(0px, "+(this.getBoundingClientRect().width/2+parseInt(this.style.left))+"px, "+this.getBoundingClientRect().height+"px, 0px)";}});elsH[i].addEventListener("touchmove",function(e){if(mouseDownX){this.style.left=parseInt(this.style.left)+(e.touches[0].clientX-X)+"px";X=e.touches[0].clientX;this.nextElementSibling.style.clip="rect(0px, "+(this.getBoundingClientRect().width/2+parseInt(this.style.left))+"px, "+this.getBoundingClientRect().height+"px, 0px)";}});}
window.addEventListener("resize",function(f){var elsHre=document.querySelectorAll(".image-spliter .mover");var ii=elsHre.length;while(ii--){var moverWidth=elsHre[ii].getBoundingClientRect().width;var imgLeft=elsHre[ii].nextElementSibling;var width=imgLeft.getBoundingClientRect().width;var height=imgLeft.getBoundingClientRect().height;elsHre[ii].style.left=width/2-moverWidth/2+'px';imgLeft.style.clip="rect(0px, "+width/2+"px, "+height+"px, 0px)";}});})();
/* Image Comparison styles */ 
    img {
  width: 100%;
  vertical-align: middle;
}

.image-spliter,
img,
.mover {
  overflow: hidden;
  -webkit-touch-callout: none;
    -webkit-user-select: none;
     -khtml-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
}

.image-spliter {
  position: relative;
}

.img-left {
  position: absolute;
  top: 0;
  left:0;
}

.mover {
  position:absolute;
  width: 200px;
  height: 100%;
  top: 0;
  left:0;
  z-index: 10;
}
.mover:before,
.mover:after {
  position:absolute;
  left:50%;
  content: "";
  background: #2d96cd;
  cursor: -webkit-grab;
  cursor: grab;
    cursor:-moz-grab;
}

.mover:before {
  top: 0;
  transform:translateX(-50%);
  width: 1px;
  height: 100%;
}
.mover:after {
  top: 50%;
  transform:translate(-50%, -50%);
  width: 5px;
  height: 33%;
  border-radius: 5px;
}
<div class="image-spliter">
                            <div class="mover"></div>
                            <img class="img-left" src="https://pictures.dealer.com/m/mcfarlandexeterfordfd/1417/2a803429c884e70e7b3d4c56aa8d9b31x.jpg" title="Before" />

                            <img class="img-right" src="https://pictures.dealer.com/m/mcfarlandexeterfordfd/1099/c77c404a9cce6b8fbc3759829e428baex.jpg" title="After" />
                            <script src="https://www.cssscript.com/demo/touch-friendly-image-comparison-slider-javascript/image-comparison-slider.js" ></script>
                        </div>

Я прошу прощения, если это легко исправить, я несколько новичок со всем этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...