Как сделать так, чтобы событие onclick работало через Jquery

у нас есть некоторые проблемы с нашим магазином shopify: и мы хотим попробовать вручную отправить _ga paramteter в checkout.shopify.com. У меня есть опыт, когда я исправляю это на другом магазине, добавив в onclick эту строку кода:

$html += "<a href="/checkout" onclick="ga(function (tracker) {var linkerParam = tracker.get('linkerParam'); document.cookie = '_shopify_ga=' + linkerParam + '; ' + 'path=/';}); document.getElementById('cartform').submit();" class="btn btn-1 btn-block big">{{ 'general.cart_info.checkout' | t }}</a>"; 

Но с этим сайтом это не работает. Вот как это выглядит сейчас:

 jQuery('<div class="action"><button class="btn btn-default" onclick="window.location='/checkout'">{{ 'general.header.cart_info.checkout' | t }}</button></div>').appendTo(cart_summary);

Это то, что я пытался сделать:

 jQuery('<div class="action"><a href="/checkout" id="checkout-link" class="btn btn-default" onclick="ga(function (tracker) {var linkerParam = tracker.get('linkerParam'); document.cookie = '_shopify_ga=' + linkerParam + '; ' + 'path=/';}); document.getElementById('cartform').submit();">{{ 'general.header.cart_info.checkout' | t }}</button></div>').appendTo(cart_summary);

Также я пытался сделать это:

$(document).ready(function() {

    $("a#checkout-link").each(function() {
        var text = $(this).text();
        var thisEvent = $(this).attr("onclick"); // grab the original onclick event
        $(this).click(function(event) { //  when someone clicks these links
            event.preventDefault(); //  don't open the link yet
            ga(function (tracker) {var linkerParam = tracker.get('linkerParam'); 
            document.cookie = '_shopify_ga=' + linkerParam + '; ' + 'path=/';}); 
            document.getElementById('cartform').submit();
            setTimeout(function() { // now wait 300 milliseconds...
                eval(thisEvent); // ... and continue with the onclick event
            },300);
        });
    });

});

Со всеми этими способами это не работает. Я знаю, что я Noob в коде, но, может быть, кто-то может помочь мне?

1 ответ

  1. Так вы хотите выполнить эту функцию ga, прежде чем страница будет перенаправлена? Если это так, попробуйте создать простую функцию, которая делает то, что вы хотите сделать:

    function saveLinkerParam(){
     ga(function (tracker) {var linkerParam = tracker.get('linkerParam'); document.cookie = '_shopify_ga=' + linkerParam + '; ' + 'path=/';}); 
    }
    

    Затем выполните его в обработчике onclick, который уже существует(just bofore window.местоположение изменено:

    jQuery('<div class="action"><button class="btn btn-default" onclick="saveLinkerParam();window.location=\'/checkout\' + ">{{ 'general.header.cart_info.checkout' | t }}</button></div>').appendTo(cart_summary);
    

    (вам не нужно создавать новую функцию saveLinkerParam, но я думаю, что это делает код немного более читаемым)

    Я не пытался фактически выполнить этот код, поэтому дайте мне знать, если вы получите какую-либо синтаксическую ошибку. Кстати, я думаю, что проблема с кодом, который вы пробовали, может быть синтаксисом, точнее, когда вы объединяете текст и переменные в функции jQuery.