Переберите URL и добавьте / замените строку, если это необходимо - PullRequest
0 голосов
/ 01 октября 2019

У меня есть URL электронной коммерции Shopify, который мне нужно проверить на наличие определенной строки, чтобы определить, менять валюту или нет. Когда пользователь попадает на сайт, URL-адрес, например, https://www.myshop.com.

На панели навигации есть кнопки, которые позволяют пользователю перейти с валюты по умолчанию в долларах США на свою местную валюту. Это встроенная функция Shopify, которая требует, чтобы вы добавили ? Currency = GBP (например, в британских фунтах) к URL.

Я проверяю, есть ли строка ? Currency = существует, и если это так, значит, пользователь уже выбрал валюту, но хочет изменить ее снова. Поэтому я убираю 13 символов с начала ? , а затем заменяю его новой строкой валюты.

Проблема в том, что кто-то заходит на сайт изобъявление, URL-адрес может выглядеть как https://www.myshop.com? HkuhJKh6876MJ .

Затем я должен изменить URL-адрес валюты на & вместо? Я могу перебрать строку и проверить наличие более 1 ? , а затем изменить URL-адрес, но он выглядит запутанным,Есть ли лучший способ сделать это?

Ниже приведен мой текущий код для проверки подстроки ? Currency = , удаления и замены ее, если она существует, нановая валюта.

<input type="button" value="Show USD" onclick="showUSD()">
<input type="button" value="Show GBP" onclick="showAUD()">

<script>
    function showUSD() {
        var changeToCurrency = "USD"; // Set selected currency
        checkForSubstring(changeToCurrency); // Check for '?currency=' substring
    }

    function showGBP() {
        var changeToCurrency = "GBP";
        checkForSubstring(changeToCurrency);
    }

    // Check for substring
    function checkForSubstring (newCurrency) {
        var urlString = window.location.href + "";
        var currencySubstring = "?currency="; 

        if ((urlString.includes(currencySubstring))) {
            sliceURL(urlString, currencySubstring, newCurrency);
        }
        else {
            alert("Doesnt contain substring. \nLoading new URL.");
            window.location.replace(urlString + currencySubstring + newCurrency);
        }
    }

    // Slice URL
    function sliceURL (originalURL, stringToSlice, currency) {
        var n = originalURL.indexOf(stringToSlice); // Get position of substring
        // Slice substring from URL
        var S = originalURL + "";
        var bindex = n; 
        var eindex = n + 13;
        S = S.substr(0, bindex) + S.substr(eindex);
        // Reload new URL
        reloadURL(S, stringToSlice, currency);
    }

    // Reload URL
    function reloadURL(baseURL, stc, currency) {
        window.location.replace(baseURL + stc + currency);
    }
</script>

1 Ответ

1 голос
/ 01 октября 2019

Приведенный ниже метод заменит значение валюты в строке запроса, если в window.location.search

 let updateCurrency = (CUR)=>{

    let queryString = window.location.search;
    if(queryString && queryString.length){
        queryString = queryString.slice(1);
        queryStringData = queryString.split("&");
        queryStringData.forEach((query,index)=>{
               query = query.split("=")
               if(query[0]== 'currency'){
                queryStringData.splice(index,1);
                queryStringData = queryStringData.join('&')
                            window.location.search =queryStringData +'&currency='+CUR
            }

        });

    }

    }
присутствует currency .
...