Нет 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-адрес. Я не должен сталкиваться с какими-либо межсайтовыми проблемами, но мне было интересно, есть ли у кого-нибудь идеи или статьи, которые я мог бы использовать, которые могут помочь, прежде чем я попытаюсь полностью переработать это.