Почему window.onload не запускается, если это не текущая вкладка? - PullRequest
0 голосов
/ 07 января 2020

У меня есть атрибут href (другая страница) на моей домашней странице. функция загрузки другой страницы работает нормально, если я нажму на нее. в случае, если я использую (control + щелчок левой кнопкой мыши по ссылке) или (щелчок правой кнопкой мыши -> открыть в новой вкладке), функция загрузки не срабатывает, если это не моя активная или текущая вкладка. если я сразу переключаюсь на эту вкладку, она работает как обычно. мой вопрос, не сработает ли это, если это не наша текущая вкладка. любое альтернативное решение для этого. спасибо

 window.onload = swipe();         
            function swipe() {              
              
                if (window.outerWidth > 1024) {

                    var slider = document.getElementsByClassName("cards")[0];
                    var isDown = false;
                    var startX;
                    var scrollLeft;
                    slider.addEventListener('mousedown', function (e) {
                        isDown = true;
                        startX = e.pageX - slider.offsetLeft;
                        scrollLeft = slider.scrollLeft;
                        e.preventDefault();
                    });
                    slider.addEventListener('mouseleave', function () {
                        isDown = false;
                    });
                    slider.addEventListener('mouseup', function () {
                        isDown = false;
                    });
                    slider.addEventListener('mousemove', function (e) {
                        if (!isDown) return;
                        e.preventDefault();
                        var x = e.pageX - slider.offsetLeft;
                        var walk = (x - startX) * 3;

                        slider.scrollLeft = scrollLeft - walk;
                    });
                }

                var swipe_sec = document.getElementsByClassName("cards")[0];

                function calc_prog(winScroll, width) {
                    var scrolled = ((winScroll) / width) * 100;
                    document.getElementById("t_art_prog").style.width = scrolled + "%";

                }

                var winScroll = swipe_sec.clientWidth;
                var width = swipe_sec.scrollWidth - swipe_sec.clientWidth;
                calc_prog(winScroll, width);

                swipe_sec.addEventListener("scroll", function () {
                    var winScroll = swipe_sec.scrollLeft + swipe_sec.clientWidth;
                    var width = swipe_sec.scrollWidth;
                    calc_prog(winScroll, width);
                });
            }

1 Ответ

0 голосов
/ 07 января 2020

Проблема не в window.onload, а в if (window.outerWidth > 1024), window.outerWidth будет 0 при открытии новой вкладки.

Два решения, о которых я могу подумать -

  1. Используйте window.visualViewport.width вместо window.outerWidth
  2. Попробуйте использовать событие фокуса следующим образом -

    window.addEventListener ('focus', function () {.. .});

    Примечание. Событие фокуса будет вызываться каждый раз, когда вы переключаетесь на вкладку, вы должны управлять им, чтобы оно выполнялось только один раз.

...