Edit in JSFiddle

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <title>dom</title>
    
</head>

<body>
<script type="text/javascript" defer="defer">
    // IE 브라우저를 위한 defer 설정
    console.log('defer(interactive) : ' + 'obj = ' + (document.getElementById('imageObject') && document.getElementById('imageObject').width)); // 700(image width 사이즈)
</script>
<script type="text/javascript">

function ready(fn)
{
    fn = fn || function(){ ; };
   
    if (ready.load){
        ready.callback.push(fn);
    }
    else if (!ready.load)
    {
        ready.callback = [fn];
 
        if (document.addEventListener)
        {
            ready.load = true;
 
            appendEvent(document, 'DOMContentLoaded', function()
            {  
                removeEvent(document, 'DOMContentLoaded', arguments.callee);
 
                for (var i = 0, length = ready.callback.length; i < length; i++){
                    ready.callback[i]();
                }
 
                ready.load = false;
            });
        }
        else if (document.attachEvent)
        {
            ready.load = true;
           
            appendEvent(document, 'readystatechange', function()
            {
                if (document.readyState === 'complete' || document.readyState === 'loaded')
                {                  
                    removeEvent(document, 'readystatechange', arguments.callee);
 
                    for (var i = 0, length = ready.callback.length; i < length; i++){
                        ready.callback[i]();
                    }                  
                }
 
                ready.load = false;
            });
        }
    }
};
 
// 해당 엘리먼트의 이벤트 삽입
function appendEvent(elem, type, handler){
 
    type = typeof type === 'string' && type || '';
    handler = handler || function(){ ; };
   
    if (elem.addEventListener){
        elem.addEventListener(type, handler, false);
    }
    else if (elem.attachEvent){
        elem.attachEvent('on' + type, handler);
    }
}
 
// 해당 엘리먼트의 이벤트 삭제
function removeEvent(elem, type, handler){
   
    type = typeof type === 'string' && type || '';
    handler = handler || function(){ ; };
 
    if (elem.addEventListener){
        elem.removeEventListener(type, handler);
    }
    else if (elem.attachEvent){
        elem.detachEvent('on' + type, handler);
    }
}
 
// DOMContentLoaded OR readystatechange
ready(function(){
    console.log('DOMContentLoaded OR readystatechange');
});
 
// onload
window.onload = function()
{
    console.log('onload');
};
</script>
</body>
</html>