JS: запуск после загрузки страницы
Иногда нет возможности прописать запуск скрипта в <body onLoad=...> или в конце страницы. Приходится использовать событие window.onload, но оно произойдет только после полной загрузки страницы вместе с картинками и флешем. К счастью в нормальных браузерах есть DOMContentLoaded, решающее эту проблему.
Для браузеров не поддерживающих DOMContentLoaded есть хаки для его эмуляции: dpp.su, xhtml.ru, но мне не хочется использовать извращенные функции, поэтому пользователи этих браузеров будут ждать window.onload :)
У window.onload есть одно неприятное ограничение - на него можно навесить только одну функцию. Самое удобное решение этой проблемы предложено здесь. Кстати, у IE есть window.attachEvent('onload', function(){}), что идентично window.addEventListener("load",function(){}, false), но доработанный window.onload - то же самое.
onReady = function(e){
if (window.addEventListener) {
window.addEventListener("DOMContentLoaded",function(){eval(e)}, false)
} else {
var oldonload = window.onload;
if (typeof window.onload != 'function') { window.onload = function(){eval(e)};}
else {window.onload = function() { if (oldonload) {oldonload();} eval(e);}}
}
}
Зачем нужен eval? Чтобы запускать функции с аргументами, например onReady("myFunc('a','b')").

Если браузер поддерживает window.onload, то в нем будет работать этот скрипт.