<?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>LAVA WORLD &#187; js</title>
	<atom:link href="http://www.vpnall.com/tag/js/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.vpnall.com</link>
	<description>又一个森林Q群:52130297(IT聊天群)</description>
	<lastBuildDate>Fri, 03 Sep 2010 06:42:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>转 在浏览器右键添加自定义菜单</title>
		<link>http://www.vpnall.com/2010/04/%e8%bd%ac-%e5%9c%a8%e6%b5%8f%e8%a7%88%e5%99%a8%e5%8f%b3%e9%94%ae%e6%b7%bb%e5%8a%a0%e8%87%aa%e5%ae%9a%e4%b9%89%e8%8f%9c%e5%8d%95/</link>
		<comments>http://www.vpnall.com/2010/04/%e8%bd%ac-%e5%9c%a8%e6%b5%8f%e8%a7%88%e5%99%a8%e5%8f%b3%e9%94%ae%e6%b7%bb%e5%8a%a0%e8%87%aa%e5%ae%9a%e4%b9%89%e8%8f%9c%e5%8d%95/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 14:52:43 +0000</pubDate>
		<dc:creator>lava</dc:creator>
				<category><![CDATA[代码]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[右键]]></category>
		<category><![CDATA[注册表]]></category>
		<category><![CDATA[浏览器]]></category>
		<category><![CDATA[菜单]]></category>

		<guid isPermaLink="false">http://www.vpnall.com/?p=748</guid>
		<description><![CDATA[其实就是类似当安装完 Flashget 后 Internet Explorer 的右键多了“使用网际快车下载”的选项一样，现在我们的需求是：当我们在图片右键时出现“复制图像地址”的选项。
其实很简单，先把下列... ]]></description>
			<content:encoded><![CDATA[<p>其实就是类似当安装完 Flashget 后 Internet Explorer 的右键多了“使用网际快车下载”的选项一样，现在我们的需求是：当我们在图片右键时出现“复制图像地址”的选项。</p>
<p>其实很简单，先把下列代码存为 abc.reg 并导入：</p>
<p>Windows Registry Editor Version 5.00</p>
<p>[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\复制图像地址(&amp;Z)]<br />
@=&#8221;C:\\CopyImageUrl.htm&#8221;<br />
&#8220;contexts&#8221;=dword:00000002</p>
<p>并把下列代码存为 C:\CopyImageUrl.htm：</p>
<p>&lt;script language=&#8221;javascript&#8221; defer&gt;<br />
var Elem=external.menuArguments.event.srcElement;<br />
var imgUrl=&#8221;;<br />
if(Elem.tagName==&#8217;IMG&#8217;) imgUrl=Elem.src;<br />
else if(Elem.tagName==&#8217;A'){<br />
var cElem=Elem.children;<br />
if(cElem.length){<br />
for(i=0; i&lt;=cElem.length-1; i++){<br />
if(cElem[i].tagName==&#8217;IMG&#8217;) imgUrl=cElem[i].src;<br />
break;<br />
}<br />
}<br />
}<br />
if(imgUrl) clipboardData.setData(&#8216;text&#8217;,imgUrl)<br />
&lt;/script&gt;</p>
<p>重启你的浏览器就可以用了。</p>
<p>其他不转了,看原文:</p>
<p><a href="http://www.playes.net/Blog/436.asp">http://www.playes.net/Blog/436.asp</a></p>

	标签：<a href="http://www.vpnall.com/tag/ie/" title="ie" rel="tag">ie</a>, <a href="http://www.vpnall.com/tag/js/" title="js" rel="tag">js</a>, <a href="http://www.vpnall.com/tag/%e5%8f%b3%e9%94%ae/" title="右键" rel="tag">右键</a>, <a href="http://www.vpnall.com/tag/%e6%b3%a8%e5%86%8c%e8%a1%a8/" title="注册表" rel="tag">注册表</a>, <a href="http://www.vpnall.com/tag/%e6%b5%8f%e8%a7%88%e5%99%a8/" title="浏览器" rel="tag">浏览器</a>, <a href="http://www.vpnall.com/tag/%e8%8f%9c%e5%8d%95/" title="菜单" rel="tag">菜单</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.vpnall.com/2009/09/%e9%be%99%e5%8d%9aajax%e6%a1%86%e6%9e%b6/" title="龙博AJAX框架 (2009-09-08)">龙博AJAX框架</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/01/disable-a-button-in-a-jquery-dialog-from-a-function/" title="用函数使JQuery ui dialog的按钮是否可用 (2010-01-29)">用函数使JQuery ui dialog的按钮是否可用</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/01/%e7%94%a8js%e7%9a%84json_decode%e8%a7%a3%e5%86%b3json%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98/" title="用js的json_decode解决JSON中文编码问题 (2010-01-26)">用js的json_decode解决JSON中文编码问题</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/06/%e6%95%b4%e7%90%86%e5%ae%9e%e7%94%a8javascript%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7/" title="整理实用JavaScript开发工具 (2009-06-24)">整理实用JavaScript开发工具</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/01/%e5%bc%ba%e7%83%88%e6%8e%a8%e8%8d%90chromeplus/" title="强烈推荐ChromePlus浏览器 (2010-01-09)">强烈推荐ChromePlus浏览器</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/05/%e4%b8%80%e6%97%a0%e6%95%8c%e7%9a%84jqueryui%e5%a4%9a%e7%ba%a7%e4%b8%8b%e6%8b%89%e8%8f%9c%e5%8d%95%e6%8f%92%e4%bb%b6jquery-menu/" title="一无敌的jqueryui多级下拉菜单插件jQuery Menu (2010-05-22)">一无敌的jqueryui多级下拉菜单插件jQuery Menu</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/10/javascript-refresh-page/" title="[转]利用javascript实现web页面刷新的方法 (2009-10-03)">[转]利用javascript实现web页面刷新的方法</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/%e8%bd%ac%e2%80%9d%e5%ae%8c%e7%be%8e%e2%80%9d%e8%b7%a8%e5%9f%9f/" title="[转]”完美”跨域 (2009-03-26)">[转]”完美”跨域</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.vpnall.com/2010/04/%e8%bd%ac-%e5%9c%a8%e6%b5%8f%e8%a7%88%e5%99%a8%e5%8f%b3%e9%94%ae%e6%b7%bb%e5%8a%a0%e8%87%aa%e5%ae%9a%e4%b9%89%e8%8f%9c%e5%8d%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用函数使JQuery ui dialog的按钮是否可用</title>
		<link>http://www.vpnall.com/2010/01/disable-a-button-in-a-jquery-dialog-from-a-function/</link>
		<comments>http://www.vpnall.com/2010/01/disable-a-button-in-a-jquery-dialog-from-a-function/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 15:16:33 +0000</pubDate>
		<dc:creator>lava</dc:creator>
				<category><![CDATA[代码]]></category>
		<category><![CDATA[dialog]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://www.vpnall.com/?p=628</guid>
		<description><![CDATA[有时需要使JQuery ui dialog的按钮暂时禁用,例如正在数据提交的时候避免用户重复点击按钮.这就需要一个函数把JQuery ui dialog里面的按钮disable起来.网上看了一下,再用firebug看看dialog的按钮.其实方... ]]></description>
			<content:encoded><![CDATA[<p>有时需要使JQuery ui dialog的按钮暂时禁用,例如正在数据提交的时候避免用户重复点击按钮.这就需要一个函数把JQuery ui dialog里面的按钮disable起来.网上看了一下,再用firebug看看dialog的按钮.其实方法还是比较简单.下面举个例子:</p>

<div class="wp_codebox"><table><tr id="p6282"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
</pre></td><td class="code" id="p628code2"><pre class="javascript" style="font-family:monospace;">	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#newdialog&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">dialog</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
		autoOpen<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
		height<span style="color: #339933;">:</span> <span style="color: #CC0000;">400</span><span style="color: #339933;">,</span>
		width<span style="color: #339933;">:</span> <span style="color: #CC0000;">380</span><span style="color: #339933;">,</span>
		modal<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
		buttons<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #3366CC;">'关闭'</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;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">dialog</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'close'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
			<span style="color: #3366CC;">'确定'</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>
				dlBtnEnable<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #006600; font-style: italic;">//把按钮禁用</span>
				<span style="color: #006600; font-style: italic;">//ajax提交数据</span>
				$.<span style="color: #660066;">ajax</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span><span style="color: #006600; font-style: italic;">//这里就省略了,不是重点</span>
				<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</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: #000066;">close</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;">//关闭窗口需要做的事情</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
		<span style="color: #000066;">open</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: #660066;">getJSON</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;test.php?id=&quot;</span><span style="color: #339933;">+</span>nowid<span style="color: #339933;">,</span>
				<span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>					
					<span style="color: #006600; font-style: italic;">//那数据来怎样....省略</span>
					dlBtnEnable<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #006600; font-style: italic;">//可以按钮</span>
			<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">//控制按钮是否可用的函数.</span>
<span style="color: #003366; font-weight: bold;">function</span> dlBtnEnable<span style="color: #009900;">&#40;</span>enable<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> dlgButton <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.ui-dialog-buttonpane button'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #006600; font-style: italic;">//喔喔,全选所有dialog的按钮,你也可以加些条件,选定指定窗口,不过我这里没必要.</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>enable<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        dlgButton.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'disabled'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        dlgButton.<span style="color: #660066;">removeClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'ui-state-disabled'</span><span style="color: #009900;">&#41;</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>
        dlgButton.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'disabled'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'disabled'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        dlgButton.<span style="color: #660066;">addClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'ui-state-disabled'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>


	标签：<a href="http://www.vpnall.com/tag/dialog/" title="dialog" rel="tag">dialog</a>, <a href="http://www.vpnall.com/tag/jquery/" title="jquery" rel="tag">jquery</a>, <a href="http://www.vpnall.com/tag/js/" title="js" rel="tag">js</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.vpnall.com/2009/03/jquery-ajax-introduction/" title="[转]jQuery Ajax 全解析 (2009-03-03)">[转]jQuery Ajax 全解析</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/%e5%8e%9f%e5%88%9b%e7%94%a8jquery%e5%81%9a%e4%ba%86%e4%b8%80%e4%b8%aa%e5%a4%8d%e5%88%b6%e6%b5%81%e9%87%8f%e7%9a%84%e4%b8%9c%e8%a5%bf/" title="[原创]用jquery做了一个复制流量的东西 (2009-03-28)">[原创]用jquery做了一个复制流量的东西</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/07/js%e5%ae%9e%e7%8e%b0%e9%a1%b5%e9%9d%a2%e7%84%a6%e7%82%b9%e8%ae%a1%e6%97%b6/" title="js实现页面焦点计时 (2009-07-27)">js实现页面焦点计时</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/05/jquery%e6%97%a5%e5%8e%86%e9%80%89%e6%8b%a9%e6%8f%92%e4%bb%b6datepicker-%e7%ae%80%e5%8d%95%e6%b1%89%e5%8c%96%e5%8f%8a%e5%ba%94%e7%94%a8%e5%ae%9e%e4%be%8b/" title="jquery日历选择插件datePicker 简单汉化及应用实例 (2009-05-22)">jquery日历选择插件datePicker 简单汉化及应用实例</a> (1)</li>
	<li><a href="http://www.vpnall.com/2010/01/jquery-1-3%e4%b8%ad%e6%96%b0%e5%a2%9e%e7%9a%84%e6%96%b9%e6%b3%95live%e7%9a%84%e5%ba%94%e7%94%a8/" title="jQuery 1.3中新增的方法live()的应用 (2010-01-29)">jQuery 1.3中新增的方法live()的应用</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/09/%e9%be%99%e5%8d%9aajax%e6%a1%86%e6%9e%b6/" title="龙博AJAX框架 (2009-09-08)">龙博AJAX框架</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/04/%e8%bd%ac-%e5%9c%a8%e6%b5%8f%e8%a7%88%e5%99%a8%e5%8f%b3%e9%94%ae%e6%b7%bb%e5%8a%a0%e8%87%aa%e5%ae%9a%e4%b9%89%e8%8f%9c%e5%8d%95/" title="转 在浏览器右键添加自定义菜单 (2010-04-27)">转 在浏览器右键添加自定义菜单</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/01/%e7%94%a8js%e7%9a%84json_decode%e8%a7%a3%e5%86%b3json%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98/" title="用js的json_decode解决JSON中文编码问题 (2010-01-26)">用js的json_decode解决JSON中文编码问题</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.vpnall.com/2010/01/disable-a-button-in-a-jquery-dialog-from-a-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery 1.3中新增的方法live()的应用</title>
		<link>http://www.vpnall.com/2010/01/jquery-1-3%e4%b8%ad%e6%96%b0%e5%a2%9e%e7%9a%84%e6%96%b9%e6%b3%95live%e7%9a%84%e5%ba%94%e7%94%a8/</link>
		<comments>http://www.vpnall.com/2010/01/jquery-1-3%e4%b8%ad%e6%96%b0%e5%a2%9e%e7%9a%84%e6%96%b9%e6%b3%95live%e7%9a%84%e5%ba%94%e7%94%a8/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 07:34:42 +0000</pubDate>
		<dc:creator>lava</dc:creator>
				<category><![CDATA[代码]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[live]]></category>

		<guid isPermaLink="false">http://www.vpnall.com/?p=625</guid>
		<description><![CDATA[最新写一个JS项目,其中经常需要动态新建一些元素,而且这些元素需要绑定事件.bind()绑定事件就有问题了,动态新建的元素需要重新绑定,感觉效率低和代码不够简洁,看了一些文档,发现了live()方... ]]></description>
			<content:encoded><![CDATA[<p>最新写一个JS项目,其中经常需要动态新建一些元素,而且这些元素需要绑定事件.bind()绑定事件就有问题了,动态新建的元素需要重新绑定,感觉效率低和代码不够简洁,看了一些文档,发现了live()方法很好解决这个问题.是jQuery 1.3之后增加的.</p>
<blockquote>
<div>jQuery 1.3中新增的方法。给所有当前以及将来会匹配的元素绑定一个事件处理函数（比如click事件）。也能绑定自定义事件。</div>
<div>
<p>目前支持 click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout,  keydown, keypress, keyup。<br />
还不支持 blur, focus, mouseenter, mouseleave, change,  submit<br />
与bind()不同的是，live()一次只能绑定一个事件。</p>
<p>这个方法跟传统的bind很像，区别在于用live来绑定事件会给所有当前以及将来在页面上的元素绑定事件(使用委派的方式)。比如说，如果你给页面上所有的li用live绑定了click事件。那么当在以后增加一个li到这个页面时，对于这个新增加的li，其click事件依然可用。而无需重新给这种新增加的元素绑定事件。</p>
<p>.live()与流行的liveQuery插件很像，但有以下几个主要区别：</p>
<ul>
<li>.live 目前只支持所有事件的子集，支持列表参考上面的说明。</li>
<li>.live 不支持liveQuery提供的“无事件”样式的回调函数。.live只能绑定事件处理函数。</li>
<li>.live 没有&#8221;setup&#8221;和&#8221;cleanup&#8221;的过程。因为所有的事件是委派而不是直接绑定在元素上的。</li>
</ul>
</div>
<p>要移除用live绑定的事件，请用die方法</p></blockquote>
<h2>示例</h2>
<p>点击生成的p依然据有同样的功能。</p>
<p><strong>HTML 代码:</strong></p>
<div>&lt;p&gt;Click me!&lt;/p&gt;</div>
<p><strong>jQuery 代码:</strong></p>
<div>$(&#8220;p&#8221;).live(&#8220;click&#8221;,  function(){<br />
$(this).after(&#8220;&lt;p&gt;Another  paragraph!&lt;/p&gt;&#8221;);<br />
});</div>

	标签：<a href="http://www.vpnall.com/tag/jquery/" title="jquery" rel="tag">jquery</a>, <a href="http://www.vpnall.com/tag/js/" title="js" rel="tag">js</a>, <a href="http://www.vpnall.com/tag/live/" title="live" rel="tag">live</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.vpnall.com/2010/01/disable-a-button-in-a-jquery-dialog-from-a-function/" title="用函数使JQuery ui dialog的按钮是否可用 (2010-01-29)">用函数使JQuery ui dialog的按钮是否可用</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/jquery-ajax-introduction/" title="[转]jQuery Ajax 全解析 (2009-03-03)">[转]jQuery Ajax 全解析</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/%e5%8e%9f%e5%88%9b%e7%94%a8jquery%e5%81%9a%e4%ba%86%e4%b8%80%e4%b8%aa%e5%a4%8d%e5%88%b6%e6%b5%81%e9%87%8f%e7%9a%84%e4%b8%9c%e8%a5%bf/" title="[原创]用jquery做了一个复制流量的东西 (2009-03-28)">[原创]用jquery做了一个复制流量的东西</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/07/js%e5%ae%9e%e7%8e%b0%e9%a1%b5%e9%9d%a2%e7%84%a6%e7%82%b9%e8%ae%a1%e6%97%b6/" title="js实现页面焦点计时 (2009-07-27)">js实现页面焦点计时</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/05/jquery%e6%97%a5%e5%8e%86%e9%80%89%e6%8b%a9%e6%8f%92%e4%bb%b6datepicker-%e7%ae%80%e5%8d%95%e6%b1%89%e5%8c%96%e5%8f%8a%e5%ba%94%e7%94%a8%e5%ae%9e%e4%be%8b/" title="jquery日历选择插件datePicker 简单汉化及应用实例 (2009-05-22)">jquery日历选择插件datePicker 简单汉化及应用实例</a> (1)</li>
	<li><a href="http://www.vpnall.com/2009/09/%e9%be%99%e5%8d%9aajax%e6%a1%86%e6%9e%b6/" title="龙博AJAX框架 (2009-09-08)">龙博AJAX框架</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/04/%e8%bd%ac-%e5%9c%a8%e6%b5%8f%e8%a7%88%e5%99%a8%e5%8f%b3%e9%94%ae%e6%b7%bb%e5%8a%a0%e8%87%aa%e5%ae%9a%e4%b9%89%e8%8f%9c%e5%8d%95/" title="转 在浏览器右键添加自定义菜单 (2010-04-27)">转 在浏览器右键添加自定义菜单</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/01/%e7%94%a8js%e7%9a%84json_decode%e8%a7%a3%e5%86%b3json%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98/" title="用js的json_decode解决JSON中文编码问题 (2010-01-26)">用js的json_decode解决JSON中文编码问题</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.vpnall.com/2010/01/jquery-1-3%e4%b8%ad%e6%96%b0%e5%a2%9e%e7%9a%84%e6%96%b9%e6%b3%95live%e7%9a%84%e5%ba%94%e7%94%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用js的json_decode解决JSON中文编码问题</title>
		<link>http://www.vpnall.com/2010/01/%e7%94%a8js%e7%9a%84json_decode%e8%a7%a3%e5%86%b3json%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98/</link>
		<comments>http://www.vpnall.com/2010/01/%e7%94%a8js%e7%9a%84json_decode%e8%a7%a3%e5%86%b3json%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 11:50:57 +0000</pubDate>
		<dc:creator>lava</dc:creator>
				<category><![CDATA[代码]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[json_decode]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.vpnall.com/?p=612</guid>
		<description><![CDATA[最近写个程序 用jquery读取PHP的json信息,一直没注意中文的问题,今天输出中文居然出现类似&#8221;\u6210\u529f&#8221;的字符,网上查了一下,因为我页面全部用utf8编码,不存在meta的问题.
最后找到一个js... ]]></description>
			<content:encoded><![CDATA[<p>最近写个程序 用jquery读取PHP的json信息,一直没注意中文的问题,今天输出中文居然出现类似&#8221;\u6210\u529f&#8221;的字符,网上查了一下,因为我页面全部用utf8编码,不存在meta的问题.</p>
<p>最后找到一个js版的json_decode,果然有效,贴一下代码</p>

<div class="wp_codebox"><table><tr id="p6124"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
</pre></td><td class="code" id="p612code4"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> json_decode <span style="color: #009900;">&#40;</span>str_json<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
    <span style="color: #003366; font-weight: bold;">var</span> json <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">window</span>.<span style="color: #660066;">JSON</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">typeof</span> json <span style="color: #339933;">===</span> <span style="color: #3366CC;">'object'</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000066; font-weight: bold;">typeof</span> json.<span style="color: #660066;">parse</span> <span style="color: #339933;">===</span> <span style="color: #3366CC;">'function'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000066; font-weight: bold;">return</span> json.<span style="color: #660066;">parse</span><span style="color: #009900;">&#40;</span>str_json<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span>err<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><span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span>err <span style="color: #000066; font-weight: bold;">instanceof</span> SyntaxError<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;">throw</span> <span style="color: #003366; font-weight: bold;">new</span> Error<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Unexpected error type in json_decode()'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
            <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">php_js</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">php_js</span> <span style="color: #339933;">||</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
            <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">php_js</span>.<span style="color: #660066;">last_error_json</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">4</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// usable by json_last_error()</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: #003366; font-weight: bold;">var</span> cx <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> j<span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> text <span style="color: #339933;">=</span> str_json<span style="color: #339933;">;</span>
    cx.<span style="color: #660066;">lastIndex</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>cx.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>text<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        text <span style="color: #339933;">=</span> text.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>cx<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>a<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #3366CC;">'<span style="color: #000099; font-weight: bold;">\\</span>u'</span> <span style="color: #339933;">+</span>
            <span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'0000'</span> <span style="color: #339933;">+</span> a.<span style="color: #660066;">charCodeAt</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">16</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">slice</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #CC0000;">4</span><span style="color: #009900;">&#41;</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: #009900;">&#125;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/^[\],:{}\s]*$/</span><span style="color: #009900;">&#41;</span>.
        <span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>text.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/\\(?:[&quot;\\\/bfnrt]|u[0-9a-fA-F]{4})/g</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'@'</span><span style="color: #009900;">&#41;</span>.
            <span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/&quot;[^&quot;\\\n\r]*&quot;|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">']'</span><span style="color: #009900;">&#41;</span>.
            <span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/(?:^|:|,)(?:\s*\[)+/g</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        j <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">eval</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'('</span> <span style="color: #339933;">+</span> text <span style="color: #339933;">+</span> <span style="color: #3366CC;">')'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
        <span style="color: #000066; font-weight: bold;">return</span> j<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">php_js</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">php_js</span> <span style="color: #339933;">||</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">php_js</span>.<span style="color: #660066;">last_error_json</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">4</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// usable by json_last_error()</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></pre></td></tr></table></div>

<p>原出处:http://phpjs.org/functions/json_decode:456</p>

	标签：<a href="http://www.vpnall.com/tag/ajax/" title="ajax" rel="tag">ajax</a>, <a href="http://www.vpnall.com/tag/javascript/" title="JavaScript" rel="tag">JavaScript</a>, <a href="http://www.vpnall.com/tag/js/" title="js" rel="tag">js</a>, <a href="http://www.vpnall.com/tag/json/" title="JSON" rel="tag">JSON</a>, <a href="http://www.vpnall.com/tag/json_decode/" title="json_decode" rel="tag">json_decode</a>, <a href="http://www.vpnall.com/tag/php/" title="php" rel="tag">php</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.vpnall.com/2009/03/40-stand-alone-javascript-libraries-for-specific-purposes2/" title="[转]40 个轻量级 JavaScript 库 （下） (2009-03-07)">[转]40 个轻量级 JavaScript 库 （下）</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/09/%e9%be%99%e5%8d%9aajax%e6%a1%86%e6%9e%b6/" title="龙博AJAX框架 (2009-09-08)">龙博AJAX框架</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/06/%e6%95%b4%e7%90%86%e5%ae%9e%e7%94%a8javascript%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7/" title="整理实用JavaScript开发工具 (2009-06-24)">整理实用JavaScript开发工具</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/use-php-ajax-crossdomainhttp-get/" title="利用PHP实现AJAX跨域HTTP GET (2009-03-12)">利用PHP实现AJAX跨域HTTP GET</a> (4)</li>
	<li><a href="http://www.vpnall.com/2009/10/javascript-refresh-page/" title="[转]利用javascript实现web页面刷新的方法 (2009-10-03)">[转]利用javascript实现web页面刷新的方法</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/jquery-ajax-introduction/" title="[转]jQuery Ajax 全解析 (2009-03-03)">[转]jQuery Ajax 全解析</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/10/%e8%bd%acjavascript%e6%8a%8a%e6%95%b0%e5%ad%97%e6%a0%bc%e5%bc%8f%e5%8c%96%e8%bd%ac%e6%8d%a2%e6%88%90%e8%b4%a7%e5%b8%81%e5%9e%8b/" title="[转]javascript把数字格式化转换成货币型 (2009-10-08)">[转]javascript把数字格式化转换成货币型</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/04/%e8%bd%ac25-%e4%b8%aa%e5%9c%a8-web-%e4%b8%ad%e5%b5%8c%e5%85%a5%e5%9b%be%e8%a1%a8%e7%9a%84%e5%85%8d%e8%b4%b9%e8%b5%84%e6%ba%90/" title="[转]25 个在 Web 中嵌入图表的免费资源 (2009-04-19)">[转]25 个在 Web 中嵌入图表的免费资源</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.vpnall.com/2010/01/%e7%94%a8js%e7%9a%84json_decode%e8%a7%a3%e5%86%b3json%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转]javascript把数字格式化转换成货币型</title>
		<link>http://www.vpnall.com/2009/10/%e8%bd%acjavascript%e6%8a%8a%e6%95%b0%e5%ad%97%e6%a0%bc%e5%bc%8f%e5%8c%96%e8%bd%ac%e6%8d%a2%e6%88%90%e8%b4%a7%e5%b8%81%e5%9e%8b/</link>
		<comments>http://www.vpnall.com/2009/10/%e8%bd%acjavascript%e6%8a%8a%e6%95%b0%e5%ad%97%e6%a0%bc%e5%bc%8f%e5%8c%96%e8%bd%ac%e6%8d%a2%e6%88%90%e8%b4%a7%e5%b8%81%e5%9e%8b/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 14:16:42 +0000</pubDate>
		<dc:creator>lava</dc:creator>
				<category><![CDATA[代码]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[数字]]></category>
		<category><![CDATA[货币型]]></category>

		<guid isPermaLink="false">http://www.vpnall.com/?p=535</guid>
		<description><![CDATA[最近做财务相关的程序,需要一个函数把数字格式化转换成货币类型,保留2位小数.网上抄来一个代码.
原文:http://www.juyimeng.com/javascript-number-format-currency.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
... ]]></description>
			<content:encoded><![CDATA[<p>最近做财务相关的程序,需要一个函数把数字格式化转换成货币类型,保留2位小数.网上抄来一个代码.<br />
原文:http://www.juyimeng.com/javascript-number-format-currency.html</p>

<div class="wp_codebox"><table><tr id="p5356"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
</pre></td><td class="code" id="p535code6"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> outputMoney<span style="color: #009900;">&#40;</span>number<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	number<span style="color: #339933;">=</span>number.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/\,/g</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>isNaN<span style="color: #009900;">&#40;</span>number<span style="color: #009900;">&#41;</span><span style="color: #339933;">||</span>number<span style="color: #339933;">==</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">;</span>
		number <span style="color: #339933;">=</span> Math.<span style="color: #660066;">round</span><span style="color: #009900;">&#40;</span>number<span style="color: #339933;">*</span><span style="color: #CC0000;">100</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">/</span><span style="color: #CC0000;">100</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>number<span style="color: #339933;">&lt;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #3366CC;">'-'</span><span style="color: #339933;">+</span>outputDollars<span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">abs</span><span style="color: #009900;">&#40;</span>number<span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> outputCents<span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">abs</span><span style="color: #009900;">&#40;</span>number<span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">else</span>
		<span style="color: #000066; font-weight: bold;">return</span> outputDollars<span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span>number<span style="color: #339933;">-</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> outputCents<span style="color: #009900;">&#40;</span>number <span style="color: #339933;">-</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #003366; font-weight: bold;">function</span> outputDollars<span style="color: #009900;">&#40;</span>number<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>number.<span style="color: #660066;">length</span><span style="color: #339933;">&lt;=</span> <span style="color: #CC0000;">3</span><span style="color: #009900;">&#41;</span>
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>number <span style="color: #339933;">==</span> <span style="color: #3366CC;">''</span> <span style="color: #339933;">?</span> <span style="color: #3366CC;">'0'</span> <span style="color: #339933;">:</span> number<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> mod <span style="color: #339933;">=</span> number.<span style="color: #660066;">length</span><span style="color: #339933;">%</span>3<span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> output <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>mod <span style="color: #339933;">==</span> <span style="color: #CC0000;">0</span> <span style="color: #339933;">?</span> <span style="color: #3366CC;">''</span> <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span>number.<span style="color: #660066;">substring</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>mod<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span> <span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span> Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span>number.<span style="color: #660066;">length</span><span style="color: #339933;">/</span><span style="color: #CC0000;">3</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span> i<span style="color: #339933;">++</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><span style="color: #009900;">&#40;</span>mod <span style="color: #339933;">==</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">==</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
		  output<span style="color: #339933;">+=</span> number.<span style="color: #660066;">substring</span><span style="color: #009900;">&#40;</span>mod<span style="color: #339933;">+</span><span style="color: #CC0000;">3</span><span style="color: #339933;">*</span>i<span style="color: #339933;">,</span>mod<span style="color: #339933;">+</span><span style="color: #CC0000;">3</span><span style="color: #339933;">*</span>i<span style="color: #339933;">+</span><span style="color: #CC0000;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		  <span style="color: #000066; font-weight: bold;">else</span>
		  output<span style="color: #339933;">+=</span> <span style="color: #3366CC;">','</span> <span style="color: #339933;">+</span> number.<span style="color: #660066;">substring</span><span style="color: #009900;">&#40;</span>mod<span style="color: #339933;">+</span><span style="color: #CC0000;">3</span><span style="color: #339933;">*</span>i<span style="color: #339933;">,</span>mod<span style="color: #339933;">+</span><span style="color: #CC0000;">3</span><span style="color: #339933;">*</span>i<span style="color: #339933;">+</span><span style="color: #CC0000;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>output<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #003366; font-weight: bold;">function</span> outputCents<span style="color: #009900;">&#40;</span>amount<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	amount <span style="color: #339933;">=</span> Math.<span style="color: #660066;">round</span><span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span>amount<span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span>amount<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span><span style="color: #CC0000;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>amount<span style="color: #339933;">&lt;</span><span style="color: #CC0000;">10</span> <span style="color: #339933;">?</span> <span style="color: #3366CC;">'.0'</span> <span style="color: #339933;">+</span> amount <span style="color: #339933;">:</span> <span style="color: #3366CC;">'.'</span> <span style="color: #339933;">+</span> amount<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>


	标签：<a href="http://www.vpnall.com/tag/javascript/" title="JavaScript" rel="tag">JavaScript</a>, <a href="http://www.vpnall.com/tag/js/" title="js" rel="tag">js</a>, <a href="http://www.vpnall.com/tag/%e6%95%b0%e5%ad%97/" title="数字" rel="tag">数字</a>, <a href="http://www.vpnall.com/tag/%e8%b4%a7%e5%b8%81%e5%9e%8b/" title="货币型" rel="tag">货币型</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.vpnall.com/2010/01/%e7%94%a8js%e7%9a%84json_decode%e8%a7%a3%e5%86%b3json%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98/" title="用js的json_decode解决JSON中文编码问题 (2010-01-26)">用js的json_decode解决JSON中文编码问题</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/06/%e6%95%b4%e7%90%86%e5%ae%9e%e7%94%a8javascript%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7/" title="整理实用JavaScript开发工具 (2009-06-24)">整理实用JavaScript开发工具</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/10/javascript-refresh-page/" title="[转]利用javascript实现web页面刷新的方法 (2009-10-03)">[转]利用javascript实现web页面刷新的方法</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/40-stand-alone-javascript-libraries-for-specific-purposes2/" title="[转]40 个轻量级 JavaScript 库 （下） (2009-03-07)">[转]40 个轻量级 JavaScript 库 （下）</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/07/js%e5%ae%9e%e7%8e%b0%e9%a1%b5%e9%9d%a2%e7%84%a6%e7%82%b9%e8%ae%a1%e6%97%b6/" title="js实现页面焦点计时 (2009-07-27)">js实现页面焦点计时</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/07/flash-as3%e4%b8%8ejavascript%e7%9b%b8%e4%ba%92%e9%80%9a%e4%bf%a1%e4%be%8b%e5%ad%90/" title="flash AS3与javascript相互通信(例子) (2009-07-19)">flash AS3与javascript相互通信(例子)</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/09/%e9%be%99%e5%8d%9aajax%e6%a1%86%e6%9e%b6/" title="龙博AJAX框架 (2009-09-08)">龙博AJAX框架</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/04/%e8%bd%ac-%e5%9c%a8%e6%b5%8f%e8%a7%88%e5%99%a8%e5%8f%b3%e9%94%ae%e6%b7%bb%e5%8a%a0%e8%87%aa%e5%ae%9a%e4%b9%89%e8%8f%9c%e5%8d%95/" title="转 在浏览器右键添加自定义菜单 (2010-04-27)">转 在浏览器右键添加自定义菜单</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.vpnall.com/2009/10/%e8%bd%acjavascript%e6%8a%8a%e6%95%b0%e5%ad%97%e6%a0%bc%e5%bc%8f%e5%8c%96%e8%bd%ac%e6%8d%a2%e6%88%90%e8%b4%a7%e5%b8%81%e5%9e%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转]利用javascript实现web页面刷新的方法</title>
		<link>http://www.vpnall.com/2009/10/javascript-refresh-page/</link>
		<comments>http://www.vpnall.com/2009/10/javascript-refresh-page/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 00:06:58 +0000</pubDate>
		<dc:creator>lava</dc:creator>
				<category><![CDATA[代码]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[刷新]]></category>

		<guid isPermaLink="false">http://www.vpnall.com/?p=522</guid>
		<description><![CDATA[经常用到的Javascript刷新页面的几种方法：
1 history.go(0)
2 location.reload()
3 location=location
4 location.assign(location)
5 document.execCommand(&#8216;Refresh&#8216;)
6 window.navigate(location)
7 location.replace(location)
8 document.... ]]></description>
			<content:encoded><![CDATA[<p>经常用到的<span style="color: #000000;">Javascript刷新页面的几种方法：<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">1</span><span style="color: #000000;"> history.go(</span><span style="color: #000000;">0</span><span style="color: #000000;">)<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">2</span><span style="color: #000000;"> location.reload()<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">3</span><span style="color: #000000;"> location</span><span style="color: #000000;">=</span><span style="color: #000000;">location<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">4</span><span style="color: #000000;"> location.assign(location)<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">5</span><span style="color: #000000;"> document.execCommand(</span><span style="color: #000000;">&#8216;</span><span style="color: #000000;">Refresh</span><span style="color: #000000;">&#8216;</span><span style="color: #000000;">)<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">6</span><span style="color: #000000;"> window.navigate(location)<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">7</span><span style="color: #000000;"> location.replace(location)<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">8</span><span style="color: #000000;"> document.URL</span><span style="color: #000000;">=</span><span style="color: #000000;">location.href</span></p>
<p><span style="color: #000000;">其实一种就够,习惯用location.reload()</span></p>
<p><span style="color: #000000;"><span style="color: #000000;">自动刷新页面的方法:<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">1</span><span style="color: #000000;">.页面自动刷新：把如下代码加入</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">区域中<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">&lt;</span><span style="color: #000000;">meta http</span><span style="color: #000000;">-</span><span style="color: #000000;">equiv</span><span style="color: #000000;">=</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;">refresh</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;"> content</span><span style="color: #000000;">=</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;">20</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />其中20指每隔20秒刷新一次页面.<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">2</span><span style="color: #000000;">.页面自动跳转：把如下代码加入</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">区域中<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">&lt;</span><span style="color: #000000;">meta http</span><span style="color: #000000;">-</span><span style="color: #000000;">equiv</span><span style="color: #000000;">=</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;">refresh</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;"> content</span><span style="color: #000000;">=</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;">20;url=http://www.wyxg.com</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />其中20指隔20秒后跳转到http:</span><span style="color: #008000;">//</span><span style="color: #008000;">www.wyxg.com页面</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">3</span><span style="color: #000000;">.页面自动刷新js版<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">&lt;</span><span style="color: #000000;">script language</span><span style="color: #000000;">=</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;">JavaScript</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff;">function</span><span style="color: #000000;"> myrefresh()<br />
<img id="Codehighlighter1_564_600_Open_Image" style="border: 0px initial initial;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_564_600_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_564_600_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_564_600_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" /></span><span id="Codehighlighter1_564_600_Open_Text"><span style="color: #000000;">{<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" /> window.location.reload();<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />}</span></span><span style="color: #000000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />setTimeout(</span><span style="color: #000000;">&#8216;</span><span style="color: #000000;">myrefresh()</span><span style="color: #000000;">&#8216;</span><span style="color: #000000;">,</span><span style="color: #000000;">1000</span><span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;">指定1秒刷新一次</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">&lt;</span><span style="color: #000000;">/</span><span style="color: #000000;">script&gt;</span></span></p>
<p><span style="color: #000000;"><span style="color: #000000;"><span style="color: #000000;">JS刷新框架的脚本语句<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #008000;">//</span><span style="color: #008000;">如何刷新包含该框架的页面用 </span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">&lt;</span><span style="color: #000000;">script language</span><span style="color: #000000;">=</span><span style="color: #000000;">JavaScript</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> parent.location.reload();<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">&lt;</span><span style="color: #000000;">/</span><span style="color: #000000;">script&gt; </span><span style="color: #000000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #008000;">//</span><span style="color: #008000;">子窗口刷新父窗口</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">&lt;</span><span style="color: #000000;">script language</span><span style="color: #000000;">=</span><span style="color: #000000;">JavaScript</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> self.opener.location.reload();<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">&lt;</span><span style="color: #000000;">/</span><span style="color: #000000;">script&gt;</span><span style="color: #000000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">(　或 </span><span style="color: #000000;">&lt;</span><span style="color: #000000;">a href</span><span style="color: #000000;">=</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;">javascript:opener.location.reload()</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">刷新</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">/</span><span style="color: #000000;">a&gt;   )</span><span style="color: #000000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #008000;">//</span><span style="color: #008000;">如何刷新另一个框架的页面用 </span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">&lt;</span><span style="color: #000000;">script language</span><span style="color: #000000;">=</span><span style="color: #000000;">JavaScript</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> parent.otherFrameID.location.reload();<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">&lt;</span><span style="color: #000000;">/</span><span style="color: #000000;">script&gt;</span><span style="color: #000000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />如果想关闭窗口时刷新或者想开窗时刷新的话，在</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">body</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">中调用以下语句即可。<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">&lt;</span><span style="color: #000000;">body onload</span><span style="color: #000000;">=</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;">opener.location.reload()</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"> 开窗时刷新<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">&lt;</span><span style="color: #000000;">body onUnload</span><span style="color: #000000;">=</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;">opener.location.reload()</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"> 关闭时刷新<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">&lt;</span><span style="color: #000000;">script language</span><span style="color: #000000;">=</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;">javascript</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />window.opener.document.location.reload()<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">&lt;</span><span style="color: #000000;">/</span><span style="color: #000000;">script&gt;</span></span></span></p>

	标签：<a href="http://www.vpnall.com/tag/javascript/" title="JavaScript" rel="tag">JavaScript</a>, <a href="http://www.vpnall.com/tag/js/" title="js" rel="tag">js</a>, <a href="http://www.vpnall.com/tag/%e5%88%b7%e6%96%b0/" title="刷新" rel="tag">刷新</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.vpnall.com/2010/01/%e7%94%a8js%e7%9a%84json_decode%e8%a7%a3%e5%86%b3json%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98/" title="用js的json_decode解决JSON中文编码问题 (2010-01-26)">用js的json_decode解决JSON中文编码问题</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/06/%e6%95%b4%e7%90%86%e5%ae%9e%e7%94%a8javascript%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7/" title="整理实用JavaScript开发工具 (2009-06-24)">整理实用JavaScript开发工具</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/10/%e8%bd%acjavascript%e6%8a%8a%e6%95%b0%e5%ad%97%e6%a0%bc%e5%bc%8f%e5%8c%96%e8%bd%ac%e6%8d%a2%e6%88%90%e8%b4%a7%e5%b8%81%e5%9e%8b/" title="[转]javascript把数字格式化转换成货币型 (2009-10-08)">[转]javascript把数字格式化转换成货币型</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/40-stand-alone-javascript-libraries-for-specific-purposes2/" title="[转]40 个轻量级 JavaScript 库 （下） (2009-03-07)">[转]40 个轻量级 JavaScript 库 （下）</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/07/js%e5%ae%9e%e7%8e%b0%e9%a1%b5%e9%9d%a2%e7%84%a6%e7%82%b9%e8%ae%a1%e6%97%b6/" title="js实现页面焦点计时 (2009-07-27)">js实现页面焦点计时</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/07/flash-as3%e4%b8%8ejavascript%e7%9b%b8%e4%ba%92%e9%80%9a%e4%bf%a1%e4%be%8b%e5%ad%90/" title="flash AS3与javascript相互通信(例子) (2009-07-19)">flash AS3与javascript相互通信(例子)</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/09/%e9%be%99%e5%8d%9aajax%e6%a1%86%e6%9e%b6/" title="龙博AJAX框架 (2009-09-08)">龙博AJAX框架</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/04/%e8%bd%ac-%e5%9c%a8%e6%b5%8f%e8%a7%88%e5%99%a8%e5%8f%b3%e9%94%ae%e6%b7%bb%e5%8a%a0%e8%87%aa%e5%ae%9a%e4%b9%89%e8%8f%9c%e5%8d%95/" title="转 在浏览器右键添加自定义菜单 (2010-04-27)">转 在浏览器右键添加自定义菜单</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.vpnall.com/2009/10/javascript-refresh-page/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>龙博AJAX框架</title>
		<link>http://www.vpnall.com/2009/09/%e9%be%99%e5%8d%9aajax%e6%a1%86%e6%9e%b6/</link>
		<comments>http://www.vpnall.com/2009/09/%e9%be%99%e5%8d%9aajax%e6%a1%86%e6%9e%b6/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 14:43:49 +0000</pubDate>
		<dc:creator>lava</dc:creator>
				<category><![CDATA[代码]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[框架]]></category>
		<category><![CDATA[龙博]]></category>

		<guid isPermaLink="false">http://www.vpnall.com/?p=459</guid>
		<description><![CDATA[今天看到个挺牛的东西,不多说,看demo:http://www.longboo.com/Samples/
一直没怎么看国内的js框架,发现国产的功能就是强大,先不看代码,看功能就觉得牛&#8230;
什么是龙博
龙博AJAX框架是一个类似于Extjs的... ]]></description>
			<content:encoded><![CDATA[<p>今天看到个挺牛的东西,不多说,看demo:<a href="http://www.longboo.com/Samples/">http://www.longboo.com/Samples/</a></p>
<p>一直没怎么看国内的js框架,发现国产的功能就是强大,先不看代码,看功能就觉得牛&#8230;</p>
<h3 style="font-weight: normal; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; color: #648cb4; font-family: 黑体, Verdana, Geneva, Arial, helvetica, sans-serif; font-size: 16px; padding: 0px;">什么是龙博</h3>
<p style="font-size: 13px; color: #818181; font-family: 黑体, Verdana, Geneva, Arial, helvetica, sans-serif;">龙博AJAX框架是一个类似于Extjs的国产AJAX图形界面框架，包含40个图形界面控件, 例如标签(Tabs)，窗口对话框(Dialog),树(Tree)，树型表格(TreeGrid)，时间线(TimeLine)等等；并带有所见即所得的界面设计器。</p>
<h3 style="font-weight: normal; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; color: #648cb4; font-family: 黑体, Verdana, Geneva, Arial, helvetica, sans-serif; font-size: 16px; padding: 0px;">我能用龙博干什么</h3>
<p style="font-size: 13px; color: #818181; font-family: 黑体, Verdana, Geneva, Arial, helvetica, sans-serif;">龙博控件可用于各种基于Web的应用开发，如进销存系统，信息管理系统。龙博可视化编辑器很容易扩展成基于Web的表单设计器，OA流程设计器，自动控制组态软件等等</p>
<ul>
<li>富客户端技术, 可以和任意后端技术(包括但不限于php, .Net, Java, python)或静态的HTML页面.</li>
<li>包含40多个图形界面控件, 例如标签(Tabs),<br />
窗口对话框(Dialog),树型表格(TreeGrid),时间线(TimeLine)等等.</li>
<li>多浏览器兼容, 包括IE6+, firefox1.5+, opera9+,<br />
safari3+ 和 Google Chrome.</li>
<li>大量的<a style="color: #648cb4; text-decoration: none;" href="http://www.longboo.com/API">API文档</a> 和示例.</li>
<li>不断更新的<a style="color: #648cb4; text-decoration: none;" href="http://www.longboo.com/CodeSnip">代码片段</a>供程序员参考.</li>
<li>极为方便的所见即所得的<a style="color: #648cb4; text-decoration: none;" href="http://www.longboo.com/VisualJS/UIBuilder.html">界面编辑器</a>. Web界面使用拖拽轻松搞定，大大降低开发时间.</li>
<li>和其他Ajax框架，如jQuery, prototype, mootools充分兼容.</li>
<li>源代码开放。在<a style="color: #648cb4; text-decoration: none;" href="http://www.gnu.org/licenses/lgpl-3.0-standalone.html" target="_blank">LGPL许可</a>下, 可免费应用于个人或商业目的.</li>
</ul>

	标签：<a href="http://www.vpnall.com/tag/ajax/" title="ajax" rel="tag">ajax</a>, <a href="http://www.vpnall.com/tag/js/" title="js" rel="tag">js</a>, <a href="http://www.vpnall.com/tag/%e6%a1%86%e6%9e%b6/" title="框架" rel="tag">框架</a>, <a href="http://www.vpnall.com/tag/%e9%be%99%e5%8d%9a/" title="龙博" rel="tag">龙博</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.vpnall.com/2010/01/%e7%94%a8js%e7%9a%84json_decode%e8%a7%a3%e5%86%b3json%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98/" title="用js的json_decode解决JSON中文编码问题 (2010-01-26)">用js的json_decode解决JSON中文编码问题</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/jquery-ajax-introduction/" title="[转]jQuery Ajax 全解析 (2009-03-03)">[转]jQuery Ajax 全解析</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/40-stand-alone-javascript-libraries-for-specific-purposes2/" title="[转]40 个轻量级 JavaScript 库 （下） (2009-03-07)">[转]40 个轻量级 JavaScript 库 （下）</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/04/%e8%bd%ac-%e5%9c%a8%e6%b5%8f%e8%a7%88%e5%99%a8%e5%8f%b3%e9%94%ae%e6%b7%bb%e5%8a%a0%e8%87%aa%e5%ae%9a%e4%b9%89%e8%8f%9c%e5%8d%95/" title="转 在浏览器右键添加自定义菜单 (2010-04-27)">转 在浏览器右键添加自定义菜单</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/01/disable-a-button-in-a-jquery-dialog-from-a-function/" title="用函数使JQuery ui dialog的按钮是否可用 (2010-01-29)">用函数使JQuery ui dialog的按钮是否可用</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/06/%e6%95%b4%e7%90%86%e5%ae%9e%e7%94%a8javascript%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7/" title="整理实用JavaScript开发工具 (2009-06-24)">整理实用JavaScript开发工具</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/use-php-ajax-crossdomainhttp-get/" title="利用PHP实现AJAX跨域HTTP GET (2009-03-12)">利用PHP实现AJAX跨域HTTP GET</a> (4)</li>
	<li><a href="http://www.vpnall.com/2009/10/javascript-refresh-page/" title="[转]利用javascript实现web页面刷新的方法 (2009-10-03)">[转]利用javascript实现web页面刷新的方法</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.vpnall.com/2009/09/%e9%be%99%e5%8d%9aajax%e6%a1%86%e6%9e%b6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>js实现页面焦点计时</title>
		<link>http://www.vpnall.com/2009/07/js%e5%ae%9e%e7%8e%b0%e9%a1%b5%e9%9d%a2%e7%84%a6%e7%82%b9%e8%ae%a1%e6%97%b6/</link>
		<comments>http://www.vpnall.com/2009/07/js%e5%ae%9e%e7%8e%b0%e9%a1%b5%e9%9d%a2%e7%84%a6%e7%82%b9%e8%ae%a1%e6%97%b6/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 04:46:42 +0000</pubDate>
		<dc:creator>lava</dc:creator>
				<category><![CDATA[代码]]></category>
		<category><![CDATA[blur]]></category>
		<category><![CDATA[focus]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[计时]]></category>

		<guid isPermaLink="false">http://www.vpnall.com/?p=373</guid>
		<description><![CDATA[最近需要做一个功能,就是需要记录用户在页面的时候,在焦点的时候,就是说打开了页面看这个页面的时候,打开了转到其他页面就停止计时,转到当前页面才开始&#8230;并且转换成00:00的格式..不需... ]]></description>
			<content:encoded><![CDATA[<p>最近需要做一个功能,就是需要记录用户在页面的时候,在焦点的时候,就是说打开了页面看这个页面的时候,打开了转到其他页面就停止计时,转到当前页面才开始&#8230;并且转换成00:00的格式..不需要太准确的时候,精确到秒就可以.<br />
为了方便,这里用到了jquery.<br />
关键点:<br />
1. focus和blur事件.<br />
2. setTimeout来计时.<br />
代码:</p>

<div class="wp_codebox"><table><tr id="p3738"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
</pre></td><td class="code" id="p373code8"><pre class="html" style="font-family:monospace;">&lt;script language=&quot;javascript&quot; src=&quot;js/jquery-1.3.2.min.js&quot;&gt;&lt;/script&gt;
&lt;script&gt;
var times=0;//计时
var timer = false;
$(document).ready(function(){
	timedCount();
});
$(window).focus(function(){
	timer = true;
});
$(window).blur( function () {
 	timer = false;
}); 
function timedCount(){
	if(timer){
		times = times+1;
		showTime(times);
	}
	setTimeout('timedCount()',1000);
}
function showTime(tt){
	if(tt&gt;59){
		mm = Math.floor(tt/60);
		if(mm&lt;10){
			mm = &quot;0&quot;+mm;
		}
	}else{
		mm=&quot;00&quot;;
	}
	ss = tt%60;
	if(ss&lt;10){
		ss = &quot;0&quot;+ss;
	}
	$('#timer').html(mm+&quot;:&quot;+ss);
}
&lt;/script&gt;
计时:&lt;span id=&quot;timer&quot;&gt;00:00&lt;/span&gt;</pre></td></tr></table></div>


	标签：<a href="http://www.vpnall.com/tag/blur/" title="blur" rel="tag">blur</a>, <a href="http://www.vpnall.com/tag/focus/" title="focus" rel="tag">focus</a>, <a href="http://www.vpnall.com/tag/javascript/" title="JavaScript" rel="tag">JavaScript</a>, <a href="http://www.vpnall.com/tag/jquery/" title="jquery" rel="tag">jquery</a>, <a href="http://www.vpnall.com/tag/js/" title="js" rel="tag">js</a>, <a href="http://www.vpnall.com/tag/%e8%ae%a1%e6%97%b6/" title="计时" rel="tag">计时</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.vpnall.com/2010/01/disable-a-button-in-a-jquery-dialog-from-a-function/" title="用函数使JQuery ui dialog的按钮是否可用 (2010-01-29)">用函数使JQuery ui dialog的按钮是否可用</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/01/%e7%94%a8js%e7%9a%84json_decode%e8%a7%a3%e5%86%b3json%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98/" title="用js的json_decode解决JSON中文编码问题 (2010-01-26)">用js的json_decode解决JSON中文编码问题</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/06/%e6%95%b4%e7%90%86%e5%ae%9e%e7%94%a8javascript%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7/" title="整理实用JavaScript开发工具 (2009-06-24)">整理实用JavaScript开发工具</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/10/javascript-refresh-page/" title="[转]利用javascript实现web页面刷新的方法 (2009-10-03)">[转]利用javascript实现web页面刷新的方法</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/jquery-ajax-introduction/" title="[转]jQuery Ajax 全解析 (2009-03-03)">[转]jQuery Ajax 全解析</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/10/%e8%bd%acjavascript%e6%8a%8a%e6%95%b0%e5%ad%97%e6%a0%bc%e5%bc%8f%e5%8c%96%e8%bd%ac%e6%8d%a2%e6%88%90%e8%b4%a7%e5%b8%81%e5%9e%8b/" title="[转]javascript把数字格式化转换成货币型 (2009-10-08)">[转]javascript把数字格式化转换成货币型</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/40-stand-alone-javascript-libraries-for-specific-purposes2/" title="[转]40 个轻量级 JavaScript 库 （下） (2009-03-07)">[转]40 个轻量级 JavaScript 库 （下）</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/%e5%8e%9f%e5%88%9b%e7%94%a8jquery%e5%81%9a%e4%ba%86%e4%b8%80%e4%b8%aa%e5%a4%8d%e5%88%b6%e6%b5%81%e9%87%8f%e7%9a%84%e4%b8%9c%e8%a5%bf/" title="[原创]用jquery做了一个复制流量的东西 (2009-03-28)">[原创]用jquery做了一个复制流量的东西</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.vpnall.com/2009/07/js%e5%ae%9e%e7%8e%b0%e9%a1%b5%e9%9d%a2%e7%84%a6%e7%82%b9%e8%ae%a1%e6%97%b6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>flash AS3与javascript相互通信(例子)</title>
		<link>http://www.vpnall.com/2009/07/flash-as3%e4%b8%8ejavascript%e7%9b%b8%e4%ba%92%e9%80%9a%e4%bf%a1%e4%be%8b%e5%ad%90/</link>
		<comments>http://www.vpnall.com/2009/07/flash-as3%e4%b8%8ejavascript%e7%9b%b8%e4%ba%92%e9%80%9a%e4%bf%a1%e4%be%8b%e5%ad%90/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 13:53:50 +0000</pubDate>
		<dc:creator>lava</dc:creator>
				<category><![CDATA[代码]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[通信]]></category>

		<guid isPermaLink="false">http://www.vpnall.com/?p=353</guid>
		<description><![CDATA[AS3与JavaScript之间的通讯用ExternalInterface .
ExternalInterface 类是外部 API，这是一个在 ActionScript 和 Flash Player  容器之间实现直接通信的应用程序编程接口，例如，包含 JavaScript 的 HTML 页。 Adobe 建议... ]]></description>
			<content:encoded><![CDATA[<p><span class="hilite1">AS3</span>与JavaScript之间的通讯用ExternalInterface .</p>
<blockquote><p>ExternalInterface 类是外部 API，这是一个在 ActionScript 和 Flash Player  容器之间实现直接通信的应用程序编程接口，例如，包含 JavaScript 的 HTML 页。 Adobe 建议使用 ExternalInterface 实现  JavaScript 与 ActionScript 之间的所有通信。</p></blockquote>
<p>详细官方帮助见:http://help.adobe.com/zh_CN/AS3LCR/Flash_10.0/flash/external/ExternalInterface.html</p>
<p>网上摘下来的例子:</p>
<p>在html中嵌入swf有两种方式，一种是用Flash CS3直接发布，还有一种就是大家都熟悉的swfobject。这里我没什么挑剔的，能解决问题就行。<br />
这个例子是flash调用js函数funcWaitingForFlash，执行funcWaitingForFlash函数时再回调flash的func，仅供参考。<br />
flash as3:</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick="linenumber(this)">
<li class="hl-firstline"><span>package</span><span> </span></li>
<li><span>{</span></li>
<li><span> </span><span>import</span><span> </span><span>flash</span><span>.</span><span>display</span><span>.*;</span></li>
<li><span> </span><span>import</span><span> </span><span>flash</span><span>.</span><span>external</span><span>.*;</span></li>
<li><span> </span><span>public</span><span> </span><span>class</span><span> </span><span>Main</span><span> </span><span>extends</span><span> </span><span>Sprite</span></li>
<li><span> </span><span>{</span></li>
<li><span> </span><span>public</span><span> </span><span>function</span><span> </span><span>Main</span><span>()</span><span>:</span><span>void</span></li>
<li><span> </span><span>{</span></li>
<li><span> </span><span>// &#8230;</span></li>
<li><span> </span><span>ExternalInterface</span><span>.</span><span>addCallback</span><span>(</span><span>&#8216;</span><span>flashFunc</span><span>&#8216;</span><span>, </span><span>func</span><span>)</span><span>;</span></li>
<li><span> </span><span>ExternalInterface</span><span>.</span><span>call</span><span>(</span><span>&#8216;</span><span>funcWaitingForFlash</span><span>&#8216;</span><span>)</span><span>;</span></li>
<li><span> </span><span>}</span></li>
<li><span> </span><span>private</span><span> </span><span>function</span><span> </span><span>func</span><span>(</span><span>str</span><span>:</span><span>String</span><span>)</span><span>:</span><span>void</span></li>
<li><span> </span><span>{</span></li>
<li><span> </span><span>// &#8230;</span></li>
<li><span> </span><span>}</span></li>
<li><span> </span><span>}</span></li>
<li><span>}</span></li>
</ol>
</div>
<p>js:</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick="linenumber(this)">
<li class="hl-firstline"><span>function</span><span> </span><span>callFlashFunc</span><span>(</span><span>str</span><span>)</span></li>
<li><span>{</span></li>
<li><span> </span><span>var</span><span> </span><span>obj</span><span> = </span><span>thisMovie</span><span>(</span><span>&#8216;</span><span>flashas3js</span><span>&#8216;</span><span>)</span><span>;</span></li>
<li><span> </span><span>// thisMovie函数在发布时会自动生成</span></li>
<li><span> </span><span>// 如果用swfobject则是</span></li>
<li><span> </span><span>// var obj = swfobject.getObjectById(&#8220;flashas3js&#8221;);</span></li>
<li><span> </span><span>if</span><span>(</span><span>obj</span><span>){</span></li>
<li><span> </span><span>obj</span><span>.</span><span>flashFunc</span><span>(</span><span>str</span><span>)</span><span>;</span></li>
<li><span> </span><span>}</span></li>
<li><span>}</span></li>
<li><span>function</span><span> </span><span>funcWaitingForFlash</span><span>()</span></li>
<li><span>{</span></li>
<li><span> </span><span>callFlashFunc</span><span>(</span><span>&#8216;</span><span>试试看</span><span>&#8216;</span><span>)</span><span>;</span></li>
<li><span>}</span></li>
</ol>
</div>

	标签：<a href="http://www.vpnall.com/tag/as3/" title="as3" rel="tag">as3</a>, <a href="http://www.vpnall.com/tag/flash/" title="flash" rel="tag">flash</a>, <a href="http://www.vpnall.com/tag/javascript/" title="JavaScript" rel="tag">JavaScript</a>, <a href="http://www.vpnall.com/tag/js/" title="js" rel="tag">js</a>, <a href="http://www.vpnall.com/tag/%e9%80%9a%e4%bf%a1/" title="通信" rel="tag">通信</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.vpnall.com/2010/01/%e7%94%a8js%e7%9a%84json_decode%e8%a7%a3%e5%86%b3json%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98/" title="用js的json_decode解决JSON中文编码问题 (2010-01-26)">用js的json_decode解决JSON中文编码问题</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/06/%e6%95%b4%e7%90%86%e5%ae%9e%e7%94%a8javascript%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7/" title="整理实用JavaScript开发工具 (2009-06-24)">整理实用JavaScript开发工具</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/10/javascript-refresh-page/" title="[转]利用javascript实现web页面刷新的方法 (2009-10-03)">[转]利用javascript实现web页面刷新的方法</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/10/%e8%bd%acjavascript%e6%8a%8a%e6%95%b0%e5%ad%97%e6%a0%bc%e5%bc%8f%e5%8c%96%e8%bd%ac%e6%8d%a2%e6%88%90%e8%b4%a7%e5%b8%81%e5%9e%8b/" title="[转]javascript把数字格式化转换成货币型 (2009-10-08)">[转]javascript把数字格式化转换成货币型</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/40-stand-alone-javascript-libraries-for-specific-purposes2/" title="[转]40 个轻量级 JavaScript 库 （下） (2009-03-07)">[转]40 个轻量级 JavaScript 库 （下）</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/04/%e8%bd%ac25-%e4%b8%aa%e5%9c%a8-web-%e4%b8%ad%e5%b5%8c%e5%85%a5%e5%9b%be%e8%a1%a8%e7%9a%84%e5%85%8d%e8%b4%b9%e8%b5%84%e6%ba%90/" title="[转]25 个在 Web 中嵌入图表的免费资源 (2009-04-19)">[转]25 个在 Web 中嵌入图表的免费资源</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/07/js%e5%ae%9e%e7%8e%b0%e9%a1%b5%e9%9d%a2%e7%84%a6%e7%82%b9%e8%ae%a1%e6%97%b6/" title="js实现页面焦点计时 (2009-07-27)">js实现页面焦点计时</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/05/as3%e6%8e%a5%e6%94%b6%e7%bd%91%e9%a1%b5%e5%8f%82%e6%95%b0%e7%9a%84%e6%96%b9%e6%b3%95/" title="AS3接收网页参数的方法 (2009-05-10)">AS3接收网页参数的方法</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.vpnall.com/2009/07/flash-as3%e4%b8%8ejavascript%e7%9b%b8%e4%ba%92%e9%80%9a%e4%bf%a1%e4%be%8b%e5%ad%90/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>整理实用JavaScript开发工具</title>
		<link>http://www.vpnall.com/2009/06/%e6%95%b4%e7%90%86%e5%ae%9e%e7%94%a8javascript%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7/</link>
		<comments>http://www.vpnall.com/2009/06/%e6%95%b4%e7%90%86%e5%ae%9e%e7%94%a8javascript%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 05:23:54 +0000</pubDate>
		<dc:creator>lava</dc:creator>
				<category><![CDATA[代码]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[工具]]></category>

		<guid isPermaLink="false">http://www.vpnall.com/?p=293</guid>
		<description><![CDATA[在 实用JavaScript开发工具列表 看到不少js的好用工具,平时我只用firebug来调试代码.采选一些我可能会用到的工具下来.
测试
JSLint –JavaScript的验证器
JSLint取得一个JavaScript源代码并对其扫描。如... ]]></description>
			<content:encoded><![CDATA[<p>在 <a href="http://www.wujianrong.com/archives/2009/06/javascript-22.html" target="_blank">实用JavaScript开发工具列表</a> 看到不少js的好用工具,平时我只用firebug来调试代码.采选一些我可能会用到的工具下来.</p>
<p><span><strong>测试</strong></span></p>
<p><span><span><a href="http://www.jslint.com/">JSLint –JavaScript的验证器</a></span></span></p>
<p><span>JSLint取得一个JavaScript源代码并对其扫描。如果发现问题，它送回信息描述问题状况及在源代码中的大概位置。问题不一定就出在句法上，不过常常正是这里出错。JSLint查看一些风格约定和结构问题，它证明不了程序是否正确。它只是提供了另一双眼睛来帮助发现问题。</span></p>
<p><em>测试还不如直接运行调试一下</em></p>
<p><strong>调试</strong></p>
<p><span><a href="http://getfirebug.com/" target="_blank"><span><span>Firebug</span></span></a></p>
<p><span>作为最受欢迎的网页开发程序工具，Firebug是Firefox的一个插件，可以用它在任何网页上现时编辑，调试和监控CSS, HTML, 和JavaScript。它提供给JavaScript登陆和调试控制台一些有用的功能如AJAX requests logging，JavaScript解释器，DOM explorer等等。</span><a href="http://getfirebug.com/lite.html" target="_blank"><span><span>Firebug Lite</span></span></a><span> 可以在IE, Opera, 和Safari上使用。</span></p>
<p><em>没得说非常好用.</em></p>
<p><em><strong><span style="font-style: normal;">HTTP监控</span></strong></p>
<p><a href="http://www.fiddler2.com/" target="_blank"><span style="font-style: normal;">Fiddler</span></a></p>
<p><span style="font-style: normal;">Fiddler是一种Web调试代理，它记录你的电脑和网络之间所有的HTTP(S)流量。可以用Fiddler检查所有HTTP(S)流量，设置断点，干涉进来或出去的数据。</span></p>
<p><a href="http://tamperdata.mozdev.org/" target="_blank"><span style="font-style: normal;">TamperData</span></a></p>
<p><span style="font-style: normal;">TamperData是一个追踪并修改http/https请求的Firefox扩展。可以用它做基于网络的应用程序的安全测试，追踪请求/回应。</span></p>
<p><a href="http://livehttpheaders.mozdev.org/" target="_blank"><span style="font-style: normal;">Live HTTP Headers</span></a></p>
<p><span style="font-style: normal;">可以在浏览的时候查看网页的HTTP headers。可以用Live HTTP Headers调试网页应用程序，找出远端网站使用的是那种网站服务器，或者查看远端网站发送的小数据文件。</span></p>
<p>常常会用到,有空一个个试试.我用smsniff,不过他什么都抓.适当过滤筛选一下会好点.做坏事必备(抓取数据,模拟提交等)</p>
<p><strong><span style="font-style: normal;">压缩</span></strong></p>
<p><a href="http://jscompress.com/" target="_blank"><span style="font-style: normal;">Online Javascript Compression Tool</span></a></p>
<p><span style="font-style: normal;">一个可以用一些压缩算法如</span><a href="http://www.crockford.com/javascript/jsmin.html" target="_blank"><span style="font-style: normal;">JSMin</span></a><span style="font-style: normal;"> 和 </span><a href="http://dean.edwards.name/packer/" target="_blank"><span style="font-style: normal;">Packer</span></a><span style="font-style: normal;">压缩JavaScript文件的在线JavaScript压缩器。压缩的JavaScript文件是生产环境中的理想文件，因为它们常常将文件大小减小30-90%。在很大程度上，文件尺寸的缩小是通过除去网页浏览者或访问者不需要的注释和多余的空格字符来实现的。</span></p>
<p><a href="http://scriptalizer.com/" target="_blank"><span style="font-style: normal;">Scriptalizer</span></a></p>
<p><span style="font-style: normal;">一个将多个JavaScript文件组合为一个文件的在线工具。</span></p>
<p><a href="http://dojotoolkit.org/docs/shrinksafe" target="_blank"><span style="font-style: normal;">Dojo ShrinkSafe</span></a></p>
<p><span style="font-style: normal;">一种命令行实用程序，允许你用浏览器缩小文件大小，从而缩短响应时间。Dojo压缩器不是建立在脆弱的规则表达式基础上的。它基于来自莫兹拉专案的JavaScript引擎。由于一个基于真正的parse stream，Dojo压缩器比基于规则表达式的工具可以更好体现代符（变量名等等）的环境。</span></p>
<p><a href="http://developer.yahoo.com/yui/compressor/" target="_blank"><span style="font-style: normal;">YUI Compressor</span></a></p>
<p><span style="font-style: normal;">The YUI Compressor是一种JavaScript压缩器。去除注释和空格之外，它还可以用最小可用变量名混淆局部变量。即使在使用‘eval’或‘with’之类构造（在这些情况下压缩并不合适），这种混淆也是安全的。与jsmin相比，它平均节省20%。</span></p>
<p>压缩也是常用的,当然online的最方便咯,YUI的看过几次觉得比较麻烦.</p>
<p><span style="font-style: normal;"><span><strong>格式化</strong></span></p>
<p><span><span><a href="http://jsbeautifier.org/">JavaScript代码美化工具</a></span></span></p>
<p><span>这个美化工具可处理散乱或压缩的JavaScript代码，不断对其进行快速的格式化并使其可读。</span></p>
<p><em>这是个好东西,怎么DW就没有呢&#8230;</em></p>
<p><span><span><strong>编辑程序&amp;集成开发环境</strong></span></p>
<p><a href="http://www.aptana.com/" target="_blank"><span><span>Aptana Studio</span></span></a></p>
<p><span>Aptana Studio是一个完整的网络开发环境。它提供有JavaScript代码自动完成和调试，HTML/CSS/JavaScript代码提示，以及对重要的Ajax类库的支持。Aptana Studio甚至给你页面上所有的，包括你自己的JavaScript提供代码提示。</span></p>
<p><a href="http://www.activestate.com/komodo_edit/" target="_blank"><span><span>Komodo Edit</span></span></a></p>
<p><span>Komodo Edit是一种免费开放的源编辑程序。它提供自动完成，调用提示，多种语言支持，语法高亮颜色显示，语法检查，Vi emulation，Emacs快捷键绑定等等功能。扩展Komodo Edit是其最实用的功能之一。你会发现各种对JavaScript开发者有用的扩展（如</span><a href="http://community.activestate.com/xpi/kjslint-jslint-komodo" target="_blank"><span><span>JSLint plugin for Komodo</span></span></a><span><span>, </span></span><a href="http://community.activestate.com/xpi/venkman-javascript-debugger" target="_blank"><span><span>Venkman JavaScript Debugger</span></span></a><span>，等等）。</span></p>
<p><a href="http://www.spket.com/" target="_blank"><span><span>Spket IDE</span></span></a></p>
<p><span>Spket IDE是JavaScript和XML开发功能强大的工具包。JavaScript, XUL/XBL and Yahoo! Widget开发功能强大的编辑器。JavaScript编辑器有代码完成，语法高亮显示和内容概要等功能，这些功能帮助开发者高效制作出有效的JavaScript代码。Spket IDE为非商业用途免费提供。</span></p>
<p><em>只试过Aptana ,最后还是DW算了,我还没那么高级.</em></p>
<p><span>他文中其他工具依然精彩..例如:<a href="http://code.google.com/apis/ajax/playground/" target="_blank">Google的 AJAX APIs Playground</a>,<a href="http://www.quirksmode.org/compatibility.html">QuirksMode – 相容性表</a>,<a href="http://www.jslab.dk/tools.regex.php" target="_blank"><span><span>JavaScript Regex Generator</span></span></a></span></p>
<p></span></p>
<p></span></p>
<p></em></p>
<p></span></p>

	标签：<a href="http://www.vpnall.com/tag/javascript/" title="JavaScript" rel="tag">JavaScript</a>, <a href="http://www.vpnall.com/tag/js/" title="js" rel="tag">js</a>, <a href="http://www.vpnall.com/tag/%e5%b7%a5%e5%85%b7/" title="工具" rel="tag">工具</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.vpnall.com/2010/01/%e7%94%a8js%e7%9a%84json_decode%e8%a7%a3%e5%86%b3json%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98/" title="用js的json_decode解决JSON中文编码问题 (2010-01-26)">用js的json_decode解决JSON中文编码问题</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/10/javascript-refresh-page/" title="[转]利用javascript实现web页面刷新的方法 (2009-10-03)">[转]利用javascript实现web页面刷新的方法</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/10/%e8%bd%acjavascript%e6%8a%8a%e6%95%b0%e5%ad%97%e6%a0%bc%e5%bc%8f%e5%8c%96%e8%bd%ac%e6%8d%a2%e6%88%90%e8%b4%a7%e5%b8%81%e5%9e%8b/" title="[转]javascript把数字格式化转换成货币型 (2009-10-08)">[转]javascript把数字格式化转换成货币型</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/40-stand-alone-javascript-libraries-for-specific-purposes2/" title="[转]40 个轻量级 JavaScript 库 （下） (2009-03-07)">[转]40 个轻量级 JavaScript 库 （下）</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/07/js%e5%ae%9e%e7%8e%b0%e9%a1%b5%e9%9d%a2%e7%84%a6%e7%82%b9%e8%ae%a1%e6%97%b6/" title="js实现页面焦点计时 (2009-07-27)">js实现页面焦点计时</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/07/flash-as3%e4%b8%8ejavascript%e7%9b%b8%e4%ba%92%e9%80%9a%e4%bf%a1%e4%be%8b%e5%ad%90/" title="flash AS3与javascript相互通信(例子) (2009-07-19)">flash AS3与javascript相互通信(例子)</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/09/%e9%be%99%e5%8d%9aajax%e6%a1%86%e6%9e%b6/" title="龙博AJAX框架 (2009-09-08)">龙博AJAX框架</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/04/%e8%bd%ac-%e5%9c%a8%e6%b5%8f%e8%a7%88%e5%99%a8%e5%8f%b3%e9%94%ae%e6%b7%bb%e5%8a%a0%e8%87%aa%e5%ae%9a%e4%b9%89%e8%8f%9c%e5%8d%95/" title="转 在浏览器右键添加自定义菜单 (2010-04-27)">转 在浏览器右键添加自定义菜单</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.vpnall.com/2009/06/%e6%95%b4%e7%90%86%e5%ae%9e%e7%94%a8javascript%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jquery日历选择插件datePicker 简单汉化及应用实例</title>
		<link>http://www.vpnall.com/2009/05/jquery%e6%97%a5%e5%8e%86%e9%80%89%e6%8b%a9%e6%8f%92%e4%bb%b6datepicker-%e7%ae%80%e5%8d%95%e6%b1%89%e5%8c%96%e5%8f%8a%e5%ba%94%e7%94%a8%e5%ae%9e%e4%be%8b/</link>
		<comments>http://www.vpnall.com/2009/05/jquery%e6%97%a5%e5%8e%86%e9%80%89%e6%8b%a9%e6%8f%92%e4%bb%b6datepicker-%e7%ae%80%e5%8d%95%e6%b1%89%e5%8c%96%e5%8f%8a%e5%ba%94%e7%94%a8%e5%ae%9e%e4%be%8b/#comments</comments>
		<pubDate>Fri, 22 May 2009 05:07:57 +0000</pubDate>
		<dc:creator>lava</dc:creator>
				<category><![CDATA[代码]]></category>
		<category><![CDATA[datePicker]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[实例]]></category>
		<category><![CDATA[日历]]></category>
		<category><![CDATA[汉化]]></category>

		<guid isPermaLink="false">http://www.vpnall.com/?p=223</guid>
		<description><![CDATA[jquery日历选择插件datePicker:http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/ 最近做的一个项目需要日历选择的插件,又用jquery,于是就找一个jquery的日历选择插件datePicker.  简单介绍一下应用:   

1
2
3... ]]></description>
			<content:encoded><![CDATA[<p>jquery日历选择插件datePicker:<a href="http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/">http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/</a> 最近做的一个项目需要日历选择的插件,又用jquery,于是就找一个jquery的日历选择插件datePicker.  简单介绍一下应用:   </p>

<div class="wp_codebox"><table><tr id="p22310"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</pre></td><td class="code" id="p223code10"><pre class="html" style="font-family:monospace;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery-1.3.2.min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/date.js&quot;&gt;&lt;/script&gt;
&lt;!--[if IE]&gt;&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.bgiframe.min.js&quot;&gt;&lt;/script&gt;&lt;![endif]--&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.datePicker.min-2.1.2.js&quot;&gt;&lt;/script&gt;
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;screen&quot; href=&quot;js/datePicker.css&quot;&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
	$(function()
	{
		$('.date-pick').datePicker({clickInput:true,createButton:false,startDate:'2000-01-01'}).val(new Date().asString()).trigger('change');
	});
&lt;/script&gt;
&lt;title&gt;demo&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
起始时间：
&lt;input name=&quot;date1&quot; class=&quot;date-pick&quot; id=&quot;date1&quot; size=&quot;10&quot; width=&quot;80&quot;/&gt;
结束时间：
&lt;input name=&quot;date2&quot; class=&quot;date-pick&quot; id=&quot;date2&quot; size=&quot;10&quot; width=&quot;80&quot; /&gt;
&lt;/body&gt;
&lt;/html&gt;</pre></td></tr></table></div>

<p><strong>jquery-1.3.2.min.js</strong>就不用说了.<br />
<strong>date.js</strong>是一个日期格式的扩展,需要进行汉化一下.<br />
<strong>jquery.bgiframe.min.js</strong>也是jquery一个组件.解决 IE6 z-index的问题,可以有可无.<br />
<strong>jquery.datePicker.min-2.1.2.js</strong>就是今天介绍的日历选择组件了<br />
实例中的用法:<br />
$(&#8216;.date-pick&#8217;).datePicker({clickInput:true,createButton:false,startDate:&#8217;2000-01-01&#8242;}).val(new Date().asString()).trigger(&#8216;change&#8217;);<br />
{clickInput:true,createButton:false,startDate:&#8217;2000-01-01&#8242;}这些是一下参数:<br />
clickInput是点击输入框弹出,日历选择,默认false;<br />
createButton是日历选择的按钮,由于点击输入框弹出,这里没有必要显示这个按钮了.<br />
startDate是可以选择的开始日期,默认是今天.我这里需要选择以前的日期,所以调到2000年了.<br />
跟多的参数请看<a href="http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/documentation.html">datePicker官方文档</a>.</p>
<p>至于datePicker的汉化问题,需要改两个文件,data.js还有jquery.datePicker.min-2.1.2.js.其实也简单只是吧英文改成中文就是了,需要注意的是jquery.datePicker.min-2.1.2.js编码需要改成UTF8,用DW可以轻松改改咯.<br />
提供完整实例下载:<br />
<a href="http://www.vpnall.com/wp-content/uploads/2009/05/demo.rar">jquery.datePicker实例</a>(已经汉化)<br />
更多的例子请看官方网站http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/</p>

	标签：<a href="http://www.vpnall.com/tag/datepicker/" title="datePicker" rel="tag">datePicker</a>, <a href="http://www.vpnall.com/tag/jquery/" title="jquery" rel="tag">jquery</a>, <a href="http://www.vpnall.com/tag/js/" title="js" rel="tag">js</a>, <a href="http://www.vpnall.com/tag/%e5%ae%9e%e4%be%8b/" title="实例" rel="tag">实例</a>, <a href="http://www.vpnall.com/tag/%e6%97%a5%e5%8e%86/" title="日历" rel="tag">日历</a>, <a href="http://www.vpnall.com/tag/%e6%b1%89%e5%8c%96/" title="汉化" rel="tag">汉化</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.vpnall.com/2010/01/disable-a-button-in-a-jquery-dialog-from-a-function/" title="用函数使JQuery ui dialog的按钮是否可用 (2010-01-29)">用函数使JQuery ui dialog的按钮是否可用</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/jquery-ajax-introduction/" title="[转]jQuery Ajax 全解析 (2009-03-03)">[转]jQuery Ajax 全解析</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/%e5%8e%9f%e5%88%9b%e7%94%a8jquery%e5%81%9a%e4%ba%86%e4%b8%80%e4%b8%aa%e5%a4%8d%e5%88%b6%e6%b5%81%e9%87%8f%e7%9a%84%e4%b8%9c%e8%a5%bf/" title="[原创]用jquery做了一个复制流量的东西 (2009-03-28)">[原创]用jquery做了一个复制流量的东西</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/07/js%e5%ae%9e%e7%8e%b0%e9%a1%b5%e9%9d%a2%e7%84%a6%e7%82%b9%e8%ae%a1%e6%97%b6/" title="js实现页面焦点计时 (2009-07-27)">js实现页面焦点计时</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/01/jquery-1-3%e4%b8%ad%e6%96%b0%e5%a2%9e%e7%9a%84%e6%96%b9%e6%b3%95live%e7%9a%84%e5%ba%94%e7%94%a8/" title="jQuery 1.3中新增的方法live()的应用 (2010-01-29)">jQuery 1.3中新增的方法live()的应用</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/09/%e9%be%99%e5%8d%9aajax%e6%a1%86%e6%9e%b6/" title="龙博AJAX框架 (2009-09-08)">龙博AJAX框架</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/04/%e8%bd%ac-%e5%9c%a8%e6%b5%8f%e8%a7%88%e5%99%a8%e5%8f%b3%e9%94%ae%e6%b7%bb%e5%8a%a0%e8%87%aa%e5%ae%9a%e4%b9%89%e8%8f%9c%e5%8d%95/" title="转 在浏览器右键添加自定义菜单 (2010-04-27)">转 在浏览器右键添加自定义菜单</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/01/%e7%94%a8js%e7%9a%84json_decode%e8%a7%a3%e5%86%b3json%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98/" title="用js的json_decode解决JSON中文编码问题 (2010-01-26)">用js的json_decode解决JSON中文编码问题</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.vpnall.com/2009/05/jquery%e6%97%a5%e5%8e%86%e9%80%89%e6%8b%a9%e6%8f%92%e4%bb%b6datepicker-%e7%ae%80%e5%8d%95%e6%b1%89%e5%8c%96%e5%8f%8a%e5%ba%94%e7%94%a8%e5%ae%9e%e4%be%8b/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[原创]用jquery做了一个复制流量的东西</title>
		<link>http://www.vpnall.com/2009/03/%e5%8e%9f%e5%88%9b%e7%94%a8jquery%e5%81%9a%e4%ba%86%e4%b8%80%e4%b8%aa%e5%a4%8d%e5%88%b6%e6%b5%81%e9%87%8f%e7%9a%84%e4%b8%9c%e8%a5%bf/</link>
		<comments>http://www.vpnall.com/2009/03/%e5%8e%9f%e5%88%9b%e7%94%a8jquery%e5%81%9a%e4%ba%86%e4%b8%80%e4%b8%aa%e5%a4%8d%e5%88%b6%e6%b5%81%e9%87%8f%e7%9a%84%e4%b8%9c%e8%a5%bf/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 13:40:01 +0000</pubDate>
		<dc:creator>lava</dc:creator>
				<category><![CDATA[代码]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[复制流量]]></category>

		<guid isPermaLink="false">http://www.vpnall.com/?p=122</guid>
		<description><![CDATA[昨天用juery做了个复制流量的东西,其实说白了就是强制弹出网站页面,当然是反拦截的.
实现效果:用户在网站A点击页面任意部分,触发一个纯正的&#60;a href=&#8217;xxxx&#8217;&#62;来打开网站B的链接.虽... ]]></description>
			<content:encoded><![CDATA[<p>昨天用juery做了个复制流量的东西,其实说白了就是强制弹出网站页面,当然是反拦截的.</p>
<p><strong>实现效果:</strong>用户在网站A点击页面任意部分,触发一个纯正的&lt;a href=&#8217;xxxx&#8217;&gt;来打开网站B的链接.虽然不太文明,用户体现也比强制弹出页面好不了多少.不过用来短时间带来一部分垃圾流量还是比较有效的.</p>
<p><strong>实现原理:</strong>JS新建一个透明的层,层上有隐藏的链接,这层是随鼠标移动的,所以用户在页面任意地方点击都是点击这个链接.点击之后自动清除这层.曾经在一个软件网站见过类似的应用,不过他固定在搜索栏,用户点击搜索栏的时候就弹出页面.</p>

<div class="wp_codebox"><table><tr id="p12212"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
</pre></td><td class="code" id="p122code12"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;/js/jquery.js&quot;</span> type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span>
<span style="color: #003366; font-weight: bold;">var</span> floatX<span style="color: #339933;">,</span>floatY<span style="color: #339933;">,</span>boxX<span style="color: #339933;">,</span>boxY<span style="color: #339933;">,</span>pageX<span style="color: #339933;">,</span>pageY<span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> cX <span style="color: #339933;">=</span> document.<span style="color: #660066;">documentElement</span>.<span style="color: #660066;">clientWidth</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> cY <span style="color: #339933;">=</span> document.<span style="color: #660066;">documentElement</span>.<span style="color: #660066;">clientHeight</span><span style="color: #339933;">;</span>
$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</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;">&#40;</span><span style="color: #3366CC;">&quot;body&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'
&lt;p id=&quot;float&quot; style=&quot;padding:3px 5px;position:absolute;z-index:9999;&quot;&gt;&lt;a id=&quot;newlife&quot; style=&quot;cursor:default;text-decoration: none;&quot; href=&quot;http://www.newlova.com/&quot; target=&quot;_blank&quot;&gt;    &lt;/a&gt;&lt;/p&gt;
'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">mousemove</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> cX <span style="color: #339933;">=</span> document.<span style="color: #660066;">documentElement</span>.<span style="color: #660066;">clientWidth</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> cY <span style="color: #339933;">=</span> document.<span style="color: #660066;">documentElement</span>.<span style="color: #660066;">clientHeight</span><span style="color: #339933;">;</span>
pageX <span style="color: #339933;">=</span> event.<span style="color: #660066;">clientX</span> <span style="color: #339933;">+</span> $<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">scrollLeft</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
pageY <span style="color: #339933;">=</span> event.<span style="color: #660066;">clientY</span> <span style="color: #339933;">+</span> $<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">scrollTop</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
boxX <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#float'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">outerWidth</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
boxY <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#float'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">outerHeight</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">clientX</span><span style="color: #339933;">&gt;</span>cX<span style="color: #339933;">-</span>boxX<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
floatX <span style="color: #339933;">=</span> pageX<span style="color: #339933;">-</span>boxX<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>
floatX <span style="color: #339933;">=</span> pageX<span style="color: #339933;">-</span><span style="color: #CC0000;">15</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">clientY</span><span style="color: #339933;">&gt;</span>cY<span style="color: #339933;">-</span>boxY<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
floatY <span style="color: #339933;">=</span> pageY<span style="color: #339933;">-</span>boxY<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>
floatY <span style="color: #339933;">=</span> pageY<span style="color: #339933;">-</span><span style="color: #CC0000;">10</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
window.<span style="color: #000066;">status</span><span style="color: #339933;">=</span><span style="color: #3366CC;">''</span><span style="color: #339933;">;</span>
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#float'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>top<span style="color: #339933;">:</span> floatY<span style="color: #339933;">,</span> left<span style="color: #339933;">:</span> floatX<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">resize</span><span style="color: #009900;">&#40;</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>
cX <span style="color: #339933;">=</span> document.<span style="color: #660066;">documentElement</span>.<span style="color: #660066;">clientWidth</span><span style="color: #339933;">;</span>
cY <span style="color: #339933;">=</span> document.<span style="color: #660066;">documentElement</span>.<span style="color: #660066;">clientHeight</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: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#newlife&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</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;">&#40;</span><span style="color: #3366CC;">'#float'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hide</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>$<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #000066;">focus</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>setTimeout<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;$(window).focus()&quot;</span><span style="color: #339933;">,</span><span style="color: #CC0000;">500</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span></pre></td></tr></table></div>

<p>在firefox下面newlife层好像没对准,有心人自己调整一下吧,网页右边和下边的边也没算对.可以用就行,凑合吧.最后那里打开了新页面,焦点会撤换到新页面,这样好像不太舒服.又加了句setTimeout(&#8220;$(window).focus()&#8221;,500),不过只在IE6下面有效.</p>

	标签：<a href="http://www.vpnall.com/tag/jquery/" title="jquery" rel="tag">jquery</a>, <a href="http://www.vpnall.com/tag/js/" title="js" rel="tag">js</a>, <a href="http://www.vpnall.com/tag/%e5%a4%8d%e5%88%b6%e6%b5%81%e9%87%8f/" title="复制流量" rel="tag">复制流量</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.vpnall.com/2010/01/disable-a-button-in-a-jquery-dialog-from-a-function/" title="用函数使JQuery ui dialog的按钮是否可用 (2010-01-29)">用函数使JQuery ui dialog的按钮是否可用</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/jquery-ajax-introduction/" title="[转]jQuery Ajax 全解析 (2009-03-03)">[转]jQuery Ajax 全解析</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/07/js%e5%ae%9e%e7%8e%b0%e9%a1%b5%e9%9d%a2%e7%84%a6%e7%82%b9%e8%ae%a1%e6%97%b6/" title="js实现页面焦点计时 (2009-07-27)">js实现页面焦点计时</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/05/jquery%e6%97%a5%e5%8e%86%e9%80%89%e6%8b%a9%e6%8f%92%e4%bb%b6datepicker-%e7%ae%80%e5%8d%95%e6%b1%89%e5%8c%96%e5%8f%8a%e5%ba%94%e7%94%a8%e5%ae%9e%e4%be%8b/" title="jquery日历选择插件datePicker 简单汉化及应用实例 (2009-05-22)">jquery日历选择插件datePicker 简单汉化及应用实例</a> (1)</li>
	<li><a href="http://www.vpnall.com/2010/01/jquery-1-3%e4%b8%ad%e6%96%b0%e5%a2%9e%e7%9a%84%e6%96%b9%e6%b3%95live%e7%9a%84%e5%ba%94%e7%94%a8/" title="jQuery 1.3中新增的方法live()的应用 (2010-01-29)">jQuery 1.3中新增的方法live()的应用</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/09/%e9%be%99%e5%8d%9aajax%e6%a1%86%e6%9e%b6/" title="龙博AJAX框架 (2009-09-08)">龙博AJAX框架</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/04/%e8%bd%ac-%e5%9c%a8%e6%b5%8f%e8%a7%88%e5%99%a8%e5%8f%b3%e9%94%ae%e6%b7%bb%e5%8a%a0%e8%87%aa%e5%ae%9a%e4%b9%89%e8%8f%9c%e5%8d%95/" title="转 在浏览器右键添加自定义菜单 (2010-04-27)">转 在浏览器右键添加自定义菜单</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/01/%e7%94%a8js%e7%9a%84json_decode%e8%a7%a3%e5%86%b3json%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98/" title="用js的json_decode解决JSON中文编码问题 (2010-01-26)">用js的json_decode解决JSON中文编码问题</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.vpnall.com/2009/03/%e5%8e%9f%e5%88%9b%e7%94%a8jquery%e5%81%9a%e4%ba%86%e4%b8%80%e4%b8%aa%e5%a4%8d%e5%88%b6%e6%b5%81%e9%87%8f%e7%9a%84%e4%b8%9c%e8%a5%bf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转]”完美”跨域</title>
		<link>http://www.vpnall.com/2009/03/%e8%bd%ac%e2%80%9d%e5%ae%8c%e7%be%8e%e2%80%9d%e8%b7%a8%e5%9f%9f/</link>
		<comments>http://www.vpnall.com/2009/03/%e8%bd%ac%e2%80%9d%e5%ae%8c%e7%be%8e%e2%80%9d%e8%b7%a8%e5%9f%9f/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 07:01:51 +0000</pubDate>
		<dc:creator>lava</dc:creator>
				<category><![CDATA[代码]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[jsonp]]></category>
		<category><![CDATA[window.name]]></category>
		<category><![CDATA[window.navigator]]></category>
		<category><![CDATA[跨域]]></category>

		<guid isPermaLink="false">http://www.vpnall.com/?p=120</guid>
		<description><![CDATA[觉得说得很全面,记录一下
原文:http://ued.alipay.com/?p=707
=========================
关于跨域这个话题，很早就答应过要分享，但是因为懒，一直拖着，直到D2上有人谈起了“完美跨域”。“跨域”应该... ]]></description>
			<content:encoded><![CDATA[<p>觉得说得很全面,记录一下</p>
<p>原文:<a href="http://ued.alipay.com/?p=707">http://ued.alipay.com/?p=707</a></p>
<p>=========================</p>
<p>关于跨域这个话题，很早就答应过要分享，但是因为懒，一直拖着，直到D2上有人谈起了“完美跨域”。“跨域”应该已经算不上什么难题了，只是提起“完美”这两个字，突然觉得有了新意，那就写点什么吧，至少对自己有个交代嘛！跨域方案有很多，接下来一一枚举，会给出demo，demo的宗旨是尽可能简单的让新手明白，各方案中跨域的原理，实际应用请酌情修改。</p>
<h4>方案一、剪贴板</h4>
<p><strong>原理：</strong>IE本身依附于windows平台的特性为我们提供了一种基于iframe，利用内存来“绕行”的方案，在这里我称之为，本地存储原理。</p>
<p><strong>缺点：</strong>不支持非IE浏览器，并且影响到用户对剪贴板的操作，用户体验非常不好，特别是在IE7下，受安全等级影响，会弹出提示框。</p>
<p><strong>演示：</strong>[ <a class="em" href="http://www.ioldfish.cn/wp-content/demo/domain/clipboard/a.html" target="_blank">点此阅览</a> ]</p>
<p>子页面在子域：<em>demo.ioldfish.cn</em>下，在页面中加入如下代码获取页面高度并存入剪贴板。</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick="linenumber(this)">
<li class="hl-firstline"><span>&lt;</span><span>script</span><span> </span><span>type</span><span>=</span><span>&#8220;</span><span>text/javascript</span><span>&#8220;</span><span>&gt;</span></li>
<li><span>var</span><span> </span><span>ua</span><span> = </span><span>navigator</span><span>.</span><span>userAgent</span><span>;</span></li>
<li><span>if</span><span> </span><span>((</span><span>i</span><span> = </span><span>ua</span><span>.</span><span>indexOf</span><span>(</span><span>&#8220;</span><span>MSIE</span><span>&#8220;</span><span>))</span><span> &gt;= </span><span>0</span><span>)</span><span> </span></li>
<li><span>{</span></li>
<li><span> </span><span>var</span><span> </span><span>iObjH</span><span> = </span><span>window</span><span>.</span><span>document</span><span>.</span><span>documentElement</span><span>.</span><span>scrollHeight</span><span>;</span></li>
<li><span> </span><span>window</span><span>.</span><span>clipboardData</span><span>.</span><span>setData</span><span>(</span><span>&#8216;</span><span>text</span><span>&#8216;</span><span>,</span><span>String</span><span>(</span><span>iObjH</span><span>))</span><span>;</span></li>
<li><span>}</span></li>
<li><span>&lt;</span><span>/</span><span>script&gt;</span></li>
</ol>
</div>
<p> </p>
<p>主页面在主域：<em>www.ioldfish.cn</em>下，在页面中加入如下代码，获取剪贴板的值并赋值为子页面所在的iframe的高度。</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick="linenumber(this)">
<li class="hl-firstline"><span>&lt;</span><span>script</span><span> </span><span>type</span><span>=</span><span>&#8220;</span><span>text/javascript</span><span>&#8220;</span><span>&gt;</span></li>
<li><span>window</span><span>.</span><span>onload</span><span> = </span><span>function</span><span>()</span></li>
<li><span>{</span></li>
<li><span> </span><span>var</span><span> </span><span>iObj</span><span> =</span><span>document</span><span>.</span><span>getElementById</span><span>(</span><span>&#8216;</span><span>iId</span><span>&#8216;</span><span>)</span><span>;</span></li>
<li><span> </span><span>iObj</span><span>.</span><span>style</span><span>.</span><span>height</span><span>=</span><span>parseInt</span><span>(</span><span>window</span><span>.</span><span>clipboardData</span><span>.</span><span>getData</span><span>(</span><span>&#8216;</span><span>text</span><span>&#8216;</span><span>))</span><span>+</span><span>&#8216;</span><span>px</span><span>&#8216;</span><span>;</span></li>
<li><span>}</span></li>
<li><span>&lt;</span><span>/</span><span>script&gt;</span></li>
</ol>
</div>
<p> </p>
<p class="More"> </p>
<h4>方案二、document.domain</h4>
<p><strong>原理：</strong>设置了document.domain，欺骗浏览器</p>
<p><strong>缺点：</strong>无法实现不同主域之间的通讯。并且当在一个页面中还包含有其它的iframe时，会产生安全性异常，拒绝访问。</p>
<p><strong>演示：</strong>[ <a class="em" href="http://www.ioldfish.cn/wp-content/demo/domain/docdomain/a.html" target="_blank">点此阅览</a> ]</p>
<p>主页面在主域：<em>www.ioldfish.cn</em>下，子页面在子域：<em>demo.ioldfish.cn</em>下，在两个页面的头部都加入如下代码：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick="linenumber(this)">
<li class="hl-firstline"><span>&lt;</span><span>script</span><span> </span><span>type</span><span>=</span><span>&#8220;</span><span>text/javascript</span><span>&#8220;</span><span>&gt;</span></li>
<li><span> </span><span>document</span><span>.</span><span>domain</span><span>=</span><span>&#8220;</span><span>ioldfish.cn</span><span>&#8220;</span><span>;</span></li>
<li><span>&lt;</span><span>/</span><span>script&gt;</span></li>
</ol>
</div>
<p> </p>
<h4>方案三、通过JS获取hash值实现通讯</h4>
<p><strong>原理：</strong>hash可以实现跨域传值实现跨域通讯。</p>
<p><strong>缺点：</strong>对于父窗口URL参数动态生成的，处理过程比较复杂一些。并且IE之外的浏览器遇到hash的改变会记录历史，影响浏览器的前进后退功能，体验不佳。</p>
<p><strong>演示：</strong>[ <a class="em" href="http://www.ioldfish.cn/wp-content/demo/domain/hash/a2.html">点此阅览</a> ]</p>
<p>子页面在主域：<em>www.lzdaily.com</em>下，在页面中添加如下代码,因为hash是不受跨域限制的，所以可以将本页面的高度顺利的传送给主页面的hash。</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick="linenumber(this)">
<li class="hl-firstline"><span>&lt;</span><span>script</span><span> </span><span>type</span><span>=</span><span>&#8220;</span><span>text/javascript</span><span>&#8220;</span><span>&gt;</span></li>
<li><span> </span><span>var</span><span> </span><span>hashH</span><span> = </span><span>document</span><span>.</span><span>documentElement</span><span>.</span><span>scrollHeight</span><span>;</span></li>
<li><span> </span><span>var</span><span> </span><span>urlA</span><span> = </span><span>&#8220;</span><span>http://www.ioldfish.cn/wp-content/demo/domain/hash/a2.html</span><span>&#8220;</span><span>;</span></li>
<li><span> </span><span>parent</span><span>.</span><span>location</span><span>.</span><span>href</span><span>= </span><span>urlA</span><span>+</span><span>&#8220;</span><span>#</span><span>&#8220;</span><span>+</span><span>hashH</span><span>;</span></li>
<li><span>&lt;</span><span>/</span><span>script&gt;</span></li>
</ol>
</div>
<p> </p>
<p>主页面在主域：<em>www.ioldfish.cn</em>下，在页面中添加如下代码，首先取得子页面传递过来的hash值，然后将hash值赋到子页面所在的iframe的高度上。</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick="linenumber(this)">
<li class="hl-firstline"><span>&lt;</span><span>script</span><span> </span><span>type</span><span>=</span><span>&#8220;</span><span>text/javascript</span><span>&#8220;</span><span>&gt;</span></li>
<li><span>window</span><span>.</span><span>onload</span><span> = </span><span>function</span><span>()</span></li>
<li><span>{</span></li>
<li><span> </span><span>var</span><span> </span><span>iObj</span><span> = </span><span>document</span><span>.</span><span>getElementById</span><span>(</span><span>&#8216;</span><span>iId</span><span>&#8216;</span><span>)</span><span>;</span></li>
<li><span> </span><span>if</span><span>(</span><span>location</span><span>.</span><span>hash</span><span>)</span></li>
<li><span> </span><span>{</span></li>
<li><span>  </span><span>iObj</span><span>.</span><span>style</span><span>.</span><span>height</span><span>=</span><span>location</span><span>.</span><span>hash</span><span>.</span><span>split</span><span>(</span><span>&#8220;</span><span>#</span><span>&#8220;</span><span>)[</span><span>1</span><span>]</span><span>+</span><span>&#8220;</span><span>px</span><span>&#8220;</span><span>;</span></li>
<li><span> </span><span>}</span></li>
<li><span>}</span></li>
<li><span>&lt;</span><span>/</span><span>script&gt;</span></li>
</ol>
</div>
<p> </p>
<h4>方案四、传hash值实现通讯改良版</h4>
<p><strong>原理：</strong>该方案通过“前端代理”的方式，实现hash的传值，体验上比之方案三有了很大的提升。</p>
<p><strong>缺点：</strong>对于父窗口URL参数动态生成的，处理过程比较复杂一些。</p>
<p><strong>演示：</strong>[ <a class="em" href="http://www.ioldfish.cn/wp-content/demo/domain/hashbetter/a.html" target="_blank">点此阅览</a> ]</p>
<p>子页面在主域：<em>www.lzdaily.com</em>下，在页面中添加如下代码,首先在页面里添加一个和主页面同域的iframe［也可动态生成］，他的作用就像是个跳板。C页面中不需任何代码，只要确保有个页面就防止404错误就可以了！该方法通过修改iframe的name值同样可以跨域传值，只是比较”猥琐“而已。</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick="linenumber(this)">
<li class="hl-firstline"><span>&lt;</span><span>iframe</span><span> </span><span>id</span><span>=</span><span>&#8220;</span><span>iframeC</span><span>&#8220;</span><span> </span><span>name</span><span>=</span><span>&#8220;</span><span>iframeC</span><span>&#8220;</span><span> </span><span>src</span><span>=</span><span>&#8220;</span><span>http://www.ioldfish.cn/wp-content/demo/domain/hashbetter/c.html</span><span>&#8220;</span><span> </span><span>frameborder</span><span>=</span><span>&#8220;</span><span>0</span><span>&#8220;</span><span> </span><span>height</span><span>=</span><span>&#8220;</span><span>0</span><span>&#8220;</span><span>&gt;&lt;/</span><span>iframe</span><span>&gt;</span></li>
</ol>
</div>
<p> </p>
<p>然后在页面中加上如下代码，利用页面C的URL接收hash值，并负责把hash值传给同域下的主页面。</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick="linenumber(this)">
<li class="hl-firstline"><span>&lt;</span><span>script</span><span> </span><span>type</span><span>=</span><span>&#8220;</span><span>text/javascript</span><span>&#8220;</span><span>&gt;</span></li>
<li><span> </span><span>hashH</span><span> = </span><span>document</span><span>.</span><span>documentElement</span><span>.</span><span>scrollHeight</span><span>;</span></li>
<li><span> </span><span>urlC</span><span> = </span><span>&#8220;</span><span>http://www.ioldfish.cn/wp-content/demo/domain/hashbetter/c.html</span><span>&#8220;</span><span>;</span></li>
<li><span> </span><span>document</span><span>.</span><span>getElementById</span><span>(</span><span>&#8220;</span><span>iframeC</span><span>&#8220;</span><span>)</span><span>.</span><span>src</span><span>=</span><span>urlC</span><span>+</span><span>&#8220;</span><span>#</span><span>&#8220;</span><span>+</span><span>hashH</span><span>;</span></li>
<li><span>&lt;</span><span>/</span><span>script&gt;</span></li>
</ol>
</div>
<p> </p>
<p>主页面在主域：<em>www.ioldfish.cn</em>下，在页面中添加如下代码，获取从C页面中传递过来的hash值。这里应用到一个技巧，就是直接从A页面用<em>frames["iId"].frames["iframeC"].location.hash</em>,可以直接访问并获取C页面的hash值。这样一来，通过代理页面传递hash值，比起方案三，大大提高了用户体验。</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick="linenumber(this)">
<li class="hl-firstline"><span>&lt;</span><span>script</span><span> </span><span>type</span><span>=</span><span>&#8220;</span><span>text/javascript</span><span>&#8220;</span><span>&gt;</span></li>
<li><span>window</span><span>.</span><span>onload</span><span> = </span><span>function</span><span>()</span></li>
<li><span>{</span></li>
<li><span> </span><span>var</span><span> </span><span>iObj</span><span> = </span><span>document</span><span>.</span><span>getElementById</span><span>(</span><span>&#8216;</span><span>iId</span><span>&#8216;</span><span>)</span><span>;</span></li>
<li><span> </span><span>iObjH</span><span> = </span><span>frames</span><span>[</span><span>"</span><span>iId</span><span>"</span><span>]</span><span>.</span><span>frames</span><span>[</span><span>"</span><span>iframeC</span><span>"</span><span>]</span><span>.</span><span>location</span><span>.</span><span>hash</span><span>;</span></li>
<li><span> </span><span>iObj</span><span>.</span><span>style</span><span>.</span><span>height</span><span> = </span><span>iObjH</span><span>.</span><span>split</span><span>(</span><span>&#8220;</span><span>#</span><span>&#8220;</span><span>)[</span><span>1</span><span>]</span><span>+</span><span>&#8220;</span><span>px</span><span>&#8220;</span><span>;</span></li>
<li><span>}</span></li>
<li><span>&lt;</span><span>/</span><span>script&gt;</span></li>
</ol>
</div>
<p> </p>
<h4>方案五、JSONP</h4>
<p><strong>原理：</strong>有点脚本注入的味道</p>
<p><strong>缺点：</strong>服务器端程序运行比脚本早，跨域交互时无法捕获前端页面元素的相关数据，比如自适应高度。</p>
<p><strong>演示：</strong>[ <a class="em" href="http://www.ioldfish.cn/wp-content/demo/domain/jsonp/a.html" target="_blank">点此阅览</a> ]</p>
<p>主页面在主域：<em>www.ioldfish.cn</em>下，在页面中添加如下代码，动态创建一个script，然后指定到子域的动态文件，在动态文件后面可以添加参数，在这里我加了一个回调函数，当请求返回后，会运行这个回调函数。</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick="linenumber(this)">
<li class="hl-firstline"><span>&lt;</span><span>script</span><span> </span><span>type</span><span>=</span><span>&#8220;</span><span>text/javascript</span><span>&#8220;</span><span>&gt;</span></li>
<li><span>function</span><span> </span><span>loadContent</span><span>()</span></li>
<li><span>{</span></li>
<li><span> </span><span>var</span><span> </span><span>scriptDom</span><span>=</span><span>document</span><span>.</span><span>createElement</span><span>(</span><span>&#8216;</span><span>script</span><span>&#8216;</span><span>)</span><span>;</span></li>
<li><span> </span><span>var</span><span> </span><span>url</span><span> = </span><span>&#8220;</span><span>http://www.lzdaily.com/domain/jsonp/Test.aspx?f=setDivContent&#8217;</span><span>&#8220;</span><span>;</span></li>
<li><span> </span><span>scriptDom</span><span>.</span><span>src</span><span>= </span><span>url</span><span>;</span></li>
<li><span> </span><span>document</span><span>.</span><span>body</span><span>.</span><span>appendChild</span><span>(</span><span>scriptDom</span><span>)</span><span>;</span></li>
<li><span>}</span><span> </span></li>
<li><span>function</span><span> </span><span>setDivContent</span><span>(</span><span>love</span><span>)</span></li>
<li><span>{</span></li>
<li><span> </span><span>var</span><span> </span><span>fishDiv</span><span> = </span><span>document</span><span>.</span><span>getElementById</span><span>(</span><span>&#8220;</span><span>oldFish</span><span>&#8220;</span><span>)</span><span>;</span></li>
<li><span> </span><span>fishDiv</span><span>.</span><span>innerHTML</span><span> = </span><span>love</span><span>;</span></li>
<li><span>}</span></li>
<li><span>&lt;</span><span>/</span><span>script&gt;</span></li>
</ol>
</div>
<p> </p>
<p>子页面在主域：<em>www.lzdaily.com</em>下，在页面中添加如下代码，首先先取得主页面传过来的回调函数名，然后生成一段javascript代码，以回调函数带参数的形式返回主页面，这样就完成了跨域之间的通讯。由于服务器端程序执行总是优先于javascript代码，所以基本上没办法获取到子页面中DOM的相关数据，所以小白同学，我可以很负责人的告诉你，想通过这种方法实现跨域自适应高度是不可能的！</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick="linenumber(this)">
<li class="hl-firstline"><span>&lt;</span><span>script</span><span> </span><span>language</span><span>=</span><span>&#8220;</span><span>C#</span><span>&#8220;</span><span> </span><span>runat</span><span>=</span><span>&#8220;</span><span>server</span><span>&#8220;</span><span>&gt;</span></li>
<li><span>void</span><span> </span><span>Page_Load</span><span>(</span><span>object</span><span> </span><span>sender</span><span>, </span><span>EventArgs</span><span> </span><span>e</span><span>)</span></li>
<li><span>{</span></li>
<li><span>  </span><span>string</span><span> </span><span>f</span><span> = </span><span>Request</span><span>.</span><span>QueryString</span><span>[</span><span>"</span><span>f</span><span>"</span><span>]</span><span>;</span></li>
<li><span>  </span><span>Response</span><span>.</span><span>Clear</span><span>()</span><span>;</span></li>
<li><span>  </span><span>Response</span><span>.</span><span>ContentType</span><span> = </span><span>&#8220;</span><span>application/x-javascript</span><span>&#8220;</span><span>;</span></li>
<li><span>  </span><span>Response</span><span>.</span><span>Write</span><span>(</span><span>String</span><span>.</span><span>Format</span><span>(</span><span>@</span><span>&#8220;</span><span>{0}({1});</span><span>&#8220;</span><span>, </span><span>f</span><span>,</span><span>1122</span><span>))</span><span>;</span></li>
<li><span>  </span><span>Response</span><span>.</span><span>End</span><span>()</span><span>;</span></li>
<li><span>}</span></li>
<li><span>&lt;</span><span>/</span><span>script&gt;</span></li>
</ol>
</div>
<p> </p>
<h4>方案六、window.name</h4>
<p><strong>原理：</strong>window.name本身并不能实现跨域，只是中间做了代理。</p>
<p><strong>缺点：</strong>获取异域的前端页面元素值有一定局限性，比如取自适应高度的值。但是此方法在前端页面元素的数据交互上明显比JSONP强。</p>
<p><strong>演示：</strong>[ <a class="em" href="http://hikejun.com/demo/windowname/demo_windowname.html" target="_blank">点此阅览</a> ]</p>
<p>这个方案，YAHOO的同事已经给出了详细的demo，我就不重复了，演示demo出自YAHOO<em>克军</em>之手。详细的说明可以参看“<a href="http://www.planabc.net/" target="_blank">怿飞的BLOG”</a>，个人觉得方案四比window.name适用面更广一些。</p>
<h4>方案七、window.navigator</h4>
<p><strong>原理：</strong>window.navigator这个对象是在所有的Iframe中均可以访问的对象。应该是IE的一个漏洞！</p>
<p><strong>缺点：</strong>不支持IE外的浏览器下的跨域。严格的dtd申明后，该方法失效！</p>
<p><strong>演示：</strong>[ <a class="em" href="http://www.ioldfish.cn/wp-content/demo/domain/navigator/a.html" target="_blank">点此阅览</a> ]</p>
<p>主页面在主域：<em>www.ioldfish.cn</em>下，首先先申明一个Json用来保存所有页面的高度<em>window.navigator.PagesHeight={”&#8221;:0};</em>，然后根据name的属性找到页面的数据<em>window.navigator.getData</em>，最后将页面的数据注册到<em>window.navigator.PagesHeight</em>中。这里还定义了一个函数<em>resetIframeData</em>，在页面加载的时候调用它，完成跨域的数据交互。注释中详细说明了参数的作用。</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick="linenumber(this)">
<li class="hl-firstline"><span>&lt;</span><span>script</span><span> </span><span>type</span><span>=</span><span>&#8220;</span><span>text/javascript</span><span>&#8220;</span><span>&gt;</span></li>
<li><span>window</span><span>.</span><span>navigator</span><span>.</span><span>PagesHeight</span><span>=</span><span>{</span><span>&#8220;&#8221;</span><span>:</span><span>0</span><span>}</span><span>;   </span></li>
<li><span>window</span><span>.</span><span>navigator</span><span>.</span><span>getData</span><span>=</span><span>function</span><span>(</span><span>pageName</span><span>)</span><span> </span><span>{</span><span>     </span></li>
<li><span> </span><span>return</span><span> </span><span>window</span><span>.</span><span>navigator</span><span>.</span><span>PagesHeight</span><span>[</span><span>pageName</span><span>]</span><span>;  </span></li>
<li><span>}</span><span>;   </span></li>
<li><span>window</span><span>.</span><span>navigator</span><span>.</span><span>putData</span><span>=</span><span>function</span><span>(</span><span>pageName</span><span>,</span><span>pageHeight</span><span>)</span><span> </span></li>
<li><span>{</span><span>  </span></li>
<li><span> </span><span>window</span><span>.</span><span>navigator</span><span>.</span><span>PagesHeight</span><span>[</span><span>pageName</span><span>]</span><span>=</span><span>pageHeight</span><span>;  </span></li>
<li><span>}</span><span>;</span></li>
</ol>
</div>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick="linenumber(this)">
<li class="hl-firstline"><span>/*</span></li>
<li><span>*iframeId:页面中iframe的标识id</span></li>
<li><span>*key:子页面自定义的json标识,这里就是子页面定义的&#8221;PortalData&#8221;.</span></li>
<li><span>*defaultData:无法取到值时候调用</span></li>
<li><span>*/</span></li>
<li><span>function</span><span> </span><span>resetIframeData</span><span>(</span><span>iframeId</span><span>,</span><span>key</span><span>,</span><span>defualtData</span><span>)</span></li>
<li><span>{</span><span>       </span></li>
<li><span> </span><span>var</span><span> </span><span>obj</span><span>=</span><span>document</span><span>.</span><span>getElementById</span><span>(</span><span>iframeId</span><span>)</span><span>;  </span></li>
<li><span> </span><span>if</span><span>(</span><span>window</span><span>.</span><span>navigator</span><span>.</span><span>getData</span><span>)</span></li>
<li><span> </span><span>{</span><span>  </span></li>
<li><span>  </span><span>var</span><span> </span><span>pageHeight</span><span> = </span><span>window</span><span>.</span><span>navigator</span><span>.</span><span>getData</span><span>(</span><span>key</span><span>)</span><span>; </span></li>
<li><span>  </span><span>if</span><span>(</span><span>pageHeight</span><span> &amp;&amp; </span><span>String</span><span>(</span><span>pageHeight</span><span>)</span><span>.</span><span>match</span><span>(</span><span>/</span><span>\d+</span><span>/</span><span>))</span></li>
<li><span>  </span><span>{</span><span>  </span></li>
<li><span>   </span><span>obj</span><span>.</span><span>style</span><span>.</span><span>height</span><span>=</span><span>pageHeight</span><span>+</span><span>&#8216;</span><span>px</span><span>&#8216;</span><span>;  </span></li>
<li><span>  </span><span>}</span></li>
<li><span>  </span><span>else</span></li>
<li><span>  </span><span>{</span><span>  </span></li>
<li><span>   </span><span>obj</span><span>.</span><span>style</span><span>.</span><span>height</span><span>=</span><span>defualtData</span><span> + </span><span>&#8216;</span><span>px</span><span>&#8216;</span><span>;  </span></li>
<li><span>  </span><span>}</span><span>  </span></li>
<li><span> </span><span>}</span></li>
<li><span> </span><span>else</span></li>
<li><span> </span><span>{</span><span>  </span></li>
<li><span>  </span><span>obj</span><span>.</span><span>style</span><span>.</span><span>height</span><span>=</span><span>defualtData</span><span> + </span><span>&#8216;</span><span>px</span><span>&#8216;</span><span>;  </span></li>
<li><span> </span><span>}</span><span>     </span></li>
<li><span>}</span><span> </span></li>
<li><span>&lt;</span><span>/</span><span>script&gt;</span></li>
</ol>
</div>
<p> </p>
<p>子页面在主域：<em>www.lzdaily.com</em>下，获取到页面高度后，将高度存到主页定义的Json中，Json标识为”PortalData”，这里可以自定义。</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick="linenumber(this)">
<li class="hl-firstline"><span>&lt;</span><span>script</span><span> </span><span>type</span><span>=</span><span>&#8220;</span><span>text/javascript</span><span>&#8220;</span><span>&gt;</span></li>
<li><span>window</span><span>.</span><span>onload</span><span> = </span><span>function</span><span> </span><span>getPageData</span><span>()</span></li>
<li><span>{</span><span>         </span></li>
<li><span> </span><span>var</span><span> </span><span>pageHeight</span><span> = </span><span>document</span><span>.</span><span>body</span><span>.</span><span>scrollHeight</span><span>;  </span></li>
<li><span> </span><span>if</span><span>(</span><span>window</span><span>.</span><span>navigator</span><span>.</span><span>putData</span><span>)</span></li>
<li><span> </span><span>{</span></li>
<li><span>  </span><span>window</span><span>.</span><span>navigator</span><span>.</span><span>putData</span><span>(</span><span>&#8220;</span><span>PortalData</span><span>&#8220;</span><span>,</span><span>pageHeight</span><span>)</span><span>;</span></li>
<li><span> </span><span>}</span></li>
<li><span>}</span><span> </span></li>
<li><span>&lt;</span><span>/</span><span>script&gt;</span></li>
</ol>
</div>
<p> </p>
<p>其实通过css也可以实现跨域，数据获取的实质其实就是动态载入一段CSS，然后解析其中的字段提取数据，这个方法比较“猥琐”，再这里就不多介绍了，当然flash也可以实现跨域，只是还没去实践，实践完了再补充。啥时候能补完呢？恩……</p>
<p>以上这么多方案，有可以“完美跨域”的吗？单一的看，我想没有吧，都有缺陷，但是只要不同情况下使用合适的方法，我想这才是最完美的！原来绕了一圈，我只是再说废话，哎！不论怎么样，还是希望这些废话对还在苦苦追求“完美”的同学们有所启发！</p>

	标签：<a href="http://www.vpnall.com/tag/js/" title="js" rel="tag">js</a>, <a href="http://www.vpnall.com/tag/jsonp/" title="jsonp" rel="tag">jsonp</a>, <a href="http://www.vpnall.com/tag/windowname/" title="window.name" rel="tag">window.name</a>, <a href="http://www.vpnall.com/tag/windownavigator/" title="window.navigator" rel="tag">window.navigator</a>, <a href="http://www.vpnall.com/tag/%e8%b7%a8%e5%9f%9f/" title="跨域" rel="tag">跨域</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.vpnall.com/2009/09/%e9%be%99%e5%8d%9aajax%e6%a1%86%e6%9e%b6/" title="龙博AJAX框架 (2009-09-08)">龙博AJAX框架</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/04/%e8%bd%ac-%e5%9c%a8%e6%b5%8f%e8%a7%88%e5%99%a8%e5%8f%b3%e9%94%ae%e6%b7%bb%e5%8a%a0%e8%87%aa%e5%ae%9a%e4%b9%89%e8%8f%9c%e5%8d%95/" title="转 在浏览器右键添加自定义菜单 (2010-04-27)">转 在浏览器右键添加自定义菜单</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/01/disable-a-button-in-a-jquery-dialog-from-a-function/" title="用函数使JQuery ui dialog的按钮是否可用 (2010-01-29)">用函数使JQuery ui dialog的按钮是否可用</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/01/%e7%94%a8js%e7%9a%84json_decode%e8%a7%a3%e5%86%b3json%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98/" title="用js的json_decode解决JSON中文编码问题 (2010-01-26)">用js的json_decode解决JSON中文编码问题</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/06/%e6%95%b4%e7%90%86%e5%ae%9e%e7%94%a8javascript%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7/" title="整理实用JavaScript开发工具 (2009-06-24)">整理实用JavaScript开发工具</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/use-php-ajax-crossdomainhttp-get/" title="利用PHP实现AJAX跨域HTTP GET (2009-03-12)">利用PHP实现AJAX跨域HTTP GET</a> (4)</li>
	<li><a href="http://www.vpnall.com/2009/10/javascript-refresh-page/" title="[转]利用javascript实现web页面刷新的方法 (2009-10-03)">[转]利用javascript实现web页面刷新的方法</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/jquery-ajax-introduction/" title="[转]jQuery Ajax 全解析 (2009-03-03)">[转]jQuery Ajax 全解析</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.vpnall.com/2009/03/%e8%bd%ac%e2%80%9d%e5%ae%8c%e7%be%8e%e2%80%9d%e8%b7%a8%e5%9f%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转]40 个轻量级 JavaScript 库 （下）</title>
		<link>http://www.vpnall.com/2009/03/40-stand-alone-javascript-libraries-for-specific-purposes2/</link>
		<comments>http://www.vpnall.com/2009/03/40-stand-alone-javascript-libraries-for-specific-purposes2/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 13:14:47 +0000</pubDate>
		<dc:creator>lava</dc:creator>
				<category><![CDATA[代码]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[轻量级]]></category>

		<guid isPermaLink="false">http://www.vpnall.com/?p=60</guid>
		<description><![CDATA[流行的 JavaScript 库不胜枚举，jQuery, MooTools, Prototype, Dojo, YUI。这些 JavaScript 库功能丰富，加上它们的插件，几乎能胜任任何工作，然而这是有代价的，这些库往往导致你的网页尺寸臃肿。在某些... ]]></description>
			<content:encoded><![CDATA[<p>流行的 JavaScript 库不胜枚举，jQuery, MooTools, Prototype, Dojo, YUI。这些 JavaScript 库功能丰富，加上它们的插件，几乎能胜任任何工作，然而这是有代价的，这些库往往导致你的网页尺寸臃肿。在某些场合，如果你只想完成特定的工作，可以使用一些功能更专一的轻量库，本文介绍了40个非常出色的轻量级 JavaScript 库。这是本文的第二部分，第一部分参见<a href="http://www.cnbeta.com/GetKnowledge/zh-CN/TeamBlogTimothyPage_K741.aspx">40 个轻量级 JavaScript 库 （上）</a>。</p>
<p>5. 字符串与数学函数 <br />
<a href="http://www.datejs.com/"><strong>Date.js</strong></a><br />
和日期打交道不是件容易事，有很多格式要处理。<strong>Datejs</strong> 可以很好地处理简单或复杂的日期函数。可以将日期解析出诸如“Next thursday”，“+2 years”一类的格式，也支持所有日期形式，如 2009.01.08, 12/6/2001。<br />
<a href="http://www.datejs.com/"><img src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/datejs.jpg" alt="Datejs" height="116" /></a></p>
<p><a href="http://sylvester.jcoglan.com/"><strong>Sylvester</strong></a><br />
一个处理矢量和点阵的数学 JavaScript 库，包含多维矢量和点阵建模类，以及在3D空间的一些模型。<br />
<a href="http://sylvester.jcoglan.com/"><img src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/sylvester.gif" alt="Sylvester" height="116" /></a></p>
<p><a href="http://ejohn.org/projects/javascript-pretty-date/"><strong>Pretty Date</strong> </a><br />
一个很出色的 JavaScript 库，用一种很漂亮，很友好的方式显示日期，如下图所示。<br />
<a href="http://ejohn.org/projects/javascript-pretty-date/"><img src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/pretty-date.gif" alt="Pretty Date" width="480" height="116" /></a></p>
<p><a href="http://stevenlevithan.com/regex/xregexp/"><strong>XRegExp</strong></a><br />
JavaScript 中的 RegExp 对象已经支持正则表达式，<strong>XRegExp</strong> 增加了更多未来浏览器可能包含的功能（ECMAScript 4 &#8211; ES4）。该库对 RegExp 对象进行缓存，重用并增加了众多新功能。</p>
<p><a href="http://www.fliquidstudios.com/projects/javascript-url-library/"><strong>JavaScript URL Library</strong></a><br />
一个用来处理 URL 的 JavaScript 库，可以对 URL 中的任意部分进行处理。<br />
6. Fonts <br />
<a href="http://typeface.neocracy.org/"><strong>typeface.js</strong></a><br />
这个库可以让你在网页中使用任意字体，但和 <a href="http://www.mikeindustries.com/blog/sifr/">sIFR</a> 以及 <a href="http://facelift.mawhorter.net/">FLIR</a> 这些基于 Flash 的方案不一样，<strong>typeface.js</strong> 100% 基于 JavaScript，只需将你的字体文件上传到一个<a href="http://typeface.neocracy.org/fonts.html">基于 Web 的生成器</a>那里，再将生成的 JavaScript 文件下载回来包含到网页中即可。<br />
<a href="http://typeface.neocracy.org/"><img src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/typeface-js.gif" alt="Typeface.js" height="116" /></a></p>
<p><a href="http://cufon.shoqolate.com/generate/"><strong>Cufón</strong></a><br />
和 typeface.js 很相像，<strong>Cufón</strong> 也可以让你在网页中使用任意字体，同样，它也是使用一个生成器，将字体转换成 VML，将生成的 .js 文件包含到网页即可。<br />
7. 调试与记录 <br />
<a href="http://www.gscottolson.com/blackbirdjs/"><strong>Blackbird</strong></a><br />
人们经常使用 Alert() 调试 JavaScript 程序，<strong>Blackbird</strong> 提供了一个漂亮的控制台记录，查看，过滤程序的运行。<br />
<a href="http://www.gscottolson.com/blackbirdjs/"><img src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/blackbird.jpg" alt="Blackbird" height="116" /></a></p>
<p><a href="http://www.nitobibug.com/"><strong>NitobiBug</strong></a><br />
基于浏览器的跨浏览器 javaScript 对象记录与检查工具。<br />
<a href="http://www.nitobibug.com/"><img src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/nitobibug.jpg" alt="NitobiBug" height="116" /></a></p>
<p><a href="http://getfirebug.com/lite.html"><strong>Firebug Lite</strong></a><br />
目前最好的 JavaScript 调试工具非 <strong>Firebug</strong> 莫属，然而该工具只支持 FireFox，将 <strong>Firebug Lite</strong> .js 文件插入你的网页，就可以在所有浏览器都实现 FireBug 功能。<br />
<a href="http://getfirebug.com/lite.html"><img src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/firebug-lite.jpg" alt="Firebug Lite" height="116" /></a><br />
8. 其它 <br />
<a href="http://code.google.com/p/swfobject/"><strong>swfobject</strong></a><br />
这是一个最受欢迎的对 Flash 对象进行引用的方法。可以生成标准 swf 引用代码，并探测用户播放器版本。如果用户版本不支持，会显示备用内容。<br />
<a href="http://code.google.com/p/swfobject/"><img src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/swjobject.jpg" alt="swfobject" height="116" /></a></p>
<p><a href="http://www.kryogenix.org/code/browser/sorttable/"><strong>sorttable</strong></a><strong> 与 </strong><a href="http://www.danvk.org/wp/dragtable/"><strong>dragtable</strong></a><br />
不管你喜欢与否，table 仍然是最好的表现数据的方式，但可以更好地利用。<strong>sorttable</strong> 可以让表格数据排序，只需在 table 上加一个 class=&#8221;sortable&#8221; 标志，还可以排除指定的栏。<strong>dragtable</strong> 让表格的栏可以拖动，在表格上加上 class=&#8221;dragable&#8221; 标志即可，这两个类可以结合起来使用，只需加上 class=&#8221;sortable dragtable&#8221; 即可。</p>
<p><a href="http://dillerdesign.com/experiment/DD_roundies/"><strong>DD_roundies</strong></a><strong> 与 </strong><a href="http://www.dillerdesign.com/experiment/DD_belatedPNG/"><strong>DD_belatedPNG</strong></a><br />
<strong>DD_roundies</strong> 可以不依赖图片实现圆角功能，只面向 IE， 通过 VML 实现，其它浏览器会被略过，因为那些浏览器本身支持 CSS 圆角。<br />
<a href="http://dillerdesign.com/experiment/DD_roundies/"><img src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/javascript-round-corners.jpg" alt="JavaScript Rounded Corners" height="116" /></a><br />
<strong>DD_belatedPNG</strong> 是为了解决 IE6 对 PNG 支持不好问题而开发的，不管 PNG 图片用于 src 还是 background-image，<strong>DD_belatedPNG</strong> 都能提供修补。</p>
<p><a href="http://www.leigeber.com/2008/04/custom-javascript-dialog-boxes/"><strong>Custom JavaScript Dialog Boxes</strong></a><br />
一个只有 4.5K 的轻量 JavaScript 库，可以创建用户定制对话框，可显示4种类型的消息框，alerts, warnings, prompts, success。可以设定消息框标题，内容，以及过多长时间显示。<br />
<a href="http://www.leigeber.com/2008/04/custom-javascript-dialog-boxes/"><img src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/custom-dialog-boxes.jpg" alt="Custom Dialog Boxes" height="116" /></a></p>
<p><a href="http://www.tommysmind.com/gamejs/"><strong>GameJS</strong></a><br />
<strong>GameJS</strong> 是微软的 <a href="http://www.xna.com/">XNA 游戏框架</a>在 JavaScript 上的移植，使用 canvas 对象作为输出设备。JavaScript 不是最佳游戏平台，但对那些帧率较低的游戏也没有问题。</p>
<p><a href="http://www.tommysmind.com/gamejs/"><img src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/gamejs.jpg" alt="GameJS" height="116" /></a></p>
<p><a href="http://www.openjs.com/scripts/events/keyboard_shortcuts/"><strong>Shortcuts.js</strong></a><br />
从 Google Reader 和 Gmail 开始，Web 程序中的快捷键开始流行起来。<strong>Shorcuts.js</strong> 让快捷键的处理变得简单。</p>
<p><a href="http://mapstraction.com/"><strong>Mapstraction</strong></a><br />
有不少地图提供商都提供不同 API，如果你要更换提供商，比如从 Google Maps 到 MapQuest，需要更新代码，<strong>Mapstraction</strong> 提供了常用地图提供商的 API，只需该一行代码就能完成转换。<br />
<a href="http://mapstraction.com/"><img src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/mapstraction.jpg" alt="Mapstraction" height="116" /></a></p>
<p><a href="http://amberjack.org/"><strong>Amberjack</strong></a><br />
一个只有 4K 的微型 JavaScript 库，可以为你的网站添加漂亮的教程功能，一个模式窗口会以教程的形式显示任意内容，教程中的步骤可以通过手工编码实现或<a href="http://amberjack.org/wizard/">在线自动生成</a>。可以使用<a href="http://amberjack.org/skins/">主题</a>或 CSS 控制内容的格式。<br />
<a href="http://amberjack.org/"><img src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/amberjack.jpg" alt="Amberjack" height="116" /></a></p>
<p><a href="http://jsload.net/"><strong>JsLoad</strong></a><br />
JsLoad 可以从 Google server 远程加载各种 JavaScript 库，可以自动加载各种版本的支撑库。</p>
<p>本文国际来源：<a href="http://www.smashingmagazine.com/2009/03/02/40-stand-alone-javascript-libraries-for-specific-purposes/">http://www.smashingmagazine.com/2009/03/02/40-stand-alone-javascript-libraries-for-specific-purposes/</a><br />
中文翻译来源：<a href="http://www.comsharp.com/">COMSHARP CMS</a> 官方网站</p>

	标签：<a href="http://www.vpnall.com/tag/ajax/" title="ajax" rel="tag">ajax</a>, <a href="http://www.vpnall.com/tag/javascript/" title="JavaScript" rel="tag">JavaScript</a>, <a href="http://www.vpnall.com/tag/js/" title="js" rel="tag">js</a>, <a href="http://www.vpnall.com/tag/%e8%bd%bb%e9%87%8f%e7%ba%a7/" title="轻量级" rel="tag">轻量级</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.vpnall.com/2010/01/%e7%94%a8js%e7%9a%84json_decode%e8%a7%a3%e5%86%b3json%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98/" title="用js的json_decode解决JSON中文编码问题 (2010-01-26)">用js的json_decode解决JSON中文编码问题</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/09/%e9%be%99%e5%8d%9aajax%e6%a1%86%e6%9e%b6/" title="龙博AJAX框架 (2009-09-08)">龙博AJAX框架</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/06/%e6%95%b4%e7%90%86%e5%ae%9e%e7%94%a8javascript%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7/" title="整理实用JavaScript开发工具 (2009-06-24)">整理实用JavaScript开发工具</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/10/javascript-refresh-page/" title="[转]利用javascript实现web页面刷新的方法 (2009-10-03)">[转]利用javascript实现web页面刷新的方法</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/jquery-ajax-introduction/" title="[转]jQuery Ajax 全解析 (2009-03-03)">[转]jQuery Ajax 全解析</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/10/%e8%bd%acjavascript%e6%8a%8a%e6%95%b0%e5%ad%97%e6%a0%bc%e5%bc%8f%e5%8c%96%e8%bd%ac%e6%8d%a2%e6%88%90%e8%b4%a7%e5%b8%81%e5%9e%8b/" title="[转]javascript把数字格式化转换成货币型 (2009-10-08)">[转]javascript把数字格式化转换成货币型</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/40-stand-alone-javascript-libraries-for-specific-purposes/" title="[转]40 个轻量级 JavaScript 库 （上） (2009-03-05)">[转]40 个轻量级 JavaScript 库 （上）</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/07/js%e5%ae%9e%e7%8e%b0%e9%a1%b5%e9%9d%a2%e7%84%a6%e7%82%b9%e8%ae%a1%e6%97%b6/" title="js实现页面焦点计时 (2009-07-27)">js实现页面焦点计时</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.vpnall.com/2009/03/40-stand-alone-javascript-libraries-for-specific-purposes2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转]40 个轻量级 JavaScript 库 （上）</title>
		<link>http://www.vpnall.com/2009/03/40-stand-alone-javascript-libraries-for-specific-purposes/</link>
		<comments>http://www.vpnall.com/2009/03/40-stand-alone-javascript-libraries-for-specific-purposes/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 13:02:46 +0000</pubDate>
		<dc:creator>lava</dc:creator>
				<category><![CDATA[代码]]></category>
		<category><![CDATA[JavaScript库]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[轻量级]]></category>

		<guid isPermaLink="false">http://www.vpnall.com/?p=50</guid>
		<description><![CDATA[流行的 JavaScript 库不胜枚举，jQuery, MooTools, Prototype, Dojo, YUI。这些 JavaScript 库功能丰富，加上它们的插件，几乎能胜任任何工作，然而这是有代价的，这些库往往导致你的网页尺寸臃肿。在某些... ]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: Arial;">流行的 JavaScript 库不胜枚举，jQuery, MooTools, Prototype, Dojo, YUI。这些 JavaScript 库功能丰富，加上它们的插件，几乎能胜任任何工作，然而这是有代价的，这些库往往导致你的网页尺寸臃肿。在某些场合，如果你只想完成特定的工作，可以使用 一些功能更专一的轻量库，本文介绍了40个非常出色的轻量级 JavaScript 库。</span></p>
<p><span style="font-family: Arial;">1. 表单相关 <br />
<a href="http://www.formassembly.com/wForms/" target="_blank"><strong>wForms</strong></a><br />
一个低调的开源项目，简化了绝大多数常用 JavaScript 表单功能，包含可以直接使用的表单验证功能，另外，还包含强大的表单同步以及表单条件判断功能。</span></p>
<p><span style="font-family: Arial;"><a href="http://www.formassembly.com/wForms/" target="_blank"><img src="http://info-database.csdn.net/Upload/2009-03-05/wforms1709.gif" alt="" /></a><br />
<a href="http://www.drlongghost.com/validanguage.php" target="_blank">Validanguage</a><br />
又一个低调的 JavaScript 表单验证框架。它拥有集成逻辑，一些设置可以针对全局，单个表单或单个对象。提供两个API，集成 AJAX 支持，缓存，以及回调函数。它提供类似 HTML 的 API 语句，以及面向对象的 JavaScript API 。</p>
<p><a href="http://www.drlongghost.com/validanguage.php" target="_blank"><img src="http://info-database.csdn.net/Upload/2009-03-05/validanguage.gif" alt="" /></a><br />
<a href="http://www.livevalidation.com/" target="_blank">LiveValidation</a></p>
<p>一个轻量的表单验证库。除了传统的验证功能，还提供实时验证，可以一边输入一遍验证。Ruby on Rails 用户可能会发现这个库非常好用，因为他们的命名规则和参数十分近似。该库既有独立版本，又有一个 Prototype 版本。</p>
<p><a href="http://www.livevalidation.com/" target="_blank"><img src="http://info-database.csdn.net/Upload/2009-03-05/live-validation.gif" alt="" /></a></p>
<p><a href="http://yav.sourceforge.net/en/index.html" target="_blank">yav</a><br />
一个强大，灵活，可扩展的表单验证库。支持各种场合，从简单的如日期，电子邮件地址以及整数的验证，到复杂的，如正则表达式。内置 AJAX 支持，输出的错误消息可以定位到对象级。</p>
<p><a href="http://www.pengoworks.com/index.cfm?action=get:qforms" target="_blank">qForms</a><br />
处理表单的整套方案。功能包括各种验证规则，防止多次发布的机制，以及锁定或解锁制定输入框。</p>
<p><a href="http://code.google.com/p/formreform/" target="_blank">formreform</a><br />
不基于 table 的多栏设计向来是一个挑战。这个微型库将传统的表单变成漂亮的多栏形式。</p>
<p><a href="http://code.google.com/p/formreform/" target="_blank"><img src="http://info-database.csdn.net/Upload/2009-03-05/formreform.gif" alt="" /></a><br />
2. 动画相关 <br />
<a href="http://fx.inetcat.com/" target="_blank">$fx()</a><br />
一个用来让 HTML 对象运动的轻量库。你可以在一个时间轴上改变任何 CSS 属性，对于复杂动画，你可以将各种效果结合起来，将对象分组，让它们并行运动。</p>
<p><a href="http://fx.inetcat.com/" target="_blank"><img src="http://info-database.csdn.net/Upload/2009-03-05/fx-javascript-animations.jpg" alt="" /></a><br />
<a href="http://coderepos.org/share/wiki/JSTweener" target="_blank">JSTweener</a><br />
一个生成中间帧的 JavaScript 库，它的 API 类似著名的中间帧引擎 Tweener。你可以指定动画时间，定义切换效果以及时延。在几乎任何点都可以触动事件。</p>
<p><a href="http://coderepos.org/share/wiki/JSTweener" target="_blank"><img src="http://info-database.csdn.net/Upload/2009-03-05/jstweener.gif" alt="" /></a><br />
<a href="http://developers.facebook.com/animation/" target="_blank">Facebook Animation</a><br />
一个强大的，用来创建可定制的，基于 CSS 的动画。在 Facebook 动画中，几行代码就可以改善 UI。语法和 FBJS （用于 Facebook 的库）一样。</p>
<p><a href="http://ryanmorr.com/archives/fx-lightweight-and-standalone" target="_blank">FX</a><br />
一个语法类似 YUI 的轻量 JavaScript 库，可以为几乎任何 CSS 属性创建中间帧。支持颜色和滚动动画，为对象设置 to 和 from 值就可以了。<br />
3. 视觉与图形效果 <br />
<a href="http://www.jscharts.com/" target="_blank">JS charts</a><br />
支持柱状图，圆饼图以及简单的曲线图。直接将这个库插入网页，然后从 XML 文件或 JavaScript 数组变量调用数据。PNG 格式，兼容所有主要浏览器。</p>
<p><a href="http://www.jscharts.com/" target="_blank"><img src="http://info-database.csdn.net/Upload/2009-03-05/js-charts.jpg" alt="" /></a><br />
<a href="http://www.c3dl.org/" target="_blank">Canvas 3D JS Library (C3DL)</a><br />
C3DL 使 3D 程序的编写变得简单。提供一套数学，场景与 3D 对象类，可以直接在浏览器中开发 3D 内容，不需要很深的 3D 知识。</p>
<p><a href="http://www.c3dl.org/" target="_blank"><img src="http://info-database.csdn.net/Upload/2009-03-05/c3dl.jpg" alt="" /></a><br />
<a href="http://ejohn.org/blog/processingjs/" target="_blank">Processing.js</a><br />
这是 Processing 语言在 JavaScript 的移植。2D输出功能丰富。提供了绘图，色彩处理，字体，对象等处理函数。</p>
<p><a href="http://ejohn.org/blog/processingjs/" target="_blank"><img src="http://info-database.csdn.net/Upload/2009-03-05/processing-js.gif" alt="" /></a><br />
<a href="http://raphaeljs.com/" target="_blank">Raphaël</a><br />
一个让人惊叹的 JavaScript 库，可以在 Web 上实现矢量图。使用 SVG, VML 创建的图形可以被更改或绑定事件。功能极其丰富，包括旋转，动画，缩放等。</p>
<p><a href="http://raphaeljs.com/" target="_blank"><img src="http://info-database.csdn.net/Upload/2009-03-05/raphael-js.jpg" alt="" /></a></p>
<p><a href="http://www.nihilogic.dk/labs/imagefx/" target="_blank">ImageFX</a><br />
该 JavaScript 库为图片添加效果，如虚化，锐化，浮雕，加亮等。ImageFX 使用画布对象实现这些效果，兼容所有主流浏览器。这个库非常容易使用，只要将 .js 库文件插入网页，调用那些函数即可。</p>
<p><a href="http://www.nihilogic.dk/labs/imagefx/" target="_blank"><img src="http://info-database.csdn.net/Upload/2009-03-05/imagefx.jpg" alt="" /></a><br />
<a href="http://www.pixastic.com/" target="_blank">Pixastic</a><br />
Pixastic 使用 HTML5 画布对象，允许对原始像素进行操作。效果包括去饱和度，灰度级，反转，亮度，对比度调整，色调，饱和度调整，以及浮雕，虚化等效果。因为用到了 HTML 5 的画布对象，因此还无法兼容所有浏览器。</p>
<p><a href="http://cow.neondragon.net/stuff/reflection/" target="_blank">Reflection.js</a><br />
一个很低调的 JavaScript 自动实现倒影效果。倒影的高度，透明度可以调整。支持所有主流浏览器，文件尺寸小于5K。</p>
<p><a href="http://cow.neondragon.net/stuff/reflection/" target="_blank"><img src="http://info-database.csdn.net/Upload/2009-03-05/reflection-js5388.jpg" alt="" /></a></p>
<p>4. 数据库 <br />
<a href="http://taffydb.com/" target="_blank">Taffy DB</a><br />
一个 JavaScript 库，可以看作浏览器中的 SQL Server，或高级数组管理器。在使用了 AJAX 的程序中，可以用作数据库层，可以创建，读取，编辑，删除数据，使用循环，排序以及高级查询。</p>
<p><a href="http://www.activerecordjs.org/" target="_blank">ActiveRecord.js</a><br />
这个库支持 Google Gears 以及 Chrome，Aptana Jaxer, Adobe AIR 以及任何支持 HTML 5 SQL 细则的平台（目前有 Webkit 以及 iPhone）。可以自动创建表，验证和同步数据。</p>
<p><a href="http://www.activerecordjs.org/" target="_blank"><img src="http://info-database.csdn.net/Upload/2009-03-05/activerecord-js.gif" alt="" /></a></p>
<p>本文国际来源：http://www.smashingmagazine.com/2009/03/02/40-stand-alone-javascript-libraries-for-specific-purposes/<br />
中文翻译来源：COMSHARP CMS 官方网站</p>
<p></span></p>

	标签：<a href="http://www.vpnall.com/tag/javascript%e5%ba%93/" title="JavaScript库" rel="tag">JavaScript库</a>, <a href="http://www.vpnall.com/tag/js/" title="js" rel="tag">js</a>, <a href="http://www.vpnall.com/tag/%e8%bd%bb%e9%87%8f%e7%ba%a7/" title="轻量级" rel="tag">轻量级</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.vpnall.com/2009/03/40-stand-alone-javascript-libraries-for-specific-purposes2/" title="[转]40 个轻量级 JavaScript 库 （下） (2009-03-07)">[转]40 个轻量级 JavaScript 库 （下）</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/09/%e9%be%99%e5%8d%9aajax%e6%a1%86%e6%9e%b6/" title="龙博AJAX框架 (2009-09-08)">龙博AJAX框架</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/04/%e8%bd%ac-%e5%9c%a8%e6%b5%8f%e8%a7%88%e5%99%a8%e5%8f%b3%e9%94%ae%e6%b7%bb%e5%8a%a0%e8%87%aa%e5%ae%9a%e4%b9%89%e8%8f%9c%e5%8d%95/" title="转 在浏览器右键添加自定义菜单 (2010-04-27)">转 在浏览器右键添加自定义菜单</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/01/disable-a-button-in-a-jquery-dialog-from-a-function/" title="用函数使JQuery ui dialog的按钮是否可用 (2010-01-29)">用函数使JQuery ui dialog的按钮是否可用</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/01/%e7%94%a8js%e7%9a%84json_decode%e8%a7%a3%e5%86%b3json%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98/" title="用js的json_decode解决JSON中文编码问题 (2010-01-26)">用js的json_decode解决JSON中文编码问题</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/06/%e6%95%b4%e7%90%86%e5%ae%9e%e7%94%a8javascript%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7/" title="整理实用JavaScript开发工具 (2009-06-24)">整理实用JavaScript开发工具</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/10/javascript-refresh-page/" title="[转]利用javascript实现web页面刷新的方法 (2009-10-03)">[转]利用javascript实现web页面刷新的方法</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/%e8%bd%ac%e2%80%9d%e5%ae%8c%e7%be%8e%e2%80%9d%e8%b7%a8%e5%9f%9f/" title="[转]”完美”跨域 (2009-03-26)">[转]”完美”跨域</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.vpnall.com/2009/03/40-stand-alone-javascript-libraries-for-specific-purposes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转]jQuery Ajax 全解析</title>
		<link>http://www.vpnall.com/2009/03/jquery-ajax-introduction/</link>
		<comments>http://www.vpnall.com/2009/03/jquery-ajax-introduction/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 07:53:41 +0000</pubDate>
		<dc:creator>lava</dc:creator>
				<category><![CDATA[代码]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://www.vpnall.com/?p=30</guid>
		<description><![CDATA[本文地址: jQuery Ajax 全解析
本文作者：QLeelulu
转载请标明出处！
jQuery确实是一个挺好的轻量级的JS框架，能帮助我们快速的开发JS应用，并在一定程度上改变了我们写JavaScript代码的习惯。
废话... ]]></description>
			<content:encoded><![CDATA[<p>本文地址: <a href="http://www.cnblogs.com/QLeelulu/archive/2008/04/20/1163021.html">jQuery Ajax 全解析</a></p>
<p>本文作者：<a href="http://qleelulu.cnblogs.com/" target="_blank">QLeelulu</a></p>
<p>转载请标明出处！</p>
<p>jQuery确实是一个挺好的轻量级的JS框架，能帮助我们快速的开发JS应用，并在一定程度上改变了我们写JavaScript代码的习惯。</p>
<p>废话少说，直接进入正题，我们先来看一些简单的方法，这些方法都是对jQuery.ajax()进行封装以方便我们使用的方法，当然，如果要处理复杂的逻辑，还是需要用到jQuery.ajax()的(这个后面会说到).</p>
<p><span style="font-size: medium;"><span style="color: #bb0000;"><strong>1. load</strong>( url, [data], [callback] ) ：载入远程 HTML 文件代码并插入至 DOM 中。</span></span></p>
<p><strong>url </strong>(String) : 请求的HTML页的URL地址。</p>
<p><strong>data </strong>(Map) : (可选参数) 发送至服务器的 key/value 数据。</p>
<p><strong>callback </strong>(Callback) : (可选参数) 请求完成时(<span style="color: #bb0000;">不需要是success的</span>)的回调函数。</p>
<p>这个方法默认使用 GET 方式来传递的，如果[data]参数有传递数据进去，就会自动转换为POST方式的。jQuery 1.2 中，可以指定选择符，来筛选载入的 HTML 文档，DOM 中将仅插入筛选出的 HTML 代码。语法形如 &#8220;url #some &gt; selector&#8221;。</p>
<p>这个方法可以很方便的动态加载一些HTML文件，例如表单。</p>
<p>示例代码：</p>
<pre>$("<span>.ajax.load</span>").load("<span>http://www.cnblogs.com/QLeelulu/archive/2008/03/30/1130270.html .post</span>",
		<span>function</span> (responseText, textStatus, XMLHttpRequest){
		<span>this</span>;<span>//在这里this指向的是当前的DOM对象，即$(".ajax.load")[0]</span>
		<span>//alert(responseText);//请求返回的内容</span>
		<span>//alert(textStatus);//请求状态：success，error</span>
		<span>//alert(XMLHttpRequest);//XMLHttpRequest对象</span>
});</pre>
<p> </p>
<div class="ajax load">这里将显示结果。</div>
<input id="btnload" type="button" value="Load" /> </p>
<p> </p>
<p><strong><span style="color: #bb0000;">注：</span></strong>不知道为什么URL写绝对路径在FF下会出错，知道的麻烦告诉下。下面的get()和post()示例使用的是绝对路径，所以在FF下你将会出错并不会看到返回结果。<span style="color: #ff00ff;">还有get()和post()示例都是跨域调用的，发现传上来后没办法获取结果，所以把运行按钮去掉了。</span></p>
<p> </p>
<p><span style="font-size: medium;"><span style="color: #bb0000;"><strong>2. jQuery.get</strong>( url, [data], [callback] )：使用GET方式来进行异步请求</span></span></p>
<blockquote><p>参数：</p>
<p><strong>url </strong>(String) :  发送请求的URL地址.</p>
<p><strong>data </strong>(Map) : (可选) 要发送给服务器的数据，以 Key/value 的键值对形式表示，会做为QueryString附加到请求URL中。</p>
<p><strong>callback </strong>(Function) : (可选) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法)。</p></blockquote>
<p>这是一个简单的 GET 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数，请使用 $.ajax。示例代码：</p>
<pre>		$.get("<span>./Ajax.aspx</span>", {Action:"<span>get</span>",Name:"<span>lulu</span>"}, <span>function</span> (data, textStatus){
				<span>//返回的 data 可以是 xmlDoc, jsonObj, html, text, 等等.</span>
				<span>this</span>; <span>// 在这里this指向的是Ajax请求的选项配置信息，请参考下图</span>
				<span>alert</span>(data);
				<span>//alert(textStatus);//请求状态：success，error等等。
                                  当然这里捕捉不到error，因为error的时候根本不会运行该回调函数</span>
				<span>//alert(this);</span>
		});</pre>
<p>点击发送请求：</p>
<p>jQuery.get()回调函数里面的 this ，指向的是Ajax请求的选项配置信息：</p>
<p><a href="http://images.cnblogs.com/cnblogs_com/QLeelulu/WindowsLiveWriter/jQueryAjax_B934/image_4.png"><img src="http://images.cnblogs.com/cnblogs_com/QLeelulu/WindowsLiveWriter/jQueryAjax_B934/image_thumb_1.png" border="0" alt="image" width="466" height="289" /></a></p>
<p> </p>
<p><span style="font-size: medium;"><span style="color: #bb0000;"><strong>3. jQuery.post</strong>( url, [data], [callback], [type] ) ：使用POST方式来进行异步请求</span></span></p>
<p> </p>
<blockquote><p>参数：</p>
<p><strong>url </strong>(String) : 发送请求的URL地址.</p>
<p><strong>data </strong>(Map) : (可选) 要发送给服务器的数据，以 Key/value 的键值对形式表示。</p>
<p><strong>callback </strong>(Function) : (可选) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法)。</p>
<p><strong>type</strong> (String) : (可选)官方的说明是：Type of data to be sent。其实应该为客户端请求的类型(JSON,XML,等等)</p></blockquote>
<p>这是一个简单的 POST 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数，请使用 $.ajax。示例代码：</p>
<p>Ajax.aspx：</p>
<pre>Response.ContentType = "<span>application/json</span>";
Response.Write("<span>{result: '</span>" + Request["<span>Name</span>"] + "<span>,你好！(这消息来自服务器)'}</span>");</pre>
<p>jQuery 代码：</p>
<pre>$.post("<span>Ajax.aspx</span>", { Action: "<span>post</span>", Name: "<span>lulu</span>" },
		<span>function</span> (data, textStatus){
			<span>// data 可以是 xmlDoc, jsonObj, html, text, 等等.</span>
			<span>//this; // 这个Ajax请求的选项配置信息，请参考jQuery.get()说到的this</span>
			<span>alert</span>(data.result);
		}, "<span>json</span>");</pre>
<p>点击提交：</p>
<p>这里设置了请求的格式为&#8221;json&#8221;：</p>
<p><a href="http://images.cnblogs.com/cnblogs_com/QLeelulu/WindowsLiveWriter/jQueryAjax_B934/image_6.png"><img src="http://images.cnblogs.com/cnblogs_com/QLeelulu/WindowsLiveWriter/jQueryAjax_B934/image_thumb_2.png" border="0" alt="image" width="440" height="125" /></a></p>
<p>如果你设置了请求的格式为&#8221;json&#8221;，此时你没有设置Response回来的ContentType 为：Response.ContentType = &#8220;application/json&#8221;; 那么你将无法捕捉到返回的数据。</p>
<p>注意一下，<span>alert</span>(data.result); 由于设置了Accept报头为“json”，这里返回的data就是一个对象，并不需要用eval()来转换为对象。</p>
<p> </p>
<p><span style="color: #bb0000;"><span style="font-size: medium;"><strong>4. jQuery.getScript</strong>( url, [callback] ) : 通过 GET 方式请求载入并执行一个 JavaScript 文件</span>。</span></p>
<blockquote>
<h4>参数</h4>
<p><strong>url </strong>(String) : 待载入 JS 文件地址。</p>
<p><strong>callback </strong>(Function) : (可选) 成功载入后回调函数。</p></blockquote>
<p>jQuery 1.2 版本之前，getScript 只能调用同域 JS 文件。 1.2中，您可以跨域调用 JavaScript 文件。注意：Safari 2 或更早的版本不能在全局作用域中同步执行脚本。如果通过 getScript 加入脚本，请加入延时函数。</p>
<p>这个方法可以用在例如当只有编辑器focus()的时候才去加载编辑器需要的JS文件.下面看一些示例代码：</p>
<p>加载并执行 test.js。<strong>jQuery 代码:</strong></p>
<p>$.getScript(&#8220;test.js&#8221;);</p>
<hr />加载并执行 AjaxEvent.js ，成功后显示信息。</p>
<p> </p>
<p><strong>jQuery 代码:</strong></p>
<pre>$.getScript("<span>AjaxEvent.js</span>", <span>function</span>(){
		<span>alert</span>("<span>AjaxEvent.js 加载完成并执行完成.你再点击上面的Get或Post按钮看看有什么不同？</span>");
});</pre>
<input id="btngetScript" type="button" value="加载并运行Ajax全局事件脚本" /> </p>
<input id="btnremoveScript" type="button" value="取消Ajax全局事件" />
<p>加载完后请重新点击一下上面的 Load 请求看看有什么不同。</p>
<p><span style="color: #bb0000; font-size: medium;"><strong>jQuery Ajax 事件</strong></span></p>
<p>Ajax请求会产生若干不同的事件，我们可以订阅这些事件并在其中处理我们的逻辑。在jQuery这里有两种Ajax事件：局部事件 和 全局事件。</p>
<p><strong>局部事件</strong>就是在每次的Ajax请求时在方法内定义的，例如：</p>
<pre> $.ajax({
   beforeSend: <span>function</span>(){
     <span>// Handle the beforeSend event</span>
   },
   complete: <span>function</span>(){
     <span>// Handle the complete event</span>
   }
   <span>// ...</span>
 });</pre>
<p><strong>全局事件</strong>是每次的Ajax请求都会触发的，它会向DOM中的所有元素广播，在上面 getScript() 示例中加载的脚本就是全局Ajax事件。全局事件可以如下定义：</p>
<pre> $("<span>#loading</span>").bind("<span>ajaxSend</span>", <span>function</span>(){
   $(<span>this</span>).show();
 }).bind("<span>ajaxComplete</span>", <span>function</span>(){
   $(<span>this</span>).hide();
 });</pre>
<p>或者：</p>
<pre> $("<span>#loading</span>").ajaxStart(<span>function</span>(){
   $(<span>this</span>).show();
 });</pre>
<p>我们可以在特定的请求将全局事件禁用，只要设置下 global 选项就可以了：</p>
<pre> $.ajax({
   url: "<span>test.html</span>",
   global: <span>false</span>,<span>// 禁用全局Ajax事件.</span>
   <span>// ...</span>
 });</pre>
<p>下面是jQuery官方给出的完整的Ajax事件列表：</p>
<li><strong>ajaxStart</strong> (Global Event)<br />
This event is broadcast if an Ajax request is started and no other Ajax requests are currently running. </p>
<ul>
<li><strong>beforeSend</strong> (Local Event)<br />
This event, which is triggered before an Ajax request is started, allows you to modify the XMLHttpRequest object (setting additional headers, if need be.)</li>
<li><strong>ajaxSend</strong> (Global Event)<br />
This global event is also triggered before the request is run.</li>
<li><strong>success</strong> (Local Event)<br />
This event is only called if the request was successful (no errors from the server, no errors with the data).</li>
<li><strong>ajaxSuccess</strong> (Global Event)<br />
This event is also only called if the request was successful.</li>
<li><strong>error</strong> (Local Event)<br />
This event is only called if an error occurred with the request (you can never have both an error and a success callback with a request).</li>
<li><strong>ajaxError</strong> (Global Event)<br />
This global event behaves the same as the local error event.</li>
<li><strong>complete</strong> (Local Event)<br />
This event is called regardless of if the request was successful, or not. You will always receive a complete callback, even for synchronous requests.</li>
<li><strong>ajaxComplete</strong> (Global Event)<br />
This event behaves the same as the complete event and will be triggered every time an Ajax request finishes.</li>
</ul>
</li>
<li><strong>ajaxStop</strong> (Global Event)<br />
This global event is triggered if there are no more Ajax requests being processed.具体的全局事件请参考API文档。<br />
好了，下面开始说jQuery里面功能最强的Ajax请求方法 $.ajax();   </p>
<p> </p>
<p><span style="font-size: medium;"><span style="color: #bb0000;"><strong>jQuery.ajax</strong>( options ) : 通过 HTTP 请求加载远程数据</span></span></p>
<p>这个是jQuery 的底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。</p>
<p>$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该对象，但特殊情况下可用于手动终止请求。</p>
<p><strong>注意：</strong> 如果你指定了 dataType 选项，请确保服务器返回正确的 MIME 信息，(如 xml 返回 &#8220;text/xml&#8221;)。错误的 MIME 类型可能导致不可预知的错误。见 <a href="http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests">Specifying the Data Type for AJAX Requests</a> 。<br />
当设置 datatype 类型为 &#8217;script&#8217; 的时候，所有的远程(不在同一个域中)POST请求都回转换为GET方式。</p>
<p>$.ajax() 只有一个参数：参数 key/value 对象，包含各配置及回调函数信息。详细参数选项见下。</p>
<p>jQuery 1.2 中，您可以跨域加载 JSON 数据，使用时需将数据类型设置为 <a href="http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/">JSONP</a>。使用 <a href="http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/">JSONP</a> 形式调用函数时，如 &#8220;myurl?callback=?&#8221; jQuery 将自动替换 ? 为正确的函数名，以执行回调函数。数据类型设置为 &#8220;jsonp&#8221; 时，jQuery 将自动调用回调函数。(这个我不是很懂)</p>
<p>参数列表：</p>
<table border="1" cellspacing="2" cellpadding="2" width="600">
<tbody>
<tr>
<td width="90" valign="top"><span style="color: #bb0000;">参数名</span></td>
<td width="83" valign="top"><span style="color: #bb0000;">类型</span></td>
<td width="419" valign="top"><span style="color: #bb0000;">描述</span></td>
</tr>
<tr>
<td width="90" valign="top"><strong>url</strong></td>
<td width="83" valign="top">String</td>
<td width="419" valign="top">(默认: 当前页地址) 发送请求的地址。</td>
</tr>
<tr>
<td width="90" valign="top"><strong>type</strong></td>
<td width="83" valign="top">String</td>
<td width="419" valign="top">(默认: &#8220;GET&#8221;) 请求方式 (&#8220;POST&#8221; 或 &#8220;GET&#8221;)， 默认为 &#8220;GET&#8221;。注意：其它 HTTP 请求方法，如 PUT 和 DELETE 也可以使用，但仅部分浏览器支持。</td>
</tr>
<tr>
<td width="90" valign="top"><strong>timeout</strong></td>
<td width="83" valign="top">Number</td>
<td width="419" valign="top">设置请求超时时间（毫秒）。此设置将覆盖全局设置。</td>
</tr>
<tr>
<td width="90" valign="top"><strong>async</strong></td>
<td width="83" valign="top">Boolean</td>
<td width="419" valign="top">(默认: true) 默认设置下，所有请求均为异步请求。如果需要发送同步请求，请将此选项设置为 false。注意，同步请求将锁住浏览器，用户其它操作必须等待请求完成才可以执行。</td>
</tr>
<tr>
<td width="90" valign="top"><strong>beforeSend</strong></td>
<td width="83" valign="top">Function</td>
<td width="419" valign="top">发送请求前可修改 XMLHttpRequest 对象的函数，如添加自定义 HTTP 头。XMLHttpRequest 对象是唯一的参数。 </p>
<pre><span>function</span> (XMLHttpRequest) {
  <span>this</span>; <span>// the options for this ajax request</span>
}</pre>
</td>
</tr>
<tr>
<td width="90" valign="top"><strong>cache</strong></td>
<td width="83" valign="top">Boolean</td>
<td width="419" valign="top">(默认: true) jQuery 1.2 新功能，设置为 false 将不会从浏览器缓存中加载请求信息。</td>
</tr>
<tr>
<td width="90" valign="top"><strong>complete</strong></td>
<td width="83" valign="top">Function</td>
<td width="419" valign="top">请求完成后回调函数 (请求成功或失败时均调用)。参数： XMLHttpRequest 对象，成功信息字符串。 </p>
<pre><span>function</span> (XMLHttpRequest, textStatus) {
  <span>this</span>; <span>// the options for this ajax request</span>
}</pre>
</td>
</tr>
<tr>
<td width="90" valign="top"><strong>contentType</strong></td>
<td width="83" valign="top">String</td>
<td width="419" valign="top">(默认: &#8220;application/x-www-form-urlencoded&#8221;) 发送信息至服务器时内容编码类型。默认值适合大多数应用场合。</td>
</tr>
<tr>
<td width="90" valign="top"><strong>data</strong></td>
<td width="83" valign="top">Object,<br />
String</td>
<td width="419" valign="top">发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组，jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 &#8216;&amp;foo=bar1&amp;foo=bar2&#8242;。</td>
</tr>
<tr>
<td width="90" valign="top"><strong>dataType</strong></td>
<td width="83" valign="top">String</td>
<td width="419" valign="top">预期服务器返回的数据类型。如果不指定，jQuery 将自动根据 HTTP 包 MIME 信息返回 responseXML 或 responseText，并作为回调函数参数传递，可用值: </p>
<p>&#8220;xml&#8221;: 返回 XML 文档，可用 jQuery 处理。</p>
<p>&#8220;html&#8221;: 返回纯文本 HTML 信息；包含 script 元素。</p>
<p>&#8220;script&#8221;: 返回纯文本 JavaScript 代码。不会自动缓存结果。</p>
<p>&#8220;json&#8221;: 返回 JSON 数据 。</p>
<p>&#8220;jsonp&#8221;: <a href="http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/">JSONP</a> 格式。使用 <a href="http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/">JSONP</a> 形式调用函数时，如 &#8220;myurl?callback=?&#8221; jQuery 将自动替换 ? 为正确的函数名，以执行回调函数。</td>
</tr>
<tr>
<td width="90" valign="top"><strong>error</strong></td>
<td width="83" valign="top">Function</td>
<td width="419" valign="top">(默认: 自动判断 (xml 或 html)) 请求失败时将调用此方法。这个方法有三个参数：XMLHttpRequest 对象，错误信息，（可能）捕获的错误对象。 </p>
<pre><span>function</span> (XMLHttpRequest, textStatus, errorThrown) {
  <span>// 通常情况下textStatus和errorThown只有其中一个有值 </span>
  <span>this</span>; <span>// the options for this ajax request</span>
}</pre>
</td>
</tr>
<tr>
<td width="90" valign="top"><strong>global</strong></td>
<td width="83" valign="top">Boolean</td>
<td width="419" valign="top">(默认: true) 是否触发全局 AJAX 事件。设置为 false 将不会触发全局 AJAX 事件，如 ajaxStart 或 ajaxStop 。可用于控制不同的Ajax事件</td>
</tr>
<tr>
<td width="90" valign="top"><strong>ifModified</strong></td>
<td width="83" valign="top">Boolean</td>
<td width="419" valign="top">(默认: false) 仅在服务器数据改变时获取新数据。使用 HTTP 包 Last-Modified 头信息判断。</td>
</tr>
<tr>
<td width="90" valign="top"><strong>processData</strong></td>
<td width="83" valign="top">Boolean</td>
<td width="419" valign="top">(默认: true) 默认情况下，发送的数据将被转换为对象(技术上讲并非字符串) 以配合默认内容类型 &#8220;application/x-www-form-urlencoded&#8221;。如果要发送 DOM 树信息或其它不希望转换的信息，请设置为 false。</td>
</tr>
<tr>
<td width="90" valign="top"><strong>success</strong></td>
<td width="83" valign="top">Function</td>
<td width="419" valign="top">请求成功后回调函数。这个方法有两个参数：服务器返回数据，返回状态 </p>
<pre><span>function</span> (data, textStatus) {
  <span>// data could be xmlDoc, jsonObj, html, text, etc...</span>
  <span>this</span>; <span>// the options for this ajax request</span>
}</pre>
</td>
</tr>
</tbody>
</table>
<p>这里有几个Ajax事件参数：<strong>beforeSend </strong>，<strong>success </strong>，<strong>complete ，error 。</strong>我们可以定义这些事件来很好的处理我们的每一次的Ajax请求。注意一下，这些Ajax事件里面的 <span style="color: #0000ff;">this</span> 都是指向Ajax请求的选项信息的(请参考说 get() 方法时的this的图片)。<br />
请认真阅读上面的参数列表，如果你要用jQuery来进行Ajax开发，那么这些参数你都必需熟知的。</p>
<h4>示例代码，获取博客园首页的文章题目：</h4>
<pre>$.ajax({
		type: "<span>get</span>",
		url: "<span>http://www.cnblogs.com/rss</span>",
		beforeSend: <span>function</span>(XMLHttpRequest){
			<span>//ShowLoading();</span>
		},
		success: <span>function</span>(data, textStatus){
			$("<span>.ajax.ajaxResult</span>").html("");
			$("<span>item</span>",data).each(<span>function</span>(i, domEle){
				$("<span>.ajax.ajaxResult</span>").append("<span>&lt;li&gt;</span>"+$(domEle).children("<span>title</span>").text()+"<span>&lt;/li&gt;</span>");
			});
		},
		complete: <span>function</span>(XMLHttpRequest, textStatus){
			<span>//HideLoading();</span>
		},
		error: <span>function</span>(){
			<span>//请求出错处理</span>
		}
});</pre>
<input id="btnajax" type="button" value="读取首页RSS" />
<p class="ajax ajaxResult">这里将显示首页文章列表。</p>
<p class="ajax ajaxResult"> </p>
<p> </p>
<p><span style="color: #bb0000; font-size: medium;"><strong>其他</strong></span></p>
<p><span style="color: #bb0000;"><strong>jQuery.ajaxSetup</strong>( options ) : 设置全局 AJAX 默认选项。</span></p>
<p>设置 AJAX 请求默认地址为 &#8220;/xmlhttp/&#8221;，禁止触发全局 AJAX 事件，用 POST 代替默认 GET 方法。其后的 AJAX 请求不再设置任何选项参数。</p>
<p><strong>jQuery 代码:</strong></p>
<pre>$.ajaxSetup({
  url: "<span>/xmlhttp/</span>",
  global: <span>false</span>,
  type: "<span>POST</span>"
});
$.ajax({ data: myData });</pre>
<p> </p>
<p><strong><span style="color: #bb0000; font-size: medium;">serialize() 与 serializeArray()</span></strong></p>
<p>serialize() : 序列表表格内容为字符串。</p>
<p>serializeArray() : 序列化表格元素 (类似 &#8216;.serialize()&#8217; 方法) 返回 JSON 数据结构数据。</p>
<p>示例：</p>
<p>HTML代码：</p>
<pre><span>&lt;</span><span>p</span> <span>id</span>=<span>"results"</span><span>&gt;</span><span>&lt;</span><span>b</span><span>&gt;</span>Results: <span>&lt;/</span><span>b</span><span>&gt;</span> <span>&lt;/</span><span>p</span><span>&gt;</span>
<span>&lt;</span><span>form</span><span>&gt;</span>
  <span>&lt;</span><span>select</span> <span>name</span>=<span>"single"</span><span>&gt;</span>
    <span>&lt;</span><span>option</span><span>&gt;</span>Single<span>&lt;/</span><span>option</span><span>&gt;</span>
    <span>&lt;</span><span>option</span><span>&gt;</span>Single2<span>&lt;/</span><span>option</span><span>&gt;</span>
  <span>&lt;/</span><span>select</span><span>&gt;</span>
  <span>&lt;</span><span>select</span> <span>name</span>=<span>"multiple"</span> <span>multiple</span>=<span>"multiple"</span><span>&gt;</span>
    <span>&lt;</span><span>option</span> <span>selected</span>=<span>"selected"</span><span>&gt;</span>Multiple<span>&lt;/</span><span>option</span><span>&gt;</span>
    <span>&lt;</span><span>option</span><span>&gt;</span>Multiple2<span>&lt;/</span><span>option</span><span>&gt;</span>
    <span>&lt;</span><span>option</span> <span>selected</span>=<span>"selected"</span><span>&gt;</span>Multiple3<span>&lt;/</span><span>option</span><span>&gt;</span>
  <span>&lt;/</span><span>select</span><span>&gt;</span><span>&lt;</span><span>br</span><span>/&gt;</span>
  <span>&lt;</span><span>input</span> <span>type</span>=<span>"checkbox"</span> <span>name</span>=<span>"check"</span> <span>value</span>=<span>"check1"</span><span>/&gt;</span> check1
  <span>&lt;</span><span>input</span> <span>type</span>=<span>"checkbox"</span> <span>name</span>=<span>"check"</span> <span>value</span>=<span>"check2"</span>
<span>checked</span>=<span>"checked"</span><span>/&gt;</span> check2
  <span>&lt;</span><span>input</span> <span>type</span>=<span>"radio"</span> <span>name</span>=<span>"radio"</span> <span>value</span>=<span>"radio1"</span>
<span>checked</span>=<span>"checked"</span><span>/&gt;</span> radio1
  <span>&lt;</span><span>input</span> <span>type</span>=<span>"radio"</span> <span>name</span>=<span>"radio"</span> <span>value</span>=<span>"radio2"</span><span>/&gt;</span> radio2
<span>&lt;/</span><span>form</span><span>&gt;</span></pre>
<p><a href="http://images.cnblogs.com/cnblogs_com/QLeelulu/WindowsLiveWriter/jQueryAjax_B934/image_8.png"><img src="http://images.cnblogs.com/cnblogs_com/QLeelulu/WindowsLiveWriter/jQueryAjax_B934/image_thumb_3.png" border="0" alt="image" width="812" height="106" /></a></p>
<p><strong><span style="color: #bb0000;">serializeArray() 结果为：</span></strong></p>
<p><a href="http://images.cnblogs.com/cnblogs_com/QLeelulu/WindowsLiveWriter/jQueryAjax_B934/image_10.png"><img src="http://images.cnblogs.com/cnblogs_com/QLeelulu/WindowsLiveWriter/jQueryAjax_B934/image_thumb_4.png" border="0" alt="image" width="513" height="338" /></a></p>
<p> </p>
<p><strong><span style="color: #bb0000;">一些资源</span></strong></p>
<p>一个jQuery的Ajax Form表单插件：<a href="http://www.malsup.com/jquery/form/">http://www.malsup.com/jquery/form/</a></p>
<p>一个专门生成Loading图片的站点：<a title="http://ajaxload.info/" href="http://ajaxload.info/">http://ajaxload.info/</a>   大家觉得那些Loading比较炫的可以在这里跟帖晒一下，方便大家取用，嘎嘎</li>

	标签：<a href="http://www.vpnall.com/tag/ajax/" title="ajax" rel="tag">ajax</a>, <a href="http://www.vpnall.com/tag/jquery/" title="jquery" rel="tag">jquery</a>, <a href="http://www.vpnall.com/tag/js/" title="js" rel="tag">js</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.vpnall.com/2009/09/%e9%be%99%e5%8d%9aajax%e6%a1%86%e6%9e%b6/" title="龙博AJAX框架 (2009-09-08)">龙博AJAX框架</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/01/disable-a-button-in-a-jquery-dialog-from-a-function/" title="用函数使JQuery ui dialog的按钮是否可用 (2010-01-29)">用函数使JQuery ui dialog的按钮是否可用</a> (0)</li>
	<li><a href="http://www.vpnall.com/2010/01/%e7%94%a8js%e7%9a%84json_decode%e8%a7%a3%e5%86%b3json%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98/" title="用js的json_decode解决JSON中文编码问题 (2010-01-26)">用js的json_decode解决JSON中文编码问题</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/40-stand-alone-javascript-libraries-for-specific-purposes2/" title="[转]40 个轻量级 JavaScript 库 （下） (2009-03-07)">[转]40 个轻量级 JavaScript 库 （下）</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/03/%e5%8e%9f%e5%88%9b%e7%94%a8jquery%e5%81%9a%e4%ba%86%e4%b8%80%e4%b8%aa%e5%a4%8d%e5%88%b6%e6%b5%81%e9%87%8f%e7%9a%84%e4%b8%9c%e8%a5%bf/" title="[原创]用jquery做了一个复制流量的东西 (2009-03-28)">[原创]用jquery做了一个复制流量的东西</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/07/js%e5%ae%9e%e7%8e%b0%e9%a1%b5%e9%9d%a2%e7%84%a6%e7%82%b9%e8%ae%a1%e6%97%b6/" title="js实现页面焦点计时 (2009-07-27)">js实现页面焦点计时</a> (0)</li>
	<li><a href="http://www.vpnall.com/2009/05/jquery%e6%97%a5%e5%8e%86%e9%80%89%e6%8b%a9%e6%8f%92%e4%bb%b6datepicker-%e7%ae%80%e5%8d%95%e6%b1%89%e5%8c%96%e5%8f%8a%e5%ba%94%e7%94%a8%e5%ae%9e%e4%be%8b/" title="jquery日历选择插件datePicker 简单汉化及应用实例 (2009-05-22)">jquery日历选择插件datePicker 简单汉化及应用实例</a> (1)</li>
	<li><a href="http://www.vpnall.com/2010/01/jquery-1-3%e4%b8%ad%e6%96%b0%e5%a2%9e%e7%9a%84%e6%96%b9%e6%b3%95live%e7%9a%84%e5%ba%94%e7%94%a8/" title="jQuery 1.3中新增的方法live()的应用 (2010-01-29)">jQuery 1.3中新增的方法live()的应用</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.vpnall.com/2009/03/jquery-ajax-introduction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
