Magnific popup и Woo добавляют в корзину вариант - PullRequest
0 голосов
/ 31 октября 2018

Я использую увеличенное всплывающее окно для показа изображений, и в этом всплывающем окне есть варианты, которые вы можете выбрать перед добавлением изображения в корзину во всплывающем окне.

Вот часть обратного вызова для увеличения js. В нем я призываю Woo добавить в корзину вариации JS файл. Я должен вызывать этот js-файл каждый раз, когда изображение загружается, чтобы оно правильно отображало изменения. Загрузка этого файла один раз на странице не работает для всплывающего окна.

type: "image",
            callbacks: {
                imageLoadComplete: function() {

                    jQuery.getScript("/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart-variation.min.js");

                },
             } .... etc 

Таким образом, каждый раз, когда вы нажимаете, чтобы увидеть следующую фотографию, загружается add-to-cart -ification.min.js. Иногда требуется полная загрузка этого файла, потому что у него есть куча других вызовов для запуска других функций php. Если вы щелкнете по следующей стрелке несколько раз очень быстро, чтобы увидеть другие фотографии, то проблема начинается с того, что файл getScript загружается при каждом нажатии кнопки «Далее» и через некоторое время все зависает.

Даже если я добавлю woo js в область imageLoadComplete вместо использования getScript, у меня все еще есть эта проблема, поэтому проблема не в getScript, а в дополнительных функциях, которые запускаются после загрузки js. Использование setimeout также не вариант, потому что он все равно будет работать независимо от того, что.

Как я могу предотвратить возникновение этой проблемы?

1 Ответ

0 голосов
/ 31 октября 2018

понял это. Работает и на мобильном телефоне, по крайней мере на ios.

Итак, я добавляю класс отключен к кнопке, чтобы дать этому цвету отключенный вид. Затем, когда вы наводите курсор мыши на элемент div, содержащий варианты, я загружаю скрипт woo, затем я удаляю класс поверх элемента hover, чтобы больше не могло произойти никаких действий при наведении курсора, включая скрипт woo. Отлично работает на Chrome, Safari и Firefox на Mac OS и Safari на мобильных IOS.

type: "image",
     callbacks: {
        imageLoadComplete: function() {

         if(jQuery('.ft-gallery-variations-text').hasClass('ft-gallery-js-load')) {
            jQuery('.single_add_to_cart_button').addClass('disabled');
           }

         jQuery( ".ft-gallery-js-load" ).hover(function() {
            if(jQuery('.ft-gallery-variations-text').hasClass('ft-gallery-js-load')){
               jQuery.getScript("/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart-variation.min.js");
               jQuery('.ft-gallery-variations-text').removeClass('ft-gallery-js-load');
              }
         });

      },
   } .... etc 
...