Проблема с условиями гонки. Нет jQuery ответов - PullRequest
0 голосов
/ 16 июня 2020

Нет jQuery ответов

У меня есть этот милый маленький скрипт:

  var addToCartButton = document.querySelector("[data-ab-testing]");
  addToCartButton.addEventListener("click", function() {
    if (addToCartButton.dataset.abTesting === "true") {
      var ch = "?";
      if (String(document.URL).includes("?")) {
        ch = "&";
      }
      window.top.location.href = `${document.URL}${ch}preview_theme_id=`;
    }
    document.querySelector(".Drawer__Content").submit();
  });

Вот предыстория:

У нас есть shopify, и мы пытаемся провести некоторое A / B-тестирование, поэтому у нас есть набор Cook ie, чтобы люди оставались в теме A или теме B. Достаточно просто? Проблема в том, что когда вы попадаете на страницу оформления заказа любой темы, кроме темы A, в нижней части экрана появляется небольшая полоса, чтобы вы знали, что вы находитесь в тестовой теме. Поэтому, чтобы избавиться от этого, мы добавили этот скрипт, который вернет вас к правильной теме независимо от того, в какой теме вы работаете.

Вот что делает скрипт:

Скрипт захватывает кнопку тележки, проверяет, установлено ли для проверки ab значение true (мы используем динамический c жидкий код, чтобы установить значение true или false), а затем (если true) добавьте "preview_theme_id =" ко всему.

Вот проблема:

Мы получаем состояние гонки между сбросом URL-адреса window.top.location.href и .submit (). Я не знаю, смогу ли я сделать какую-то асинхронную c архитектуру ожидания / обещания, честно говоря, я недостаточно знаком с жизненным циклом страницы, чтобы знать, где go с этим, помимо простого поиска чего-то в api shopify и перезаписи лог c с нуля, чтобы вытащить данные формы и каким-то образом подделать URL-адрес. Я не должен сталкиваться с какими-либо межсайтовыми проблемами, но мне было интересно, есть ли у кого-нибудь идеи или статьи, которые я мог бы использовать, которые могут помочь, прежде чем я попытаюсь полностью переработать это.

...