Есть ли способ заставить этот скрипт выполняться только в том случае, если в URL-адресе существует параметр utm_campaign?
function fillFormArea(){
const select = document.getElementById('property.cust_AreaOfInterest.value');
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString); //parse the query string
const country = urlParams.get('utm_campaign'); // Store the parsed area of interest
select.value = country; // fill the form with the area of interest
}
if (document.readyState === 'loading') { // Loading hasn't finished yet
document.addEventListener('DOMContentLoaded', fillFormArea)
}
else { // `DOMContentLoaded` has already fired
fillFormArea();
}
Скрипты выполняются, когда они загружены, вы должны проверить параметр запроса на стороне сервера и не включать скрипт на страницу, если параметр отсутствует. Или проверьте параметр в функции и вернитесь, ничего не делая, если параметр не существует. Почему такое сложное обнаружение загрузки? Скрипт добавляется на страницу динамически или атрибут async
присутствует в теге скрипта?
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const country = urlParams.get('utm_campaign');
if ( country === null) {
//does not exist
}else{
const select = document.getElementById('property.cust_AreaOfInterest.value');
select.value = country
}
Ваш ответ может быть улучшен с помощью дополнительной вспомогательной информации. Пожалуйста, отредактируйте , чтобы добавить дополнительные сведения, такие как цитаты или документация, чтобы другие могли подтвердить правильность вашего ответа. Вы можете найти больше информации о том, как писать хорошие ответы в справочном центре.
if (country !== null)
чтобы проверить, был ли передан параметр ... и, кстати, просто проверьте его внутри вашего fillFormArea в качестве первого условия и в любом случае прикрепите прослушиватель событий к событию DOMContentLoaded, не выполняя эту запутанную проверку document.readystate. getElementById в этой строкеproperty.cust_AreaOfInterest.value
довольно неясен