Код Javascript работает только при очистке кеша и полной перезагрузке - PullRequest
0 голосов
/ 28 мая 2020

Я добавляю код javascript на сайт woocommerce wordpress.

Код простой. Что происходит, когда пользователь нажимает на область div на странице оформления заказа, код заставляет его также нажимать кнопку отправки.

Я добавил этот код php к своим функциям. php файл:

add_action("wp_enqueue_scripts", "jm_insertar_js3");
    function jm_insertar_js3(){
        if (is_checkout()){
            wp_register_script('miscript3', get_stylesheet_directory_uri(). '/script3.js', array('jquery'), microtime(true), true );
            wp_enqueue_script('miscript3');
        }
    }

И затем я создал этот файл (script3. js):

window.onload = function(){
    var div3 = document.querySelectorAll('div.mp-row-checkout');
    for (var i = 0; i < div3.length; i++) {
        div3[i].onclick = function() {
        document.getElementById("place_order").click();
        }
    }
}

Фактически, когда я пробую этот код в консоли браузера:

    var div3 = document.querySelectorAll('div.mp-row-checkout');
    for (var i = 0; i < div3.length; i++) {
        div3[i].onclick = function() {
        document.getElementById("place_order").click();
        }
    }

Все работает отлично.

Проблема в том, что, когда я пробую код, обычно ничего не происходит (когда я нажимаю на область div, код не запускается), и я должен Очистите кеш и выполните жесткую перезагрузку, чтобы все заработало. Я просто не знаю, почему и как я могу это исправить.

Я отключаю все типы кеширования на стороне сервера и на стороне веб-сайта. Я провожу тест на вкладке инкогнито, чтобы избежать кеширования. И, наконец, я добавляю метку времени (microtime (true)) к версии файла, чтобы браузеры не кешировали, и проблема не исчезла.

Я не программист, поэтому любая информация поможет.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Я решил изменить триггерное событие. window.onload создает проблемы.

Окончательный JS файл (script3. js):

var div3 = document.querySelectorAll('div.woocommerce-billing-fields, input.input-text ');
for (var i = 0; i < div3.length; i++) {
    div3[i].onclick = function() {
        var idNuevo = document.getElementById("jm-mp-row-checkout");
        if (!idNuevo) {
            document.getElementsByClassName("mp-row-checkout")[0].setAttribute("id", "jm-mp-row-checkout");
            document.getElementById("jm-mp-row-checkout").addEventListener("click", myFunctionJM2);
            function myFunctionJM2() {
                document.getElementById("place_order").click();
            }
        }
    }
}
0 голосов
/ 28 мая 2020

Для предотвращения кеширования браузера для файла js. Мы можем добавить строку запроса. например

/ script3. js? qid = currentTimeStamp

...