<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>刘钢的博客 - 我是UED &#187; onDOMReady</title>
	<atom:link href="http://www.iamued.com/tag/ondomready/feed" rel="self" type="application/rss+xml" />
	<link>http://www.iamued.com</link>
	<description>http://www.IamUED.com</description>
	<lastBuildDate>Wed, 18 Jan 2012 02:51:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>即拷即用：onDOMReady（提取自jQuery.ready）</title>
		<link>http://www.iamued.com/qianduan/1401.html</link>
		<comments>http://www.iamued.com/qianduan/1401.html#comments</comments>
		<pubDate>Fri, 09 Apr 2010 01:48:41 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[JavaScript脚本]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[onDOMReady]]></category>
		<category><![CDATA[ready]]></category>
		<category><![CDATA[即拷即用]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1401</guid>
		<description><![CDATA[上次abeet兄弟分享了即拷即用系列的动画函数 这次的onDOMReady更有吸引力了 先说明一下，为什么要提取jQuery的ready方法？ 因为在很多时候大家做前端时，需要在DOM树载入时马上执行一些函数，比如对导航条进行初始化。 但又不愿意仅为了这一个需求而引入整个jQuery库，于是就把jQuery的ready方法提取出来，单独使用了。 另外你也可以在构建自己的js框架时使用此函数。 重复一遍，我们的口号是什么？ 彪悍的应用，没有一行代码是多余的！！！ 使用方式如下 再次感谢abeet的分享]]></description>
			<content:encoded><![CDATA[<p>上次<a href="http://bbs.51js.com/space.php?uid=53586" target="_blank">abeet</a>兄弟分享了即拷即用系列的动画函数 这次的onDOMReady更有吸引力了</p>
<p>先说明一下，为什么要提取jQuery的ready方法？</p>
<p>因为在很多时候大家做前端时，需要在DOM树载入时马上执行一些函数，比如对导航条进行初始化。<br />
但又不愿意仅为了这一个需求而引入整个jQuery库，于是就把jQuery的ready方法提取出来，单独使用了。</p>
<p>另外你也可以在构建自己的js框架时使用此函数。</p>
<p>重复一遍，我们的口号是什么？<br />
<strong>彪悍的应用，没有一行代码是多余的！！！</strong></p>
<pre class="brush: jscript; title: ; notranslate">
(function(){
        var isReady=false; //判断onDOMReady方法是否已经被执行过
        var readyList= [];//把需要执行的方法先暂存在这个数组里
        var timer;//定时器句柄
        ready=function(fn) {
                if (isReady )
                        fn.call( document);
                else
                        readyList.push( function() { return fn.call(this);});
                return this;
        }
        var onDOMReady=function(){
                for(var i=0;i&lt;readyList.length;i++){
                        readyList[i].apply(document);
                }
                readyList = null;
        }
        var bindReady = function(evt){
                if(isReady) return;
                isReady=true;
                onDOMReady.call(window);
                if(document.removeEventListener){
                        document.removeEventListener(&quot;DOMContentLoaded&quot;, bindReady, false);
                }else if(document.attachEvent){
                        document.detachEvent(&quot;onreadystatechange&quot;, bindReady);
                        if(window == window.top){
                                clearInterval(timer);
                                timer = null;
                        }
                }
        };
        if(document.addEventListener){
                document.addEventListener(&quot;DOMContentLoaded&quot;, bindReady, false);
        }else if(document.attachEvent){
                document.attachEvent(&quot;onreadystatechange&quot;, function(){
                        if((/loaded|complete/).test(document.readyState))
                                bindReady();
                });
                if(window == window.top){
                        timer = setInterval(function(){
                                try{
                                        isReady||document.documentElement.doScroll('left');//在IE下用能否执行doScroll判断dom是否加载完毕
                                }catch(e){
                                        return;
                                }
                                bindReady();
                        },5);
                }
        }
})();
</pre>
<p>使用方式如下</p>
<pre class="brush: jscript; title: ; notranslate">
ready(navInit);//navInit为已存在的函数
//或
ready(function(){
        if(agt.toLowerCase().indexOf(&quot;msie 6&quot;) != -1)
                navInitForIE6();//如果浏览器是IE6，则执行navInitForIE6函数来初始化下拉菜单
});
</pre>
<p>再次感谢abeet的分享</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1401.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

