0

I've designed a web page with an slider Previously I used JQuery for writing slider codes But I had this problem with JQ too, But I thought maybe it be a bug in JQ and if I use Vuejs Nuxt maybe it be solved

but now I wrote those codes with pure javascript in nuxt and still i've this problem

The problem is : When Active browser tab is the site that i designed everything works cool but when i change tabs & spend some seconds on other browser tabs or when i minimize browser and I do work with other desktop Software. after all this seconds (not much time) when i come back to that open tab of my designed site, i see that design get crashed...

I've no idea why this happens

The codes are Complicated and connected i just want to see anybody has any idea that how can i solve this issue ! ?

<script>
export default {
  mounted() {
    let slider = this.$refs.slider;
    document.onreadystatechange = () => {
      if (document.readyState === "complete") {
        let curImg = new Image();
        curImg.src = "_nuxt/static/imgs/slider2.png";
        curImg.onload = function () {
          let curImg2 = new Image();
          curImg2.src = "_nuxt/static/imgs/slider3.png";
          curImg2.onload = function () {
            let curImg3 = new Image();
            curImg3.src = "_nuxt/static/imgs/slider.png";
            curImg3.onload = function () {
              let curImg4 = new Image();
              curImg4.src = "_nuxt/static/imgs/slider4.png";
              curImg4.onload = function () {
                slider.innerHTML =
                  `<li class="active">
          <img src="imgs/slider2.png" alt="slider 1" />
          <p data-en="Virtual Exhibition Work Tour" data-fa="تور نمایشگاه مجازی کار">تور نمایشگاه مجازی کار</p>
        </li>
                  <li>
                    <img src="imgs/slider3.png" alt="slider 1" />
                    <p data-en="Virtual Exhibition Internet Tour" data-fa="تور نمایشگاه مجازی اینترنت">تور نمایشگاه مجازی اینترنت</p>
                  </li>
                  <li>
                    <img src="imgs/slider.png" alt="slider 1" />
                    <p data-en="Our Consultant Services" data-fa="خدمات مشاورین چهارسو">خدمات مشاورین چهارسو</p>
                  </li>
                  <li>
                    <img src="imgs/slider4.png" alt="slider 1" />
                    <p data-en="About us & Services" data-fa="درباره ما و خدمات">درباره ما و خدمات</p>
                  </li>
                `;

                let margin = -460;
                let step = 0;

                function sliderMove() {
                  document.querySelector('div.body > div#bg').classList.remove('change');
                  let all_lis = slider.querySelectorAll('li');
                  all_lis[all_lis.length - 1].classList.remove('hide');
                  let activeLi = slider.querySelector('li.active');
                  let src = activeLi.querySelector('img').getAttribute('src');
                  margin -= 10;
                  step += 1;
                  if (step === 6) {
                    margin = -460;
                    step = 0;
                  }

                  let dirLang = document.querySelector('div.body').getAttribute('lang');
                  if (dirLang === 'fa' || dirLang === 'ae') {
                    dirLang = 'left';
                  } else {
                    dirLang = 'right';
                  }
                  let styleSlider = window.getComputedStyle(slider);
                  let mainMargin = parseInt(styleSlider.getPropertyValue('margin-left'));
                  styleSlider = mainMargin + 280;
                  let animate = setInterval(function () {
                    slide();
                    changeClass();
                  }, 0.5);

                  function slide() {
                    if (mainMargin === styleSlider) {
                      clearInterval(animate);
                      slider.style.marginLeft = margin + 'px';
                      all_lis[all_lis.length - 1].after(all_lis[0]);
                      all_lis[0].classList.remove('active');
                    } else {
                      mainMargin++;
                      slider.style.marginLeft = mainMargin + 'px';
                    }
                  }

                  function changeClass() {
                    all_lis[0].classList.add('hide');
                    all_lis[1].classList.add('active');
                  }

                  document.querySelector('div.body > div#bg').classList.add('change');
                  let styleElem = document.head.appendChild(document.createElement("style"));
                  setTimeout(function () {
                    styleElem.innerHTML = `div.body > div#bg::before{background-image: url(` + src + `);}`;
                  }, 800);
                }
                setInterval(sliderMove, 5000);
              }
            }
          }
        }
      }
    }
  },
  head: {
    script: [
      {
        type: 'module',
        src: 'https://kit.fontawesome.com/52d0de33cc.js'
      }
    ]
  },
}
</script>
Mehdi Rafiee
  • 89
  • 2
  • 12
  • 1
    Without reading the entire question: when tabs/windows are in the background, most browsers limit standard timers to approximately one second accuracy, and also limit the maximum processing time they are allotted. See e.g. [this question](https://stackoverflow.com/questions/6032429/chrome-timeouts-interval-suspended-in-background-tabs). – ASDFGerte Feb 11 '21 at 12:19
  • Thanks , It helped me – Mehdi Rafiee Mar 15 '21 at 14:59

0 Answers0