<?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>前端观察 &#187; javascript</title>
	<atom:link href="http://www.qianduan.net/tag/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://www.qianduan.net</link>
	<description>专注于网站前端设计与前端开发</description>
	<lastBuildDate>Wed, 08 Feb 2012 05:05:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>用In.js颗粒化管理、加载你的Javascript模块</title>
		<link>http://www.qianduan.net/particles-with-in-js-management-load-your-javascript-module.html</link>
		<comments>http://www.qianduan.net/particles-with-in-js-management-load-your-javascript-module.html#comments</comments>
		<pubDate>Mon, 18 Jul 2011 11:27:13 +0000</pubDate>
		<dc:creator>郭凯</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[模块]]></category>
		<category><![CDATA[模块化]]></category>
		<category><![CDATA[颗粒]]></category>

		<guid isPermaLink="false">http://www.qianduan.net/?p=12562</guid>
		<description><![CDATA[近一年来，国内外都十分热衷于异步加载的研究，为了加快页面的载入速度，无阻塞加载Javascript的方法和框架成为了前端开发的焦点和亮点之一。... ]]></description>
			<content:encoded><![CDATA[<p>近一年来，国内外都十分热衷于异步加载的研究，为了加快页面的载入速度，无阻塞加载Javascript的方法和框架成为了前端开发的焦点和亮点之一。<span id="more-12562"></span></p>
<p><img src="http://project.benben.cc/In/in.js_logo.png" alt="In.js Logo" /></p>
<p>国外的像基于jQuery的RequireJs，YUI Loader，LabJs，RunJs，国内也有淘宝的SeaJs，豆瓣的DoJs等，这些都是一些十分优秀的模块加载器。但是本文将会向大家介绍一个新的开源的轻量级“多线程”异步模块加载器In.js，In的开发借鉴了Do的一些思路和使用习惯，在此期间感谢@kejun同我的耐心交流，In.js压缩后只有4.77k，不仅小巧而且十分好用。</p>
<p><strong>优点：</strong></p>
<ul>
<li>按需加载</li>
<li>无阻塞加载</li>
<li>依赖关系管理</li>
<li>颗粒化模块管理</li>
</ul>
<p><strong>如何使用？</strong></p>
<p><strong>A.引入In.js</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;in.js&quot;</span> autoload<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;true&quot;</span> core<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;jquery.min.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></pre></td></tr></table></div>

<p>只需要在页面顶部引入in.js即可，这里有两个参数需要注意：</p>
<p>autoload: 是否在加载in.js的时候加载底层核心库 &#8211; {可选参数 &#8211; true|false}<br />
core: 底层核心库的路径 &#8211; {可选参数 &#8211; url}</p>
<p>如果同时设置了core，并且autoload=true，则在引入In.js的同时加载core到页面中。</p>
<p><strong>B.声明各个模块的地址和依赖关系In.add(name,{config})</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">In</span>.<span style="color: #660066;">add</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'mod-a'</span><span style="color: #339933;">,</span><span style="color: #009900;">&#123;</span>path<span style="color: #339933;">:</span><span style="color: #3366CC;">'mods/a.js'</span><span style="color: #339933;">,</span>type<span style="color: #339933;">:</span><span style="color: #3366CC;">'js'</span><span style="color: #339933;">,</span>charset<span style="color: #339933;">:</span><span style="color: #3366CC;">'utf-8'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">In</span>.<span style="color: #660066;">add</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'mod-b'</span><span style="color: #339933;">,</span><span style="color: #009900;">&#123;</span>path<span style="color: #339933;">:</span><span style="color: #3366CC;">'mods/b.js'</span><span style="color: #339933;">,</span>type<span style="color: #339933;">:</span><span style="color: #3366CC;">'js'</span><span style="color: #339933;">,</span>charset<span style="color: #339933;">:</span><span style="color: #3366CC;">'utf-8'</span><span style="color: #339933;">,</span>rely<span style="color: #339933;">:</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'mod-b-css'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">In</span>.<span style="color: #660066;">add</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'mod-b-css'</span><span style="color: #339933;">,</span><span style="color: #009900;">&#123;</span>path<span style="color: #339933;">:</span><span style="color: #3366CC;">'mods/b.css'</span><span style="color: #339933;">,</span>type<span style="color: #339933;">:</span><span style="color: #3366CC;">'css'</span><span style="color: #339933;">,</span>charset<span style="color: #339933;">:</span><span style="color: #3366CC;">'utf-8'</span><span style="color: #339933;">,</span>rely<span style="color: #339933;">:</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'mod-a'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>上述代码声明了三个模块的依赖关系和模块的地址，并将它们加入到队列中去（仅仅是加入队列，并没有加载到页面中去）。</p>
<p><strong>C.加载队列In(queue)</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> demo<span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">In</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'mod-b'</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//do something</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//do something</span>
	<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>加载mod-b模块，加载完后执行functionA和functionB，在此假设引入in.js时设置了autoload=true，那么队列中的加载顺序依次为：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">jquery.min.js &gt;&gt;&gt; mod-a &gt;&gt;&gt; mod-b-css &gt;&gt;&gt; mod-b &gt;&gt;&gt; functionA() &gt;&gt;&gt; functionB()</pre></td></tr></table></div>

<p>队列全部加载完成后，demo会被赋值为一个数组，其中存放的是每个function的返回值：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">demo<span style="color: #339933;">=</span><span style="color: #009900;">&#123;</span>returns<span style="color: #339933;">:</span><span style="color: #009900;">&#91;</span>undefined<span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>complete<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><strong>D.在domReady之后加载队列In.ready(queue)</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">In</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'mod-b'</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//do something</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>队列加载顺序：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">jquery.min.js &gt;&gt;&gt; {domReady} &gt;&gt;&gt; mod-a &gt;&gt;&gt; mod-b-css &gt;&gt;&gt; mod-b &gt;&gt;&gt; function()</pre></td></tr></table></div>

<p>In.ready()和In()的区别在于两点：</p>
<ol>
<li>In.ready()中的队列只有在domReady之后才会执行</li>
<li>In.ready()没有返回值</li>
</ol>
<p><strong>E.监听变量变化，值改变则执行回调In.watch(object,property,function(prop,old,new) {})</strong></p>
<p>由于In加载的队列均为异步非阻塞式加载，所以有时候为了特殊需求（比如后续的操作依赖队列中function的返回值），我们需要在确保队列执行完成后，再执行后续操作。这种情况下，可以用In.watch()监听return.complete变量，当return.complete==true的时候执行回调函数，代码如下：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> model<span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">In</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'model'</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//do something</span>
	<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #CC0000;">123</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">In</span>.<span style="color: #660066;">watch</span><span style="color: #009900;">&#40;</span>model<span style="color: #339933;">,</span><span style="color: #3366CC;">'complete'</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>prop<span style="color: #339933;">,</span>old<span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">new</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>model<span style="color: #009900;">&#91;</span>prop<span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span>model.<span style="color: #660066;">returns</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #006600; font-style: italic;">//print 123</span>
		<span style="color: #000066; font-weight: bold;">In</span>.<span style="color: #660066;">unwatch</span><span style="color: #009900;">&#40;</span>model<span style="color: #339933;">,</span>prop<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #006600; font-style: italic;">//destroy the watch event of model.complete</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-华丽的分割线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>In的魅力远远不止上述这些，它的可靠性也已经在几个大项目中得到了印证，除此之外，In也有智能的提示，比如如果用In()加载一个事先未声明的模块，就会提示你检查模块名。真心的希望有更多的前端朋友关注In，使用In，甚至投入到In的后续开发中来。</p>
<p>下图是<a href="http://project.benben.cc/In/in.js_manual.png">In.js的英文版使用图册</a>：</p>
<p><img src="http://project.benben.cc/In/in.js_manual.png" alt="In.js Manual" width="560" /></p>
<p><strong>在哪下载？</strong></p>
<p>In.js是一个开源的项目，你可以在下边的地址找到它的源代码或者下载它使用。</p>
<p><a href="http://project.benben.cc/In">http://project.benben.cc/In</a><br />
<a href="http://github.com/PaulGuo/In">http://github.com/PaulGuo/In</a></p>
<p><strong>关于作者</strong></p>
<p>Author: Guokai （<a href="http://t.qq.com/lajiao">腾讯微博</a> / <a href="http://twitter.com/guokai">Twitter</a> / <a href="http://gplus.to/guokai">Google+</a> / <a href="http://benben.cc/">Blog</a>）<br />
Email/Gtalk: badkaikai@gmail.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.qianduan.net/particles-with-in-js-management-load-your-javascript-module.html/feed</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>JavaScript的私有成员</title>
		<link>http://www.qianduan.net/javascript-private-members.html</link>
		<comments>http://www.qianduan.net/javascript-private-members.html#comments</comments>
		<pubDate>Mon, 23 Mar 2009 13:49:43 +0000</pubDate>
		<dc:creator>糖伴西红柿</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.qianduan.net/?p=6580</guid>
		<description><![CDATA[<p>糖伴西红柿说：</p>
<p>好久没露面，本来就没人记得我，这次更无名了。最近从高丽迁移回了天朝，嗯。而且正在为了工作进行最后的充电活动。生活中同时也遭遇到电视剧情节，还是高丽... ]]></description>
			<content:encoded><![CDATA[<h1>对象</h1>
<p>Javascript 根本上是和对象相关的。数组是对象。函数是对象。对象是对象。那什么是对象呢？对象是名-值对的集合。名是字符串，值可以是字符串，数字，布尔值或者对象(包括数组和函数)。通常对象是像哈希表一样执行地，这样便于值地快速检索。</p>
<p>如果值是函数，我们可以认为这是一个方法。当一个对象地方法被调用的时候，this 变量就设置为这个对象。方法就可以通过 this 变量来访问实例变量。</p>
<p>对象可以由用来初始化对象的构造函数生成。构造函数提供了其他语言中类所提供的特性，包括静态变量和方法。</p>
<h1>公共</h1>
<p>对象的成员全部是公共成员。任何函数都可以访问、修改或者删除这些成员，或者增加新成员。有两种向新对象中添加成员的方法：</p>
<h2>在构造函数中添加</h2>
<p>这个技术通常用于初始化公共实例变量。使用构造函数的 this 变量向对象中添加成员。</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> Container<span style="color: #009900;">&#40;</span>param<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">member</span> <span style="color: #339933;">=</span> param<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>这样，如果我们创建一个新对象：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> myContainer <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Container<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'abc'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>这样 myContainer.member 就包含 &#8216;abc&#8217; 了。 </p>
<h2>在原型中添加</h2>
<p>这个技术通常用于添加公共方法。当一个成员被检索并且没能在对象本身里面找到时，就要从对象的构造函数的原型成员里面寻找。原型机制是用于继承的。也用于节省内存。向一个构造函数生成的所有对象中添加一个方法，只需要向构造函数原型中添加一个函数：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	Container.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">stamp</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>string<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">member</span> <span style="color: #339933;">+</span> string<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span></pre></div></div>

<p>因此，我们可以调用这个方法：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	myContainer.<span style="color: #660066;">stamp</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'def'</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p>结果为 &#8216;abcdef&#8217;。</p>
<h1>私有</h1>
<p>私有成员是由构造函数生成的。一般构造函数的变量和参数都是私有成员。</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">function</span> Container<span style="color: #009900;">&#40;</span>param<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">member</span> <span style="color: #339933;">=</span> param<span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> secret <span style="color: #339933;">=</span> <span style="color: #CC0000;">3</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> that <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span></pre></div></div>

<p>这个构造函数生成了3个私有实例变量：param,secret 和 that。它们和对象相关联，但是它们不仅在函数外边不可访问，而且对对象自身的公共方法来说也是不可访问的。它们只可以被私有方法访问。私有方法是构造函数的内部函数。</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> Container<span style="color: #009900;">&#40;</span>param<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">function</span> dec<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>secret <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            secret <span style="color: #339933;">-=</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
            <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">member</span> <span style="color: #339933;">=</span> param<span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> secret <span style="color: #339933;">=</span> <span style="color: #CC0000;">3</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> that <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>私有方法 dec 检查 secret 实例变量。如果它大于零，将其减一并返回 true。否则返回 false。它可以用作限定对象使用3次。</p>
<p>按照习惯，我们设置了一个私有的 that 参数。它使得这个对象对于私有方法使可见的。在 ECMAScript 语言规范中，这是一个可行的错误，它使得 this 对于内部函数被不正确地设置。(This is a workaround for an error in the ECMAScript Language Specification which causes this to be set incorrectly for inner functions.)</p>
<p>私有方法不能被公共方法调用。要想使得私有方法有用，需要介绍一下特权方法。</p>
<h1>特权</h1>
<p>特权方法可以访问私有变量和方法，并且其自身对于公共方法和对象外部都是可访问地。可以删除或者替换一个特权方法，但是不能改变它，或者强迫它泄密。</p>
<p>特权方法是在构造函数内使用 this 指定地。</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> Container<span style="color: #009900;">&#40;</span>param<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">function</span> dec<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>secret <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            secret <span style="color: #339933;">-=</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
            <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">member</span> <span style="color: #339933;">=</span> param<span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> secret <span style="color: #339933;">=</span> <span style="color: #CC0000;">3</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> that <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">service</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>dec<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000066; font-weight: bold;">return</span> that.<span style="color: #660066;">member</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>service 就是特权方法。前三次调用 myContainer.service() 时会返回 &#8216;abc&#8217;。之后返回空(null)。service 调用了可访问私有变量 secret 的私有方法 dec。service 对其他对象和方法都是可见的，但是不能直接访问私有成员。</p>
<h1>闭包</h1>
<p>由于 Javascript 有闭包，因此这种公共，私有和特权成员模型时可以的。这意味着内部函数总是可以访问它外部函数的变量和参数，甚至在外部函数返回后也可以。这是这个语言一个非常有用的特性。目前没有任何关于 Javascript 编程的书描述了如何利用它。大部分甚至都不提及它。(糖伴西红柿说，这是2001年的文章，当时估计还没有这方面的研究文章。现在来说，犀牛书等都有涉及，javascript 的难点之一啊。)</p>
<p>私有和特权成员只在对象被创建时生成。公共成员可以随时添加。</p>
<h1>模式</h1>
<h2>公共</h2>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> Constructor<span style="color: #009900;">&#40;</span>...<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">membername</span> <span style="color: #339933;">=</span> value<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
Constructor.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">membername</span> <span style="color: #339933;">=</span> value<span style="color: #339933;">;</span></pre></div></div>

<h2>私有</h2>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> Constructor<span style="color: #009900;">&#40;</span>...<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #003366; font-weight: bold;">var</span> that <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> membername <span style="color: #339933;">=</span> value<span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #003366; font-weight: bold;">function</span> membername<span style="color: #009900;">&#40;</span>...<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>...<span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #009900;">&#125;</span></pre></div></div>

<p>注意：函数语句</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> membername<span style="color: #009900;">&#40;</span>...<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>...<span style="color: #009900;">&#125;</span></pre></div></div>

<p>是</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> membername <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> membername<span style="color: #009900;">&#40;</span>...<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>...<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>的缩写。</p>
<h2>特权</h2>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> Constructor<span style="color: #009900;">&#40;</span>...<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">membername</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>...<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>...<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #009900;">&#125;</span></pre></div></div>

<p>糖伴西红柿说：</p>
<p>好久没露面，本来就没人记得我，这次更无名了。最近从高丽迁移回了天朝，嗯。而且正在为了工作进行最后的充电活动。生活中同时也遭遇到电视剧情节，还是高丽电视剧。这两天在主攻 Javascript 中几个比较难的知识点，闭包算是其中之一。两天看了好多关于闭包的文章，才有点开窍，这篇文章属于其中之一。算是个额外的参考资料，主要的是另一篇英文文章，有打算全篇翻译。</p>
<p>原文地址：<a href="http://www.crockford.com/javascript/private.html">http://www.crockford.com/javascript/private.html</a><br />
译文地址：<a href="http://www.qianduan.net/?p=6580">http://www.qianduan.net/?p=6580</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.qianduan.net/javascript-private-members.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>10个最好的免费Javascript图表生成方案</title>
		<link>http://www.qianduan.net/10-best-free-javascript-program-to-generate-charts.html</link>
		<comments>http://www.qianduan.net/10-best-free-javascript-program-to-generate-charts.html#comments</comments>
		<pubDate>Fri, 20 Feb 2009 12:50:08 +0000</pubDate>
		<dc:creator>糖伴西红柿</dc:creator>
				<category><![CDATA[Resource]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.qianduan.net/?p=5306</guid>
		<description><![CDATA[这篇文章收集了用 Javascript 生成图表的一些有趣的库及脚本。

<img class="alignnone" title="flot" src="http://www.ajaxline.com/files/flot.png" alt="" width="615" height="322" /... ]]></description>
			<content:encoded><![CDATA[<p>这篇文章收集了用 Javascript 生成图表的一些有趣的库及脚本。</p>
<p><img class="alignnone" title="flot" src="http://www.qianduan.net/wp-content/uploads/2009/02/211046ow6.png" alt="" width="615" height="322" /><span id="more-5306"></span></p>
<h3><a rel="nofollow" href="http://code.google.com/p/flot/">Flot</a></h3>
<p><img class="alignnone" title="flot" src="http://www.qianduan.net/wp-content/uploads/2009/02/211046ow6.png" alt="" width="615" height="322" /></p>
<p>Flot 是 针对 jQuery 的一个纯 Javascript 的图表库。它在客户端生成任意数据集的图形图表。优点是使用简单（所有设定都可选），优雅的样式以及类似缩放和鼠标追踪等的交互特性。</p>
<h3><a rel="nofollow" href="http://solutoire.com/flotr/">Flotr JavaScript Plotting Library</a></h3>
<p><img class="alignnone" title="floatr" src="http://www.qianduan.net/wp-content/uploads/2009/02/21104792w.png" alt="" width="631" height="314" /></p>
<p>Float r是一个受到 Flot（作者为 Ole Laursen）启发并且基于 Prototype（目前版本是1.6.0.2）Javascript 框架的 Javascrip t图表库。使用Floatr可以用易于学习的语法在大多数现代浏览器中画出漂亮的图形。它具有图标支持，负值支持，鼠标追踪，选区支持，缩放支持，事件挂钩，css样式支持等多种特性。</p>
<h3><a rel="nofollow" href="http://www.jscharts.com/">JS charts</a></h3>
<p><img class="alignnone" title="JS Chart" src="http://www.qianduan.net/wp-content/uploads/2009/02/211048lmm.jpg" alt="" width="193" height="119" /></p>
<p>JS Charts 是一个无需编码或只需少量编码的基于 Javascript 的图表生成器。使用 JS Charts 生成图标是非常简单而容易的事情，因为只需要使用客户端脚本就可以了（例如，浏览器实现）。无需额外的插件或服务器模块。</p>
<h3><a rel="nofollow" href="http://www.gerd-tentler.de/tools/graphs/">HTML-Graphs</a></h3>
<p><img class="alignnone" title="Htmlgraph" src="http://www.qianduan.net/wp-content/uploads/2009/02/2110499ez.png" alt="" width="268" height="191" /><br />
使用这个脚本可以生成水平/垂直条形图，进度条以及调谐波形图。可以生成简单的图表或者有图标的分组条形图，添加标签，改变颜色等。无需额外图形和图形库。</p>
<h3><a rel="nofollow" href="http://dragan.yourtree.org/code/canvas-3d-graph/">Canvas 3D Graph</a></h3>
<p><img class="alignnone" title="canvas 3d graph" src="http://www.qianduan.net/wp-content/uploads/2009/02/2110505vn.png" alt="" width="440" height="480" /></p>
<p>Canvas 3D Graph 是一个以 3D 形式标识数字的特殊条形图。</p>
<h3><a rel="nofollow" href="http://www.filamentgroup.com/lab/creating_accessible_charts_using_canvas_and_jquery/">fgCharting Plugin for jQuery</a></h3>
<p><img class="alignnone" title="fxgraph" src="http://www.qianduan.net/wp-content/uploads/2009/02/211050guf.png" alt="" width="300" height="150" /><br />
fgCharting Plugin for jQuery 是一个图形数据的易用方案。它将 Html 中表格数据动态地转换为图标，支持非传统浏览者（例，屏幕阅读器使用者）使用 Html 表格。基本使用需要引用一行代码来初始化插件。</p>
<h3><a rel="nofollow" href="http://www.fh54.de/table_diagram/">TableDiagram</a></h3>
<p><img class="alignnone" title="tablegraph" src="http://www.qianduan.net/wp-content/uploads/2009/02/2110512o1.png" alt="" width="305" height="297" /><br />
这个脚本将表格种的数据生成图标形式。表格中的数据必须是非负值（大于或等于0），整数，小数均可。</p>
<h3><a rel="nofollow" href="http://www.dynamicdrive.com/dynamicindex11/piegraph.htm">Pie Graph</a></h3>
<p><img class="alignnone" title="piegraph" src="http://www.qianduan.net/wp-content/uploads/2009/02/211051037.png" alt="" width="351" height="246" /><br />
这是一个纯基于 DHML/CSS 的饼型图脚本。加载迅速并且和页面其他部分相溶合。可以使用透明图片作为背景。</p>
<h3><a rel="nofollow" href="http://www.codeproject.com/KB/scripting/JavaScript_Chart.aspx">JavaScript Chart</a></h3>
<p><img class="alignnone" title="jschart" src="http://www.qianduan.net/wp-content/uploads/2009/02/21105216a.gif" alt="" width="500" height="350" /></p>
<p>Magnus Lundahl 写的另一个可以添加图表样式到网页的轻量级脚本。</p>
<h3><a rel="nofollow" href="http://www.lutanho.net/diagram/">JavaScript Diagram Builder</a></h3>
<p><img class="alignnone" title="jsbuilder" src="http://www.qianduan.net/wp-content/uploads/2009/02/211053k58.png" alt="" width="660" height="356" /></p>
<p>Javascript Digram Builder v3.3 是一个对象和函数的库。它可以帮助你在页面中用简单的方法展示坐标图（分别为图表或者图形）。</p>
<p>原文地址：<a href="http://www.ajaxline.com/10-best-free-javascript-charts-solutions">http://www.ajaxline.com/10-best-free-javascript-charts-solutions</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.qianduan.net/10-best-free-javascript-program-to-generate-charts.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>用NiceForms创建漂亮的表单</title>
		<link>http://www.qianduan.net/used-to-create-beautiful-form-niceforms.html</link>
		<comments>http://www.qianduan.net/used-to-create-beautiful-form-niceforms.html#comments</comments>
		<pubDate>Fri, 26 Dec 2008 17:57:35 +0000</pubDate>
		<dc:creator>神飞</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Niceforms]]></category>

		<guid isPermaLink="false">http://www.qianduan.net/?p=2281</guid>
		<description><![CDATA[<p>Niceforms是一个脚本，它用个性设计的内容替代最常用的表单元素。您可以使用Niceforms提供的默认的主题，你也可以以最小的工作量来开发自己的界面。</p>

<p>Niceforms将从本质上改变古板的表... ]]></description>
			<content:encoded><![CDATA[<p>Niceforms是一个脚本，它用个性设计的内容替代最常用的表单元素。您可以使用Niceforms提供的默认的主题，你也可以以最小的工作量来开发自己的界面。</p>
<p>Niceforms将从本质上改变古板的表单样式：<span id="more-2281"></span></p>
<p> </p>
<div id="attachment_300" class="wp-caption alignnone" style="width: 410px"><img class="size-full wp-image-300" title="regular form" src="http://www.qianduan.net/wp-content/uploads/2008/12/105735fzr.gif" alt="regular form" width="400" height="300" /><p class="wp-caption-text">regular form</p></div>
<p>变成这样:</p>
<div id="attachment_299" class="wp-caption alignnone" style="width: 410px"><img class="size-full wp-image-299" title="niceforms" src="http://www.qianduan.net/wp-content/uploads/2008/12/1057361cm.gif" alt="niceforms result" width="400" height="300" /><p class="wp-caption-text">niceforms</p></div>
<p><strong>NiceForms是怎么工作的?</strong></p>
<p>原理很简单: 因为普通的输入栏（包括单选按钮，复选框，文本区域等）只能用样式控制一点点，所以他们必须被隐藏，而且它们的视觉表现要被类似的全新的完全个性化的结构替换。从理论上讲，这看起来并不复杂。但是，从理论到实践还有很长的路要走。</p>
<p>从基本的XHTML代码的网页表单开始， Niceforms分析DOM树，得到所有的输入栏，隐藏他们，在相应的位置替换他们的新的图形表现。所有这一切都在保持数据转换和正常表单的选择属性的情况下完成。而这一切都是通过JavaScript实现的。</p>
<p>你可以查看一下 <a href="http://www.emblematiq.com/projects/niceforms/demo/">demo</a> | <a href="http://www.isparkle.cn/show/niceform" target="_blank">中文版演示</a>。</p>
<p>要了解更多，请查看<a href="http://www.emblematiq.com/projects/niceforms/">Niceforms主页</a> ，当然，你可以查看<a href="http://www.isparkle.cn/?p=411" target="_blank">NiceForms中文版发布说明</a>。</p>
<p>你也可以<a href="http://bbs.qianduan.net/thread-22-1-1.html" target="_blank">到这里下载中文版源文件</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.qianduan.net/used-to-create-beautiful-form-niceforms.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【转】JavaScript 函数库的未来</title>
		<link>http://www.qianduan.net/javascript-library-to-the-future.html</link>
		<comments>http://www.qianduan.net/javascript-library-to-the-future.html#comments</comments>
		<pubDate>Wed, 05 Nov 2008 06:10:01 +0000</pubDate>
		<dc:creator>神飞</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[prototype]]></category>

		<guid isPermaLink="false">http://www.qianduan.net/?p=288</guid>
		<description><![CDATA[过去的几年里，函数库为JavaScript的突然风靡做出了巨大的贡献。JavaScript开发者因此而解决了难题，而且开发者在为感兴趣的问题开发解决方案的同时，又可以将这些应用到商业领域。 我一直... ]]></description>
			<content:encoded><![CDATA[<p>过去的几年里，函数库为JavaScript的突然风靡做出了巨大的贡献。JavaScript开发者因此而解决了难题，而且开发者在为感兴趣的问题开发解决方案的同时，又可以将这些应用到商业领域。</p>
<p>我一直在思考JavaScript函数库的未来是怎样的，其中我很希望引擎从API中分离出来。<span id="more-288"></span></p>
<h3>选择器引擎(Selector Engine)的轻便性</h3>
<p>函数库选择引擎的速度问题引来的争论实在不少，但前提是得看你怎么用它。所以我所谓的选择器引擎的轻便性指的是根据我的应用来自定义：可以根据从事的项目不断地更改选择器引擎。</p>
<p>例如：1，构建一个完全的桌面web应用——我想使用尽可能全的选择器引擎；2，为iPhone构建一个site版本——那我仅需要querySelectorAll因为它可以被支持；3，构建一个移动设备可以连接的轻便版本，我会通过ID将JavaScript局限到目标元素以保持其紧凑性。</p>
<p>现在选择器引擎有越来越多的选择，尤其是当你知道如何自定义你的应用的时候。我想看到的情况是：1，我们是否能写出将新引擎导入库（如jQuery, Prototype, Mootools）的插件；2，未来主流的函数库版本是否能支持可插型查询引擎（query engine）。总之，开发者能够根据应用的具体需求而选择选择器引擎。</p>
<h3>API的选择</h3>
<p>一旦API与选择器引擎分离，函数库的选择就只是个人爱好的问题了。而且这种分离使得更多的公司能够创建基于现有引擎或APIs的个性函数库。例如，BBC创建Glow——他们自己的JavaScript函数库，是因为jQuery不支持Safari 1。</p>
<h3>挑战</h3>
<p>是否能有主流函数库的插件，能够让我们在函数库中接入新的选择器引擎？这是个挑战。我不是Prototype 和Mootools，所以我不清楚这是否可行。但这确实很有意义不是么？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.qianduan.net/javascript-library-to-the-future.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>十个最佳Ajax/Javascript实例与演示网站</title>
		<link>http://www.qianduan.net/10-best-ajax-javascript-examples-and-demonstration-site.html</link>
		<comments>http://www.qianduan.net/10-best-ajax-javascript-examples-and-demonstration-site.html#comments</comments>
		<pubDate>Mon, 03 Nov 2008 09:41:59 +0000</pubDate>
		<dc:creator>神飞</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.qianduan.net/?p=232</guid>
		<description><![CDATA[在这篇资源收集中，你将会找到十个提供高质量Ajax和Javascript实例与教程的网站或博客. 1. Ajax Rain AjaxRain有一些有插图的漂亮的网页效果，这些可以通过组合AJAX、CSS、DHTML或JavaScript 实现。一些... ]]></description>
			<content:encoded><![CDATA[<p>在这篇资源收集中，你将会找到十个提供高质量Ajax和Javascript实例与教程的网站或博客.<span id="more-232"></span></p>
<h3 class="sub-title">1. <a href="http://www.ajaxrain.com/">Ajax Rain</a></h3>
<div class="img-post"><a href="http://www.ajaxrain.com/"><img src="http://www.qianduan.net/wp-content/uploads/2008/10/045722pco.jpg" alt="Ajax Examples" /></a></div>
<p>AjaxRain有一些有插图的漂亮的网页效果，这些可以通过组合AJAX、CSS、DHTML或JavaScript 实现。一些演示是绝对值得一看，即使你不是网页设计师/程序员。</p>
<h4>Ajax/Javascript 实例</h4>
<ul class="post">
<li>- <a href="http://www.lubber.de/extjs/datepickerplus/">EXT JS Date Picker</a></li>
<li>- <a href="http://www.webappers.com/2008/10/06/jquery-feed-menu-for-multiple-feeds/">jQuery Feed Menu</a></li>
<li>- <a href="http://stanlemon.net/projects/jgrowl.html#samples">jGrowl</a></li>
<li>- <a href="http://labs.activespotlight.net/jQuery/menu_demo.html">FastFind Menu &#8211; Jquery</a></li>
<li>- <a href="http://q42.nl/spiffy/accordion/">Spiffy Accordion</a></li>
</ul>
<h3 class="sub-title">2. <a href="http://www.ajaxdaddy.com/">Ajax Daddy</a></h3>
<div class="img-post"><a href="http://www.ajaxdaddy.com/"><img src="http://www.qianduan.net/wp-content/uploads/2008/10/045723p19.jpg" alt="Ajax Examples" /></a></div>
<p>一个大型的漂亮的web 2.0工具收集。一个很灵活的特性是在你决定把例子放到你的网站上之前，你可以在线调试这些实例。</p>
<h4>Ajax/Javascript 实例</h4>
<ul class="post">
<li>- <a href="http://www.ajaxdaddy.com/flickr-like-edit-in-place.html">Flickr Like edit</a></li>
<li>- <a href="http://www.ajaxdaddy.com/mootools-autocomplete.html">MooTools Autocomplete</a></li>
<li>- <a href="http://www.ajaxdaddy.com/demo-slideshow-viewer.html">SlideShow Viewer</a></li>
<li>- <a href="http://www.ajaxdaddy.com/demo-prototype-window.html">Prototype window</a></li>
<li>- <a href="http://www.ajaxdaddy.com/demo-jquery-shoutbox.html">Shoutbox</a></li>
</ul>
<h3 class="sub-title">3. <a href="http://miniajax.com/">Mini Ajax</a></h3>
<div class="img-post"><a href="http://miniajax.com/"><img src="http://www.qianduan.net/wp-content/uploads/2008/10/0457242bf.jpg" alt="Ajax Examples" /></a></div>
<p>MiniAJAX是一个很棒的小巧的DHTML和AJAX脚本的收集，这些片段非常有用，你可以在任何地方使用它们。</p>
<h4>Ajax/Javascript 实例</h4>
<ul class="post">
<li>- <a href="http://prototype-window.xilinus.com/">Prototype Window &#8211; Demo</a></li>
<li>- <a href="http://www.masugadesign.com/the-lab/scripts/unobtrusive-ajax-star-rating-bar/">AJAX Star Rating Bar &#8211; Demo</a></li>
<li>- <a href="http://www.labsmedia.com/clickheat/">Heatmap for your website</a></li>
<li>- <a href="http://www.dustindiaz.com/ajax-contact-form/">An AJAX contact form</a></li>
<li>- <a href="http://leftlogic.com/lounge/articles/jquery_spy2/">Digg &#8211; like spy script</a></li>
</ul>
<h3 class="sub-title">4. <a href="http://ajaxian.com/">Ajaxian</a></h3>
<div class="img-post"><a href="http://ajaxian.com/"><img src="http://www.qianduan.net/wp-content/uploads/2008/10/045726dg3.jpg" alt="Ajax Examples" /></a></div>
<p>许多关于Ajax的信息，包括例子、博客、论坛、讨论和教程。常常更新。</p>
<h4>Ajax/Javascript 实例</h4>
<ul class="post">
<li>- <a href="http://ajaxian.com/archives/csshttprequest-cross-domain-ajax-using-css-for-transport">CSSHttpRequest</a></li>
<li>- <a href="http://ajaxian.com/archives/ajaxified-body-when-to-refresh-the-page">Ajaxified Body</a></li>
<li>- <a href="http://ajaxian.com/archives/flxhr-flash-based-xhr-from-flensed">flXHR: Flash based XHR from flensed</a></li>
<li>- <a href="http://ajaxian.com/archives/jstree-jquery-based-javascript-tree-component">jsTree: jQuery-based JavaScript tree component</a></li>
<li>- <a href="http://ajaxian.com/archives/modulesjs-a-new-stand-alone-javascript-module-loader">modules.js</a></li>
</ul>
<h3 class="sub-title">5. <a href="http://www.dhtmlgoodies.com/">DHTML Goodies</a></h3>
<div class="img-post"><a href="http://www.dhtmlgoodies.com/"><img src="http://www.qianduan.net/wp-content/uploads/2008/10/045727m0p.jpg" alt="Ajax Examples" /></a></div>
<p>一个包括DHTML和ajax脚本、演示和教程的仓库。脚本包括菜单、窗口、 日历到相册和Ajax。</p>
<h4>Ajax/Javascript 实例</h4>
<ul class="post">
<li>- <a href="http://www.dhtmlgoodies.com/index.html?page=formWidgets">Quick Edit</a></li>
<li>- <a href="http://www.dhtmlgoodies.com/index.html?page=smallscripts">News rotator</a></li>
<li>- <a href="http://www.dhtmlgoodies.com/index.html?page=formWidgets">Color picker script</a></li>
<li>- <a href="http://www.dhtmlgoodies.com/index.html?page=chess#chesstr">Chesswidget</a></li>
<li>- <a href="http://www.dhtmlgoodies.com/index.html?page=dhtml-suite">Chained select widget</a></li>
</ul>
<h3 class="sub-title">6. <a href="http://www.javascriptkit.com/">Javascript Kit</a></h3>
<div class="img-post"><a href="http://www.javascriptkit.com/"><img src="http://www.qianduan.net/wp-content/uploads/2008/10/04572832t.jpg" alt="Ajax Examples" /></a></div>
<p>JavaScript 教程和脚本的综合资源. 同样以DHTML,CSS,和网站设计教程为特色，还有一个强大的开发者帮助社区。</p>
<h4>Ajax/Javascript 实例</h4>
<ul class="post">
<li>- <a href="http://www.javascriptkit.com/script/script2/richhtmlticker.shtml">Rich HTML Ticker</a></li>
<li>- <a href="http://www.javascriptkit.com/script/cutindex3.shtml">Scrollers</a></li>
<li>- <a href="http://www.javascriptkit.com/script/cutindex16.shtml">Combo Boxes</a></li>
<li>- <a href="http://www.javascriptkit.com/script/cutindex17.shtml">Text effects</a></li>
<li>- <a href="http://www.javascriptkit.com/script/cutindex12.shtml">Windows, remotes,  frames etc</a></li>
</ul>
<h3 class="sub-title">7. <a href="http://www.dynamicdrive.com/">Dynamic Drive</a></h3>
<div class="img-post"><a href="http://www.dynamicdrive.com/"><img src="http://www.qianduan.net/wp-content/uploads/2008/10/045729l0b.jpg" alt="Ajax Examples" /></a></div>
<p>我最喜欢的在线浏览的javascript和css网站之一。 所有种类的DHTML/Javascript/客户端脚本的一个大参考，而且为初学者提供了详细的容易理解的进阶教程。</p>
<h4>Ajax/Javascript 实例</h4>
<ul class="post">
<li>- <a href="http://www.dynamicdrive.com/dynamicindex4/stepcarousel.htm"> Step Carousel Viewer </a></li>
<li>- <a href="http://www.dynamicdrive.com/dynamicindex17/ajaxpaginate/index.htm">Ajax Pagination script</a></li>
<li>- <a href="http://www.dynamicdrive.com/dynamicindex1/ddlevelsmenu/index.htm">All Levels Navigational Menu</a></li>
<li>- <a href="http://www.dynamicdrive.com/dynamicindex13/circletext.htm">Circling text trail </a></li>
<li>- <a href="http://www.dynamicdrive.com/dynamicindex5/overlapcontent.htm">Drop Down/ Overlapping Content</a></li>
</ul>
<h3 class="sub-title">8. <a href="http://www.dhtmlsite.com/">DHTML Site</a></h3>
<div class="img-post"><a href="http://www.dhtmlsite.com/"><img src="http://www.qianduan.net/wp-content/uploads/2008/10/045730lgh.jpg" alt="Ajax Examples" /></a></div>
<p>你将发现一个很有用的AJAX/DHTML脚本和教程的目录。脚本分类从页面特效、工具提示、拖拽到日历窗口效果和图片相册</p>
<h4>Ajax/Javascript 实例</h4>
<ul class="post">
<li>- <a href="http://dhtmlsite.com/tutorials/show_news.php?subaction=showfull&amp;id=1200196183&amp;archive=&amp;template=top">Starbox &#8211; rating stars for prototype</a></li>
<li>- <a href="http://dhtmlsite.com/tutorials/show_news.php?subaction=showfull&amp;id=1200195594&amp;archive=&amp;template=top">Multibox gallery</a></li>
<li>- <a href="http://dhtmlsite.com/tutorials/show_news.php?subaction=showfull&amp;id=1195282856&amp;archive=&amp;template=top">MooMonth</a></li>
<li>- <a href="http://dhtmlsite.com/tutorials/show_news.php?subaction=showfull&amp;id=1195112122&amp;archive=&amp;template=top">jQuery Lightbox</a></li>
<li>- <a href="http://dhtmlsite.com/tutorials/show_news.php?subaction=showfull&amp;id=1192005165&amp;archive=&amp;template=top">Sliding Panels for jQuery</a></li>
</ul>
<h3 class="sub-title">9. <a href="http://ajax.solutoire.com/">Solutoire</a></h3>
<div class="img-post"><a href="http://ajax.solutoire.com/"><img src="http://www.qianduan.net/wp-content/uploads/2008/10/045731b7k.jpg" alt="Ajax Examples" /></a></div>
<p>一个很广泛的收集展示了一些很棒的Javascript示例和ajax演示和教程。包括不同的javascript库和他们的实例: jQuery, Scriptaculous, mootools 和更多。</p>
<h4>Ajax/Javascript 实例</h4>
<ul class="post">
<li>- <a href="http://aka-fotos.de/web/?ajax/uniajax">Uniajax</a></li>
<li>- <a href="http://rubens.wordpress.com/2006/02/09/ajax-autocomplete-with-dwr/">Simple Scriptaculous autocomplete</a></li>
<li>- <a href="http://www-128.ibm.com/developerworks/websphere/library/techarticles/0606_barcia/0606_barcia.html">Build SOA Ajax clients with the Dojo toolkit</a></li>
<li>- <a href="http://www.webreference.com/programming/javascript/jf/column12/index.html">How to Develop WebApps with Ajax, Pt. 1</a></li>
<li>- <a href="http://gwt.components.googlepages.com/auto-completiontextbox">GWT Autocompleting Textbox</a></li>
</ul>
<h3 class="sub-title">10. <a href="http://www.devsnippets.com/">DevSnippets</a></h3>
<div class="img-post"><a href="http://ajax.solutoire.com/"><img src="http://www.qianduan.net/wp-content/uploads/2008/10/045733vp4.jpg" alt="Ajax Examples" /></a></div>
<p>DevSnippets的终极目标是分类收集网络中的巨量的代码片段(Ajax, JavaScript 和 CSS)整理为整洁和方便的导航页面。 用户可以提交他们收藏的ajax和javascript实例并可以对别人的代码片段进行评级。</p>
<h4>Ajax/Javascript 实例</h4>
<ul class="post">
<li>- <a href="http://devsnippets.com/design-elements/jqir-jquery-image-replacemen.html">jQIR &#8211; jQuery 图片置换</a></li>
<li>- <a href="http://devsnippets.com/design-elements/the-ajax-suite-10-2.html">The Ajax Suite</a></li>
</ul>
<p>本文翻译自：</p>
<p><a href="http://devsnippets.com/article/10-best-sources-of-ajaxjavascript-examples-and-demos.html" target="_blank">http://devsnippets.com/article/10-best-sources-of-ajaxjavascript-examples-and-demos.html</a><br />
大致翻译了一下，有些地方没有翻译，其实很多地方，比如演示页面，基本是不用翻译的，看英文更容易理解点儿。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.qianduan.net/10-best-ajax-javascript-examples-and-demonstration-site.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用Javascript修正12个常见的浏览器问题</title>
		<link>http://www.qianduan.net/javascript-amended-with-12-common-browser-issues.html</link>
		<comments>http://www.qianduan.net/javascript-amended-with-12-common-browser-issues.html#comments</comments>
		<pubDate>Fri, 17 Oct 2008 07:46:25 +0000</pubDate>
		<dc:creator>神飞</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[浏览器]]></category>

		<guid isPermaLink="false">http://www.qianduan.net/?p=52</guid>
		<description><![CDATA[我们提倡尽可能使用CSS，而且我们常常能做到这一点。现代浏览器有很好的CSS支持-这无疑足够好让你使用CSS来控制布局和版面设计。但是有时候，某些网页元素在不同的浏览器会出现不同。 如... ]]></description>
			<content:encoded><![CDATA[<p>我们提倡尽可能使用CSS，而且我们常常能做到这一点。现代浏览器有很好的CSS支持-这无疑足够好让你使用CSS来控制布局和版面设计。但是有时候，某些网页元素在不同的浏览器会出现不同。</p>
<p>如果你不知道原因，不要过于担心，请研究CSS规则并查看这篇文章：<a href="http://www.qianduan.net/?p=85" target="_blank">使用CSS来修正一切： 20 +常见错误和修复</a>。</p>
<p>如果这些也无效，您可以通过下面列出的12个javascript解决方案修复它，这样您的网页看起来就能跨越所有浏览器了！</p>
<p>在本文中，我们会揭开你在开发web应用是可能会遇到的<strong>12个最常见</strong>的<strong>CSS问题</strong>的javascript解决方案。<span id="more-52"></span></p>
<h3 class="title">1. 自动匹配高度</h3>
<p><img src="http://www.qianduan.net/wp-content/uploads/2008/10/07461890t.jpg" alt="jQuery Plugins" /></p>
<hr />自从我们抛弃了基于Table的页面布局后，创建同等高度栏目或内容盒子的视觉效果已然是一个挑战。</p>
<h5 class="title">1.1 <a href="http://www.filamentgroup.com/lab/setting_equal_heights_with_jquery/">用jQuery设置匹配高度</a></h5>
<p>这个jQuery插件在同一个容器里“平衡”盒子的高度并创造一个简介的网格——几乎从可用性和性能的角度使用简单的JavaScript替代： <strong>equalHeights()函数</strong>测定一个容器里的所有同级元素同容器的高度，然后设置每个元素的最低高度为最高的元素的高度。</p>
<h5 class="title">如何工作</h5>
<p>equalHeights()通过循环测定指定元素的最高级别的子节点，然后设置他们的最小高度值为最高的元素的高度。</p>
<ul class="qd-star">
<li>Demo<a href="http://www.filamentgroup.com/examples/equalHeights/">here</a>.</li>
</ul>
<h5 class="title">1.2 <a href="http://spindrop.us/2007/05/22/equal-height-columns-with-jquery/">用jQuery匹配栏目高度</a></h5>
<p>jQuery的另一个可以使盒子的高度相等的插件</p>
<div class="qd-highlighter">
<ol class="dp-c">
<li class="alt"><span><span>$(</span><span class="string">&#8220;#col1, #col2&#8243;</span><span>).equalizeCols(); </span></span></li>
</ol>
</div>
<p>将如你所想的那样匹配高度</p>
<div class="qd-highlighter">
<ol class="dp-c">
<li class="alt"><span><span>$(</span><span class="string">&#8220;#col1, #col2&#8243;</span><span>).equalizeCols(</span><span class="string">&#8220;p,p&#8221;</span><span>); </span></span></li>
</ol>
</div>
<pre class="javascript">匹配这两卷，并在#col1或#col2(短的那个)里的P标签后面添加空白.</pre>
<h3 class="title">2. IE6 PNG透明支持</h3>
<p>IE6以下的版本不支持png透明。使用hack，IE 5.5和6也已经可以支持，但hack并不理想的且难以使用。让我们来看看我们能做些什么来支持IE6用户 ，同时为网站的大多数访客带来最佳的透明效果。</p>
<h5 class="title">2.1 <a href="http://dean.edwards.name/weblog/2008/01/ie7-2/">强制IE6支持透明</a></h5>
<p>IE7的是一个Dean Edwards建立的JavaScript库，以强迫MSIE(IE6,IE5)表现的像一个兼容标准的浏览器。它修复许多CSS问题并使透明PNG在IE6和IE5下正常工作，它还允许高级的CSS选择器。</p>
<ul class="qd-star">
<li>Demo<a href="http://ie7-js.googlecode.com/svn/test/index.html">here</a>.</li>
<li>下载源文件<a href="http://code.google.com/p/ie7-js/">here</a></li>
</ul>
<h5 class="title">2.2. <a href="http://plugins.jquery.com/project/iFixPng2">改良iFixPng</a></h5>
<p><img src="http://www.qianduan.net/wp-content/uploads/2008/10/074619axu.jpg" alt="png fix" /></p>
<hr />修正IE6及以下的PNG图片的问题，IMG标签和CSS背景图片都可以。这个插件是对原始<a href="http://plugins.jquery.com/project/ifixpng">iFixPng插件</a>的一种改进。特点包括：图像或有背景图片的标签，现在支持background-position，其中包括IE浏览器的绝对定位的修正。(bottom: -1px || bottom: 0px)</p>
<ul class="qd-star">
<li>Demo<a href="http://www.yereth.nl/bgpos.html">here</a>.</li>
<li>下载源文件<a href="http://plugins.jquery.com/files/jquery.ifixpng2.js.zip">here</a></li>
</ul>
<h3 class="title">3. <a href="http://www.abeautifulsite.net/notebook/29">用Javascript改变class</a></h3>
<p><img src="http://www.qianduan.net/wp-content/uploads/2008/10/074620h6l.jpg" alt="javascript to fix css issues" /></p>
<hr />这是一个方便的JavaScript函数，可以在当前的文件的任何元素的class由oldClass改为newClass。这是特别有用的快速的利用CSS而不是用编码改变风格。</p>
<div class="qd-highlighter">
<ol class="dp-c">
<li class="alt"><span><span class="keyword">function</span><span> changeClass(oldClass, newClass) { </span></span></li>
<li><span> <span class="keyword">var</span><span> elements = document.getElementsByTagName(</span><span class="string">&#8220;*&#8221;</span><span>); </span></span></li>
<li class="alt"><span> <span class="keyword">for</span><span>( i = 0; i &lt; elements.length; i++ ) { </span></span></li>
<li><span> <span class="keyword">if</span><span>( elements[i].className == oldClass ) elements[i].className = newClass; </span></span></li>
<li class="alt"><span> } </span></li>
<li><span>} </span></li>
</ol>
</div>
<ul class="qd-star">
<li>Demo<a href="http://www.abeautifulsite.net/notebook_files/29/changeClass.htm">here</a>.</li>
<li>下载源文件<a href="http://code.google.com/p/ie7-js/">here</a></li>
</ul>
<h3 class="title">4. CSS浏览器选择器</h3>
<p>如果您可以只需键入一个特殊选择器，在这里您可以写一些JavaScript ，设置一个Class在基于当前的浏览器的名字的标签会怎么样？</p>
<p><img src="http://www.qianduan.net/wp-content/uploads/2008/10/0746219e7.jpg" alt="javascript to fix css issues" /></p>
<hr />
<h5 class="title">4.1 <a href="http://github.com/rafaelp/css_browser_selector/tree/master">CSS Browser</a></h5>
<p>这是一个非常小的javascript只有一行，而且不到1kb，它允许CSS选择器。它让您可以为每个操作系统和每个浏览器写具体的CSS代码。你可以写一些JavaScript ，设置Class的名字，也就是说，内容根据当前的浏览器。</p>
<ul class="qd-star">
<li>Demo<a href="http://www.abeautifulsite.net/notebook_files/29/changeClass.htm">here</a>.</li>
<li>下载源文件<a href="http://github.com/rafaelp/css_browser_selector/tree/master/css_browser_selector.js">here</a></li>
</ul>
<h5 class="title"><a href="http://agachi.name/weblog/archives/2006/07/22/avoiding-css-hacks-using-javascript.htm">jQuery 浏览器选择器</a></h5>
<p>这里有另外一个基于jQuery的非常简单的处理浏览器选择器的方法，你需要做的只是加载jQuery库文件，并添加下面的一块儿代码。</p>
<div class="qd-highlighter">
<ol class="dp-c">
<li class="alt"><span><span>$(document).ready(</span><span class="keyword">function</span><span>(){ </span></span></li>
<li><span>$(<span class="string">&#8216;html&#8217;</span><span>).addClass($.browser); </span></span></li>
<li class="alt"><span>}); </span></li>
</ol>
</div>
<p>现在你可以准备你的样式，如.msie,.mozilla, .opera, .safari 或其它目标浏览器。</p>
<ul class="qd-star">
<li>Demo<a href="http://agachi.name/tests/jquery/css-selectors/">here</a>.</li>
</ul>
<h3 class="title">5. 最小/最大 高度/宽度支持</h3>
<p>针对CSS min-width, min-height, max-width, max-height, border-*-width, margin, 和padding 属性，这里有一些很好的jQuery修正。</p>
<h5>5.1 <a href="http://davecardwell.co.uk/javascript/jquery/plugins/jquery-minmax/">jQMinMax</a></h5>
<p>这是一个为没有原声的支持min-width, max-width,min-height和max-height的地方添加支持的jQuery插件。</p>
<ul class="qd-star">
<li>Demo<a href="http://davecardwell.co.uk/javascript/jquery/plugins/jquery-minmax/">here</a>.</li>
<li>下载源文件<a href="http://davecardwell.co.uk/javascript/jquery/plugins/jquery-minmax/jqminmax-uncompressed.js">here</a></li>
</ul>
<h5 class="title">5.2 <a href="http://www.bramstein.com/projects/jsizes/">JSizes</a></h5>
<p>这个小jQuery插件为CSS min-width, min-height, max-width, max-height, border-*-width, margin, 和padding 属性添加支持。特别是他提供一种方法来确定一个元素在那里可见。由于所有的型号的方法返回数值，所以这些也可以安全的使用在严格的DOM元素方面</p>
<div class="qd-highlighter">
<ol class="dp-c">
<li class="alt"><span><span>jQuery(</span><span class="keyword">function</span><span>($) { </span></span></li>
<li><span> <span class="keyword">var</span><span> myDiv = $(</span><span class="string">&#8216;#myDiv&#8217;</span><span>); </span></span></li>
<li class="alt"><span> </span></li>
<li><span> <span class="comment">// set margin-top to 100px and margin-bottom to 10em</span><span> </span></span></li>
<li class="alt"><span> myDiv.margin({top: 100, bottom: <span class="string">&#8217;10em&#8217;</span><span>}); </span></span></li>
<li><span> </span></li>
<li class="alt"><span> <span class="comment">// displays the size of the top border in pixels</span><span> </span></span></li>
<li><span> alert(myDiv.border().top); </span></li>
<li class="alt"><span> </span></li>
<li><span> <span class="comment">// displays true if the element is visible, false otherwise</span><span> </span></span></li>
<li class="alt"><span> alert(myDiv.isVisible()); </span></li>
<li><span> </span></li>
<li class="alt"><span> <span class="comment">// set padding-right to 10px and margin-left to 15px using chaining</span><span> </span></span></li>
<li><span> myDiv.padding({right: 10}).margin({left: 15}); </span></li>
<li class="alt"><span>}); </span></li>
</ol>
</div>
<ul class="qd-star">
<li>Demo<a href="http://davecardwell.co.uk/javascript/jquery/plugins/jquery-minmax/">here</a>.</li>
<li>下载源文件<a href="http://plugins.jquery.com/files/jquery.sizes.js_0.txt">here</a></li>
</ul>
<h3 class="title">6. 元素垂直/水平居中</h3>
<p>你可能之前遇到过这个问题：水平或垂直居中某个元素。垂直居中在CSS里面相当麻烦，特别是你想支持所有主流浏览器。</p>
<p><img src="http://www.qianduan.net/wp-content/uploads/2008/10/07462188g.jpg" alt="Center Elements Vertically and Horizontally" /></p>
<hr />
<h5 class="title">6.1 <a href="http://plugins.jquery.com/project/elementcenter">Center element plugin</a></h5>
<p>这个插件可以使页面中的所有元素居中，垂直和水平居中采用css负margin的方法。</p>
<div class="qd-highlighter">
<ol class="dp-c">
<li class="alt"><span><span>$(</span><span class="string">&#8220;element&#8221;</span><span>).center(); </span><span class="comment">//vertical and horizontal</span><span> </span></span></li>
<li><span>$(<span class="string">&#8220;element&#8221;</span><span>).center({ </span></span></li>
<li class="alt"><span>horizontal: <span class="keyword">false</span><span> </span><span class="comment">// only vertical</span><span> </span></span></li>
<li><span>}); </span></li>
</ol>
</div>
<ul class="qd-star">
<li>Demo<a href="http://www.alexandremagno.net/jquery/plugins/center/">here</a>.</li>
<li>下载源文件<a href="http://plugins.jquery.com/files/jquery.include.js.txt">here</a></li>
</ul>
<h5 class="title">6.2 <a href="http://www.detacheddesigns.com/blog/blogSpecific.aspx?BlogId=101"> 我是怎么把一个元素垂直居中的?</a></h5>
<p>在这个视频教程里， Jeffrey Jordan Way将为你展示如何使用jQuery的力量结合CSS在你的浏览器里面使一个图片垂直居中.</p>
<h3 class="title">7. 在IE里使用Q标签</h3>
<p>人们期望使用的Q标签而不是blockquote标签来显示引号。然而IE/Win不支持Q标签，因为这一点，大部分网站的作者选择不使用Q标签。</p>
<h5 class="title">7.1 <a href="http://plugins.jquery.com/project/QinIE">QinIE</a></h5>
<p>当你在你的文件的头部添加这个脚本在IE浏览器里自动扫描的网页Q的标记，并正确的显示它们（包括嵌套引用） 。当(如果)IE浏览器将来支持Q标签，这个插件将会添加浏览器版本检查。</p>
<ul class="qd-star">
<li>下载源文件<a href="http://plugins.jquery.com/files/jquery.QinIE.js.txt">here</a></li>
</ul>
<h3 class="title">8. <a href="http://newism.com.au/blog/post/58/bigtarget-js-increasing-the-size-of-clickable-targets/">增加点击目标的大小和获得更多的响应转换</a></h3>
<p><img src="http://www.qianduan.net/wp-content/uploads/2008/10/074623faa.jpg" alt="jQuery Plugins" /></p>
<hr />通过把你的所有内容放到一个可点击的标签来和单调的“read more&#8230;”链接说拜拜吧。</p>
<ul class="qd-star">
<li>下载源文件<a href="http://newism.com.au/blog-assets/58/jquery.bigtarget.1.0.1.js">here</a></li>
</ul>
<h3 class="title">9. <a href="http://www.appelsiini.net/projects/lazyload">Lazy loader</a></h3>
<p>Lazy loader 是一个jQuery。它可以延迟加载页面里面的图片. 在用户浏览视界(页面中可见部分)以外的图片之前，它将不会被加载。这和<a href="http://www.appelsiini.net/2007/6/sequentially-preloading-images">image preloading</a>的作用正好相反.</p>
<ul class="qd-star">
<li>Demo<a href="http://www.appelsiini.net/projects/lazyload/enabled.html">here</a>.</li>
<li>下载源文件<a href="http://www.appelsiini.net/download/jquery.lazyload.js">here</a></li>
</ul>
<h3 class="title">10. <a href="http://plugins.jquery.com/project/bgiframe">bgiframe</a></h3>
<p>轻松的解决IE下的z-index的问题。</p>
<p><img src="http://www.qianduan.net/wp-content/uploads/2008/10/07462413f.jpg" alt="IE z-index" /></p>
<hr />
<ul class="qd-star">
<li>Demo<a href="http://brandonaaron.net/jquery/plugins/bgiframe/test/">here</a>.</li>
<li>下载源文件<a href="http://plugins.jquery.com/files/bgiframe_2.1.1.zip">here</a></li>
</ul>
<h3 class="title">11. <a href="http://odyniec.net/projects/iefixbuttons/">ieFixButtons</a></h3>
<p>ieFixButtons 是一个修正IE6和7的&lt;button&gt;标签的bug的jquery插件。</p>
<ul class="qd-star">
<li>Demo <a href="http://odyniec.net/projects/iefixbuttons/test.php">here</a>.</li>
<li>下载源文件<a href="http://plugins.jquery.com/files/iefixbuttons-0.3.zip">here</a></li>
</ul>
<h3 class="title">12. <a href="http://remysharp.com/2008/01/21/fixing-ie-overflow-problem/">溢出(overflow)修正</a></h3>
<p>修正ie下的水平溢出。IE在溢出的元素里面显示一个滚动条，特别是如果元素里面只有一行，滚动条就会遮住这行内容。这个插件通过修改padding来修正这个问题。</p>
<p><img src="http://www.qianduan.net/wp-content/uploads/2008/10/074625abe.jpg" alt="IE z-index" /></p>
<hr />
<ul class="qd-star">
<li>Demo <a href="http://remysharp.com/demo/overflow.html">here</a>.</li>
<li>下载源文件<a href="http://plugins.jquery.com/files/jquery.fixoverflow.js.txt">here</a></li>
</ul>
<p>本文翻译自：<a href="http://www.noupe.com/css/using-javascript-to-fix-12-common-browser-headaches.html" target="_blank">http://www.noupe.com/css/using-javascript-to-fix-12-common-browser-headaches.html</a><br />
转载请注明来源，谢谢。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.qianduan.net/javascript-amended-with-12-common-browser-issues.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

