Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.06.2023, 10:35
Аспирант
Отправить личное сообщение для Дмитрий Луценко Посмотреть профиль Найти все сообщения от Дмитрий Луценко
 
Регистрация: 24.05.2022
Сообщений: 36

проверка существования js-класса на этапе инициалиации
Мое почтение

Вопрос у меня возник следующий.

Как на нативном js написать проверку, существует ли вообще js-класс или нет?

Можно скрипт подрубить в 1-м месте и его использовать,
но условимся, что:
  • Подрубать скрипт только тогда, когда есть хоть один активный компонент(блок html с js)
  • Подрубать скрипт на этапе вывода компонента(там могут быть разный набор правил в объекте для каждого компонента)
  • Футер и шапка для всех страниц общие либо для каждой страницы своя. Нет резона в них запихивать проверки на существование нод в html-структуре. Проверки и подключение пусть будет только в блоке компонентов.

Поэтому хочется понять, как происходит проверка существования класса на этапе объявления объекта?
window.addEventListener("load", (event) => {
	let myScript = CustomScript() // Ошибка undefined, как-то нужно проверить, есть ли этот класс или нет
	if(myScript === undefined || myScript === null) { //Класса CustomScript еще нет, подключаем его.
		const includeScript = document.createElement('script');
                includeScript .setAttribute("src", "/assets/custom_script.js");
                includeScript .setAttribute("type", "text/javascript");
		document.getElementsByTagName("head")[0].appendChild(includeScript );
	}
//Вызов объекта класса CustomScript
    myScript = CustomScript({
    element: '.my-block',
    itemColon: 4,
    grid: true,
    slide: true,
    autoWidth: true
  });
});

Последний раз редактировалось Дмитрий Луценко, 27.06.2023 в 10:44. Причина: дополнение условий
Ответить с цитированием
  #2 (permalink)  
Старый 27.06.2023, 10:57
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Вместо этого
let myScript = CustomScript() // Ошибка undefined, как-то нужно проверить, есть ли этот класс или нет
    if(myScript === undefined || myScript === null) { //Класса CustomScript еще нет, подключаем его.

просто
if(CustomScript === undefined)

После присоединения скрипта надо дожидаться окончания его загрузки - ловить событие onload.

Про какой класс идет речь, и как "подрубают" скрипты - не понял.

Последний раз редактировалось voraa, 27.06.2023 в 11:01.
Ответить с цитированием
  #3 (permalink)  
Старый 27.06.2023, 11:21
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Так можно попробовать
function loadScript (src) {
	return new Promise ((res, rej) => {
			const script = document.createElement('script');
			script.src = src;
			script.onload = res;
			script.onerror = rej;
			document.head.append(script)
	}) 
}

window.addEventListener("load", async (event) => {
	let myScript;
	try {
		myScript = CustomScript(); // проверяем наличие скрипта. Если его нет будет ошибка
	} catch () {
		await loadScript("/assets/custom_script.js // При ошибке подключаем и ждем загрузку
	} finally {
		myScript = CustomScript({  // В любом случае выполняем это.
			element: '.my-block',
			itemColon: 4,
			grid: true,
			slide: true,
			autoWidth: true
		});
	}
});

Последний раз редактировалось voraa, 27.06.2023 в 11:24.
Ответить с цитированием
  #4 (permalink)  
Старый 27.06.2023, 11:32
Аспирант
Отправить личное сообщение для Дмитрий Луценко Посмотреть профиль Найти все сообщения от Дмитрий Луценко
 
Регистрация: 24.05.2022
Сообщений: 36

Прекрасное решение Все отлично работает

Про какой класс идет речь, и как "подрубают" скрипты - не понял.
Я спрашивал про проверку существования класса (прототипа) в ООП js, если я правильно понял Ваш вопрос.

Скрипты библиотек подключаются в шапке путем прописывания <script src="/{url}/{name}.js">
Все, что касается инициализации объектов классов, вызывается внутри тегов <script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка существования файла Danie Ваши сайты и скрипты 4 23.02.2012 17:56
Проверка Captcha с помощью JS Let4ik_Russia Элементы интерфейса 10 30.12.2011 12:24
Как изменить параметр класса с помощью JS? Shitbox2 Events/DOM/Window 5 07.03.2011 20:52
Проверка существования лгина Dmitrri Элементы интерфейса 3 13.01.2010 12:01
проверка форм с помощиью php и js fizichello Общие вопросы Javascript 2 10.11.2009 03:31