Проверка загрузки скрипта

12
TG
На сайте с 07.11.2016
Offline
127
1319

Привет, как реализовать проверку загруженности внешнего скрипта на JS? Чтобы после его создания и вставки в документ он проверялся на работоспособность и если еще не готов, то проверялся снова. Сейчас я тупо откладываю на секунду выполнение зависящей от него функции с помощью setTimeout, но вдруг у кого-то он за это время все равно не успеет.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#1
✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
TG
На сайте с 07.11.2016
Offline
127
#2

LEOnidUKG, надо на ванильном JS, из-за пары строчек кода не хочется жквери подключать.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#3
yet_warm
На сайте с 26.05.2007
Offline
129
#4
Многие хотят попасть в рай, мало кто хочет для этого умирать.
TG
На сайте с 07.11.2016
Offline
127
#5

LEOnidUKG, читал, но мне событие нужно по клику, а не после загрузки страницы.

yet_warm:
Типа такого?

Ага, спасибо. Надо только тоже подумать как на клик это повесить.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#6
Ага, спасибо. Надо только тоже подумать как на клик это повесить.

А сразу загрузить не представляется возможным?

Тогда опять вам в гугл:

https://learn.javascript.ru/onload-onerror

Написано как загружать скрипты с проверками и т.д.

TG
На сайте с 07.11.2016
Offline
127
#7

Представяется, но не нужно, мне для виджетов вконтакта, чтобы они открывались только тем, кому надо и не тащили каждый раз все апи.

И как событие onload повесить на клик я понимаю, не знаю как правильно сделать цикл, который бы проверял это событие до тех пор пока оно не сработает и не давал выполнять дальнейший код.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#8
Toyvo Glumov:
Представяется, но не нужно, мне для виджетов вконтакта, чтобы они открывались только тем, кому надо и не тащили каждый раз все апи.
И как событие onload повесить на клик я понимаю, не знаю как правильно сделать цикл, который бы проверял это событие до тех пор пока оно не сработает и не давал выполнять дальнейший код.

Какое событие?! Там же написано:

Главным помощником станет событие onload. Оно сработает, когда скрипт загрузился и выполнился.
TG
На сайте с 07.11.2016
Offline
127
#9
LEOnidUKG:
Оно сработает, когда скрипт загрузился и выполнился.

Блин, это меня коротнуло, спасибо!

D.iK.iJ
На сайте с 26.05.2013
Offline
239
#10

Так и не понял - нашли решение или нет, но, например, с комментариями ВК я делал вот так:

<div id='vk_comments'></div>
<script type="text/javascript">
function start(){
VK.init({apiId: 2900000, onlyWidgets: true});
VK.Widgets.Comments("vk_comments", {limit: 5, width: "496", attach: "*"});
}
</script>
<script async onload="start();" type="text/javascript" src="//vk.com/js/api/openapi.js?116"></script>

При загрузке скрипта стартует его запуск. В принципе, это все. :)

Для виджета групп все делается 1 в 1:

<!-- VK Widget -->
<div id="vk_groups" style="padding-bottom: 5px;"></div>
<script type="text/javascript">
function start4(){
VK.Widgets.Group("vk_groups", {mode: 1, width: "160", height: "100", color1: 'FFFFFF', color2: '2B587A', color3: '5B7FA6'}, 88000000);
}
</script>

<script async onload="start4();" type="text/javascript" src="//vk.com/js/api/openapi.js?116"></script>

По идее, сам скрипт может быть вообще в футере сайта. А вызов идти через start1(); start2(); start3(); к разным виджетам.

Единственное, не тестировал возможность работы с onclick. Есть подозрение, что может не сработать. Но, если что, виджет всегда можно заменить картинкой со ссылкой на подписку :)

Адаптивный дизайн в 2 строчки ( https://dikij.com/wm/adaptaciya-saytov.php ). + Принимаю заказы любой сложности ( https://searchengines.guru/ru/forum/926323 ). 💎 Еще я делаю классные кулоны с опалами ( https://mosaicopal.ru/ ).
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий