Я унаследовал этот фрагмент кода, и он кажется субоптимальным и, возможно, неправильным, поскольку он добавляет прослушиватели событий как к окну, так и к объектам документа. Тем не менее, он работает правильно, за исключением ежевики 5.0. Может ли кто-нибудь объяснить, все ли это настроено правильно или есть какие-либо рекомендации, чтобы сделать его лучше и/или более упорядоченным?
        if (document.readyState === "complete") 
            callback();
        else if (document.addEventListener) 
        {
            document.addEventListener("DOMContentLoaded",callback,false);
            window.addEventListener("load",callback,false);
        }
        else if(window.attachEvent) 
        {
            document.attachEvent("onreadystatechange", callback);
            window.attachEvent("onLoad",callback);
        } else
            setTimeout(callback,2000);