提供简单的高层api,隐藏复杂的底层api,方便程序员使用。
// addMyEvent是高层api, 隐藏了不同浏览器的实现
var addMyEvent = function( el, ev, fn ){
if(el. addEventListener){ // 非ie实现
el. addEventListener( ev, fn, false );
} else if(el. attachEvent){ // ie实现
el. attachEvent( 'on' + ev, fn );
} else{
el[ 'on' + ev] = fn;
}
};
jQuery's $(document).ready(...),内部实际上使用bindReady()
bindReady: function() {
...
if ( document.addEventListener ) {
document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
window.addEventListener( "load", jQuery. ready, false );
} else if (document.attachEvent ) {
document.attachEvent( "onreadystatechange", DOMContentLoaded );
window.attachEvent( "onload", jQuery. ready );
...
}