Ну а кто по твоему будет бызывать твою функцию? К тому же obj.onmouseover будет существовать в любом случае если существует такой обработчик, не зависимо какое сейчас событие.
Зри в корень и откинь C/C++/Pascal логику 
| Код | <script type="text/javascript"> <!-- function dispatchMyEvent(obj, type) { document.getElementById('dbg').innerHTML+="Event: "+type+", on: "+obj.tagName+";<br />"; } //--> </script> <div style="border: 1px solid navy; padding:5px margin: 5px;">Border top</div> <div onmouseover="if((event.target? event.target: event.srcElement).tagName.toUpperCase()==this.tagName) dispatchMyEvent(this, 'mouseover')" style="border: dotted 1px #555">Test <span>Test inner</span></div> <div style="border: 1px solid navy; padding:5px margin: 5px;">Border Bottom</div> <br> <br> Debug: <div id="dbg" style="border: 1px red solid; padding: 3px;"></div> |
Проверка на tagName нужно что бы не ловить bubbling события что генеряться на внутренних элементах и спускаються к div'у. |