Поиск элемента сайта после загрузки на странице этого элемента
Хелоу ворлд!
Описание проблемы: Пишу расширение для оперы. Появилась проблема с выполнением кода после загрузки элементов страницы даже при вставке в функцию 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, время: 07:23. |