Главная > JavaScript > Выполнение javascript, после загрузки необходимого объекта

Выполнение javascript, после загрузки необходимого объекта

Иногда возникает необходимость выполнить javascript сразу, после загрузки необходимого объекта. Дабы не подключать ради этой цели целый фреймворк, была написана следующая функция:

function init_OnLoad(id, e)
{
	var obj = document.getElementById(id);

	if(obj)
		eval(e);
	else
		setTimeout(function(){init_OnLoad(id, e)}, 0);
}


Если мы на 100% не уверены, что данный объект будет существовать в документе, то в функцию нужно будет ввести дополнительные проверки, чтоб избежать бесконечного рекурсивного вызова:

var _documentReady = false;

window.onload = function()
{
	_documentReady = true;
}

function init_OnLoad(id, e)
{
	var obj = document.getElementById(id);

	if(obj)
		eval(e);
	else
	{
		if(!_documentReady)
			setTimeout(function(){init_OnLoad(id, e)}, 0);
		else
		{
			obj = document.getElementById(id);

			if(obj)
				eval(e);
		}
	}
}

Пример:
Необходимо выполнить функцию abs с параметрами a,b,s – сразу после загрузки объекта с id = container.

init_OnLoad("container", "abs(a, b, s)");
Categories: JavaScript Tags:
  1. 24 Май 2009 в 17:18 | #1

    А не слишком ли мало писать задержку в setTimeout 0мс?
    Может имеет смысл 10мс хотябы написать. Пользователю без разницы, а движку и компу легче.

  2. Имя (обязательно)
    16 Сентябрь 2009 в 12:20 | #2

    Конечно рестарт функции с задержкой через 0 мс – полнейший бред.
    если уж на то пошло – зачем задержка (settimeout)? используйте прямой вызов функции.
    но изначально идея была правильной – нужна задержка порядка 100 мс.

  1. Пока что нет уведомлений.