Поиск элемента сайта после загрузки на странице этого элемента
Хелоу ворлд!
Описание проблемы: Пишу расширение для оперы. Появилась проблема с выполнением кода после загрузки элементов страницы даже при вставке в функцию window.onload. Проблема: При поиске класса его значение равно null (Еще не прогрузился). Мои попытки решения: Я пробовал задать поиск класса с определенной частотой, если нулл, то повторяй операцию через n секунд. Но при длительной загрузке страницы идет переполнение стека. ВОПРОС: Есть ли способ выполненить код после загрузки всех ресурсов и выполнения скриптов с сервера? Пример кода, который я использовал: document.onclick = function(event){ function WaitForImageUserYoutube(){ var imageUserYoutube = document.getElementsByClassName("yt-simple-endpoint style-scope ytd-video-owner-renderer")[0]; // if element exists if(imageUserYoutube != undefined){ imageUserYoutube.onload = function(){ // do something } } else { setTimeout(WaitForImageUserYoutube(), interval); } } } |
Цитата:
В функцию setTimeout нужно передавать функцию, вы же передаете туда результат работы вашей функции WaitForImageUserYoutube, т.е. undefuned. Попробуйте так: window.onload = function(event) { function waitForImageUserYoutube() { var image = document.querySelector('.yt-simple-endpoint.style-scope.ytd-video-owner-renderer'); if (!image) { return void setTimeout(waitForImageUserYoutube, interval || 1e3); } var onLoadCallback = function() { // do something }; var imageIsLoaded = !(!image.complete || image.naturalWidth === 0); if (imageIsLoaded) { onLoadCallback.call(image); } else { image.onload = onLoadCallback; } }; }; PS. пересмотрите, пожалуйста, свой code style. Межстрочное расстояние можно настроить в большинстве редакторов. |
Спасибо!
Действительно ошибка была в функции setTimeout() |
Часовой пояс GMT +3, время: 08:14. |