<?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>Hpyer 的未知空间 &#187; javascript</title>
	<atom:link href="http://hpyer.cn/tag/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://hpyer.cn</link>
	<description>现实的世界里寻找点滴的未知空间</description>
	<lastBuildDate>Tue, 20 Apr 2010 06:53:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>图片幻灯片JSlider</title>
		<link>http://hpyer.cn/codes/jslider</link>
		<comments>http://hpyer.cn/codes/jslider#comments</comments>
		<pubDate>Mon, 19 Jan 2009 03:19:05 +0000</pubDate>
		<dc:creator>Hpyer</dc:creator>
				<category><![CDATA[曾经的过去]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[JSlider]]></category>
		<category><![CDATA[幻灯片]]></category>

		<guid isPermaLink="false">http://hpyer.cn/?page_id=496</guid>
		<description><![CDATA[Summry / 概览：
This is an images slide based on Javascript.
这是一款基于 Javascript 的图片幻灯片程序。
DEMO / 示例：
http://demo.hpyer.cn/js/jslider/
Download / 下载：
Usage / 用法：
1. Import script / 引入脚本
&#60;script language=&#34;javascript&#34; type=&#34;text/javascript&#34; src=&#34;jslider.js&#34;&#62;&#60;/script&#62;
2. Import stylesheet / 引入样式
&#60;link rel=&#34;stylesheet&#34; type=&#34;text/css&#34; href=&#34;jslider.css&#34; /&#62;
3. Create slide / 创建幻灯片
&#60;div id=&#34;jslider2&#34; class=&#34;jslider&#34;&#62;&#60;/div&#62;&#60;script language=&#34;javascript&#34; type=&#34;text/javascript&#34;&#62;var items = [];items.push({&#160;&#160; &#160;file: 'images/1.jpg',&#160;&#160; &#160;link: '#1'});items.push({&#160;&#160; &#160;file: 'images/2.jpg',&#160;&#160; &#160;link: '#2',&#160;&#160; &#160;desc: 'Title'});JSlider.init('jslider', items, [...]]]></description>
			<content:encoded><![CDATA[<h3>Summry / 概览：</h3>
<p>This is an images slide based on Javascript.<br />
这是一款基于 Javascript 的图片幻灯片程序。</p>
<h3>DEMO / 示例：</h3>
<p><a href="http://demo.hpyer.cn/js/jslider/" target="_blank">http://demo.hpyer.cn/js/jslider/</a></p>
<h3>Download / 下载：</h3>
<a href=http://hpyer.cn/files/jslider.zip>JSlider</a> &nbsp; [v1.0 - 155.32 KB - 56 Hits]<br /><p>Standard version (without any JS libraries) / 标准版（无须任何 JS 类库）</p>

<h3>Usage / 用法：</h3>
<p>1. Import script / 引入脚本</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;"> </span><span style="color: #00008b;">language</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">src</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">jslider.js</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></div></div>
<p>2. Import stylesheet / 引入样式</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">link</span><span style="color: Gray;"> </span><span style="color: #00008b;">rel</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">stylesheet</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/css</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">href</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">jslider.css</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></div></div>
<p>3. Create slide / 创建幻灯片</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;"> </span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">jslider2</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">jslider</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;"> </span><span style="color: #00008b;">language</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />var items = [];<br />items.push({<br />&nbsp;&nbsp; &nbsp;file: 'images/1.jpg',<br />&nbsp;&nbsp; &nbsp;link: '#1'<br />});<br />items.push({<br />&nbsp;&nbsp; &nbsp;file: 'images/2.jpg',<br />&nbsp;&nbsp; &nbsp;link: '#2',<br />&nbsp;&nbsp; &nbsp;desc: 'Title'<br />});<br />JSlider.init('jslider', items, {width:'200px', height:'200px'});<br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://hpyer.cn/codes/jslider/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>利用 jsonp 进行 Javascript 的跨域数据访问</title>
		<link>http://hpyer.cn/visit-remote-data-with-jsonp-in-javascript.html</link>
		<comments>http://hpyer.cn/visit-remote-data-with-jsonp-in-javascript.html#comments</comments>
		<pubDate>Thu, 23 Oct 2008 14:32:38 +0000</pubDate>
		<dc:creator>Hpyer</dc:creator>
				<category><![CDATA[Web 技术]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[jsonp]]></category>

		<guid isPermaLink="false">http://hpyer.cn/?p=379</guid>
		<description><![CDATA[　　通过本文的描述，你将会对于 JSONP 有一个比较直观的了解，Hpyer 也相信，聪明的你也肯定可以举一反三的写出属于你自己的代码。在 Web 2.0 的总体趋势之下，JS 显得越来越重要，并成了许多网页制作者所必学的一种脚本，所以，尽情的去体会 JS 带来的乐趣吧，Enjoy it!]]></description>
			<content:encoded><![CDATA[<h4>一、基础知识</h4>
<p>　　1、什么是 <a href="http://www.json.org/" target="_blank">JSON</a>：JavaScript Object Notation (JSON) 是一种轻量级、基于文本、语言无关的数据交换格式。它是从 ECMAScript 语言标准衍生而来的。JSON为轻便的表示结构化数据，定义了一小套格式化规则。以下是一个 JSON 对象的例子：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Image</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">: </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Width</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">: </span><span style="color: Maroon;">800</span><span style="color: Gray;">,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Height</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">: </span><span style="color: Maroon;">600</span><span style="color: Gray;">,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Title</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">: </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">View from 15th Floor</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Thumbnail</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">: </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Url</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">: </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://www.example.com/image/481989943</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Height</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">: </span><span style="color: Maroon;">125</span><span style="color: Gray;">,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Width</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">: </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">100</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;">,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">IDs</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">: </span><span style="color: Olive;">[</span><span style="color: Maroon;">116</span><span style="color: Gray;">, </span><span style="color: Maroon;">943</span><span style="color: Gray;">, </span><span style="color: Maroon;">234</span><span style="color: Gray;">, </span><span style="color: Maroon;">38793</span><span style="color: Olive;">]</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br /></span><span style="color: Olive;">}</span></div></div>
<p>　　2、什么是 JSONP：JSONP（JSON with Padding）是一个非官方的协议，它允许在服务器端集成 Script tags 返回至客户端，通过 Javascript callback 的形式实现跨域访问（这仅仅是 JSONP 简单的实现形式）。</p>
<h4>二、JSONP 的原理</h4>
<p>　　首先说明一下，想要使用 JSONP 来进行跨域访问，必须服务器端支持，原因后面再解释。和 AJAX 一样，JSONP 实际上也是早已存在，只是说法相对比较新颖（貌似也出来很久了，额&#8230;），而且所有做网页开发肯定都用过。为什么这么说？应为它用到的只是所有 HTML 元素中一个简单的 script 元素。看到这是不是觉得越发奇怪了？没关系，继续看下去就会茅厕（塞）顿开的，嘿嘿～来看个例子吧：<br />
demo.html 文件</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Gray;">!</span><span style="color: #00008b;">DOCTYPE</span><span style="color: Gray;"> </span><span style="color: #00008b;">html</span><span style="color: Gray;"> </span><span style="color: #00008b;">PUBLIC</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-//W3C//DTD HTML 4.01 Transitional//EN</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://www.w3.org/TR/html4/loose.dtd</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">html</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">head</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">meta</span><span style="color: Gray;"> </span><span style="color: #00008b;">http-equiv</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Content-Type</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">content</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/html; charset=UTF-8</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">title</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">Demo</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">title</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />function say(words) {<br />&nbsp;&nbsp; &nbsp;alert(words);<br />}<br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">head</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">body</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">src</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">demo.js</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">body</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">html</span><span style="color: Olive;">&gt;</span></div></div>
<p>demo.js 文件</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">say</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Hello, everyone!</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></div></div>
<p>　　运行 demo.html 文件后，是不是看到写着“Hello, everyone!”的警告框了？你可能会觉得这个例子很简单，没什么了不起的，甚至会在想：这和 JSONP 有关系吗？那么，我可以很肯定的告诉你：有关系！而且，这个例子实际上就是 JSONP 的原型！你也许会想到，JSONP 不是访问远程数据的吗？对，试想一下，如果 demo.js 文件在其它域的服务器上呢？结果会不会出现问题？我也可以很负责的告诉你：不会！你可以将上面例子中的 demo.js 更改为：http://demo.hpyer.cn/php/jsonp.php?callback=say 再试一下。<br />
　　现在，聪明的你应该已经明白 JSONP 到底是怎么回事了，那么，再来解释一下本节开头第一句话吧。看过 demo.js 文件的内容，应该知道，其只是对一个函数（通常称之为：回调函数）的调用，而需要交互的数据则通过参数形势进行返回。所以通过 JSONP 访问的服务器需要提供一个可以设置回调函数名的接口，就像 http://demo.hpyer.cn/php/jsonp.php?callback=say 中的 callback，所以，综上所述 JSONP 是需要服务器端的支持的。附上 jsonp.php 的源码：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">&lt;?php</span><span style="color: Gray;"><br /></span><span style="color: #00008b;">$type</span><span style="color: Gray;"> = </span><span style="color: Green;">isset</span><span style="color: Olive;">(</span><span style="color: #00008b;">$_GET</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">type</span><span style="color: #8b0000;">'</span><span style="color: Olive;">])</span><span style="color: Gray;"> ? </span><span style="color: #00008b;">$_GET</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">type</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> : </span><span style="color: #8b0000;">''</span><span style="color: Gray;">;<br /></span><span style="color: #00008b;">$callback</span><span style="color: Gray;"> = </span><span style="color: Green;">isset</span><span style="color: Olive;">(</span><span style="color: #00008b;">$_GET</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">callback</span><span style="color: #8b0000;">'</span><span style="color: Olive;">])</span><span style="color: Gray;"> ? </span><span style="color: #00008b;">$_GET</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">callback</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> : </span><span style="color: #8b0000;">''</span><span style="color: Gray;">;<br /></span><span style="color: #00008b;">$json</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">''</span><span style="color: Gray;">;<br />&nbsp;<br /></span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: #00008b;">$type</span><span style="color: Gray;"> == </span><span style="color: #8b0000;">'</span><span style="color: Red;">json</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$json</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">{<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&quot;Image&quot;: {<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;Width&quot;: 800,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;Height&quot;: 600,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;Title&quot;: &quot;View from 15th Floor&quot;,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;Thumbnail&quot;: {<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;Url&quot;:&nbsp; &quot;http://www.example.com/image/481989943&quot;,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;Height&quot;: 125,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;Width&quot;: &quot;100&quot;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;},<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;IDs&quot;: [116, 943, 234, 38793]<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;}</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span><span style="color: Gray;"> </span><span style="color: Green;">else</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$json</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">&quot;Hello, everyone!&quot;</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Green;">empty</span><span style="color: Olive;">(</span><span style="color: #00008b;">$callback</span><span style="color: Olive;">))</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$json</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$callback</span><span style="color: Gray;"> . </span><span style="color: #8b0000;">'</span><span style="color: Red;">(</span><span style="color: #8b0000;">'</span><span style="color: Gray;"> . </span><span style="color: #00008b;">$json</span><span style="color: Gray;"> . </span><span style="color: #8b0000;">'</span><span style="color: Red;">)</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Green;">echo</span><span style="color: Gray;"> </span><span style="color: #00008b;">$json</span><span style="color: Gray;">;<br /></span><span style="color: Blue;">?&gt;</span></div></div>
<h4>三、jQuery 中的应用</h4>
<p>　　自 1.2 版本起，<a href="http://jquery.com/" target="_blank">jQuery</a> 加入了对 JSONP 的支持。我们可以很容易的利用 $.getJSON() 方法（或者其它基于 $.ajax() 的方法），来跨域加载 JSON 数据。来个例子吧：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Gray;">!</span><span style="color: #00008b;">DOCTYPE</span><span style="color: Gray;"> </span><span style="color: #00008b;">html</span><span style="color: Gray;"> </span><span style="color: #00008b;">PUBLIC</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-//W3C//DTD HTML 4.01 Transitional//EN</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://www.w3.org/TR/html4/loose.dtd</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">html</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">head</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">meta</span><span style="color: Gray;"> </span><span style="color: #00008b;">http-equiv</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Content-Type</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">content</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/html; charset=UTF-8</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">title</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">Demo</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">title</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">src</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">jquery.js</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />function do_jsonp() {<br />&nbsp;&nbsp; &nbsp;$.getJSON(&quot;http://demo.hpyer.cn/php/jsonp.php?type=json&amp;callback=?&quot;,<br />&nbsp;&nbsp; &nbsp;function(data) {<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;$('#result').val('data.Image.IDs: ' + data.Image.IDs);<br />&nbsp;&nbsp; &nbsp;});<br />}<br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">head</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">body</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">a</span><span style="color: Gray;"> </span><span style="color: #00008b;">href</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">javascript:do_jsonp();</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">Click me</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">a</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">br</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">textarea</span><span style="color: Gray;"> </span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">result</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">cols</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">50</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">rows</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">5</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">textarea</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">body</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">html</span><span style="color: Olive;">&gt;</span></div></div>
<p>　　你可能注意到上面的例子中，url 被写成了 http://demo.hpyer.cn/php/jsonp.php?type=json&#038;callback=?，需要说明的是，这个问号会被 jQuery 自动替换为回调函数的函数名（如果是一个匿名函数，jQuery 会自动生成一个带时间戳的函数名）。</p>
<h4>四、小结</h4>
<p>　　通过本文的描述，相信你对于 JSONP 有了一个比较直观的了解，Hpyer 也相信，你也肯定可以举一反三的写出属于你自己的代码。其实，JSONP 的实现方法并不是只有回调函数一种，还有其它方式，例如将数据赋值给一个变量等。在 Web 2.0 的总体趋势之下，JS 显得越来越重要，并成了许多网页制作者所必学的一种脚本，所以，尽情的去体会 JS 带来的乐趣吧，Enjoy it!</p>
]]></content:encoded>
			<wfw:commentRss>http://hpyer.cn/visit-remote-data-with-jsonp-in-javascript.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>L10n By Javascript 1.2 发布</title>
		<link>http://hpyer.cn/l10n-by-javascript-12-released.html</link>
		<comments>http://hpyer.cn/l10n-by-javascript-12-released.html#comments</comments>
		<pubDate>Sat, 04 Oct 2008 16:23:02 +0000</pubDate>
		<dc:creator>Hpyer</dc:creator>
				<category><![CDATA[Web 技术]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[l10n]]></category>

		<guid isPermaLink="false">http://hpyer.cn/?p=265</guid>
		<description><![CDATA[L10n By Javascript 1.2 released.
Change Log / 更新明细:

Add functions (_n and _ne) to process plural form / 增加复数形式的处理函数（_n 和 _ne）
Add option before/after to define a function to do anything before/after the translation / 增加 before/after 选择，用于增加翻译前后的事件处理
Include $.sprintf as a plugin of jQuery / 增加一个 jQuery 插件 $.sprintf
Rewrite Messages Picker, much useful then old version / [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://hpyer.cn/codes/l10n-by-javascript">L10n By Javascript</a> 1.2 released.</p>
<p>Change Log / 更新明细:</p>
<ul>
<li>Add functions (_n and _ne) to process plural form / 增加复数形式的处理函数（_n 和 _ne）</li>
<li>Add option before/after to define a function to do anything before/after the translation / 增加 before/after 选择，用于增加翻译前后的事件处理</li>
<li>Include $.sprintf as a plugin of jQuery / 增加一个 jQuery 插件 $.sprintf</li>
<li>Rewrite Messages Picker, much useful then old version / 重写信息提取器，使用更加方便</li>
<li>Fix a bug, and now we can also translate words that writed by function __ (also _e, _n and _ne) / 修正错误，现在也可以翻译由函数 __（ _e, _n 和 _ne）输出的信息</li>
<li>Move home to Google-Code / 在 Google-Code 上建立了主页 <a href="http://code.google.com/p/l10n-by-javascript/" target="_blank">http://code.google.com/p/l10n-by-javascript/</a></li>
<li>Update example and language files, removed Japanese translation because it&#8217;s not good enouph for user to understand / 更新例子和语言文件，由于翻译的效果不是很好，所以去除了日语的翻译</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://hpyer.cn/l10n-by-javascript-12-released.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>利用 JavaScript 做网站的国际化</title>
		<link>http://hpyer.cn/web-internationalization-with-javascript.html</link>
		<comments>http://hpyer.cn/web-internationalization-with-javascript.html#comments</comments>
		<pubDate>Thu, 02 Oct 2008 07:13:15 +0000</pubDate>
		<dc:creator>Hpyer</dc:creator>
				<category><![CDATA[Web 技术]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[l10n]]></category>
		<category><![CDATA[l18n]]></category>
		<category><![CDATA[localization]]></category>

		<guid isPermaLink="false">http://www.hpyer.cn/?p=29</guid>
		<description><![CDATA[　　随着我们国家的进一步改革开放，越来越多的人发现，和国际接轨的重要性。国外有多种多样的高科技值得我们去学习，同样，具有我们中国特色的产品、技术等等也不得不和国际社会相接轨。常言道，适者才能生存，更何况是在全球一体化后的这样一个大舞台上。<br />
　　科技的发展，对于我们生活的改变是可想而知的，而互联网的发展也是非常显著的。如今，网页制作者们，也不得不为了适应国际化的发展趋势，开始制作支持多国语言的网站，由此也催生出了各式各样的国际化的框架。而本文将向您介绍一种基于 Web 2.0，利用 Javascript 脚本，通过 AJAX 技术实现无刷新的将您的网页进行国际化转换的方法——<a href="http://hpyer.cn/codes/l10n-by-javascript">L10n By Javascript</a>。]]></description>
			<content:encoded><![CDATA[<p>　　随着我们国家的进一步改革开放，越来越多的人发现，和国际接轨的重要性。国外有多种多样的高科技值得我们去学习，同样，具有我们中国特色的产品、技术等等也不得不和国际社会相接轨。常言道，适者才能生存，更何况是在全球一体化后的这样一个大舞台上。<br />
　　科技的发展，对于我们生活的改变是可想而知的，而互联网的发展也是非常显著的。如今，网页制作者们，也不得不为了适应国际化的发展趋势，开始制作支持多国语言的网站，由此也催生出了各式各样的国际化的框架。而本文将向您介绍一种基于 Web 2.0，利用 Javascript 脚本，通过 AJAX 技术实现无刷新的将您的网页进行国际化转换的方法——<a href="http://hpyer.cn/codes/l10n-by-javascript">L10n By Javascript</a>。<br />
　　该脚本的设计构思，是来源于 PHP 的 <a href="http://savannah.nongnu.org/projects/php-gettext/" target="_blank">gettext</a> 框架，它可以说是 PHP 下最好的国际化方法，其相关资料大家可以 <a href="http://www.google.com/" target="_blank">google</a> 一番，就不再次详述。此外，由于该脚本是用 Javascript 编写的，所以其采用了时下最流行的 Javascript 类库——<a href="http://jquery.com" target="_blank">jQuery</a>，并撰写为一款 <a href="http://plugins.jquery.com/l10n-by-javascript" target="_blank">jQuery 插件</a>，从而可以方便的使用。<br />
　　和 <a href="http://savannah.nongnu.org/projects/php-gettext/" target="_blank">PHP gettext</a> 类似，<a href="http://hpyer.cn/codes/l10n-by-javascript">L10n By Javascript</a> 的翻译，将经历如下的步骤：</p>
<ol>
<li>在源文件（网页，如：.html 文件）中直接用英文表述</li>
<li>定义各种需要的语言资源文件（.xml 文件）</li>
<li>然后通过脚本读取一个事先定义语言资源文件</li>
<li>接着对需要翻译的原文进行匹配。如果有匹配的译文，则直接替换为译文；如果没有相应的译文，则保留原文不变。</li>
</ol>
<p>下面是一个简单的例子：</p>
<pre>&lt;html&gt;
&lt;head&gt;
&lt;title&gt;A simple example&lt;/title&gt;
&lt;script src="jquery.js" language="JavaScript" type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="jquery.l10n.js" language="JavaScript" type="text/javascript"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
$.l10n.init({
	"dir": "./languages",  // 语言资源文件的访问路径
	"lang": "zh_CN",  // 翻译的目标语言代码
	"cache": true  // 是否读取缓存中的数据
});
&lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;script type="text/javascript"&gt;
// 直接翻译
document.write($.l10n.__("Words need to be translated"));
// 或者
$.l10n._e("Words need to be translated");
&lt;/script&gt;

&lt;!-- 间接翻译 --&gt;
&lt;span&gt;Words need to be translated&lt;/span&gt;
&lt;script type="text/javascript"&gt;
$("span").l10n();  // 翻译所有 &lt;span&gt; 元素。一般情况下建议在文档完全载入后再执行该方法
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>　　虽然目前的 <a href="http://hpyer.cn/codes/l10n-by-javascript">L10n By Javascript</a> 还是个不成熟的插件，但是相信它将来定会成为一个非常不错的国际化程序。</p>
]]></content:encoded>
			<wfw:commentRss>http://hpyer.cn/web-internationalization-with-javascript.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javascript 中 click 和 dblclick 事件问题的解决办法</title>
		<link>http://hpyer.cn/solution-for-javascript-of-click-and-dblclick-event.html</link>
		<comments>http://hpyer.cn/solution-for-javascript-of-click-and-dblclick-event.html#comments</comments>
		<pubDate>Sat, 27 Sep 2008 14:21:34 +0000</pubDate>
		<dc:creator>Hpyer</dc:creator>
				<category><![CDATA[Web 技术]]></category>
		<category><![CDATA[click]]></category>
		<category><![CDATA[dblclick]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[事件]]></category>

		<guid isPermaLink="false">http://hpyer.cn/?p=234</guid>
		<description><![CDATA[　　一个DOM元素，如：div，既绑定了 click 事件，又绑定了 dblclick 事件，这两个事件分别要做独立的事情。事件处理上没有冲突，都可以各自完成各自的操作。双击的时候虽然是执行了 dblclick 事件，但是在这之前，也执行了 click 事件，那么，如何来禁止或者说屏蔽这次多余的 click 事件呢？本文将提供给您一个比较好的解决办法。]]></description>
			<content:encoded><![CDATA[<p>　　一个DOM元素，如：div，既绑定了 click 事件，又绑定了 dblclick 事件，这两个事件分别要做独立的事情。事件处理上没有冲突，都可以各自完成各自的操作。双击的时候虽然是执行了 dblclick 事件，但是在这之前，也执行了 click 事件，那么，如何来禁止或者说屏蔽这次多余的 click 事件呢？本文将提供给您一个比较好的解决办法。</p>
<p><strong>情况分析</strong>：<br />
　　首先，来了解一下点击事件发生的先后顺序：</p>
<ul>
<li>单击：mousedown, mouseup, click</li>
<li>双击：mousedown, mouseup, click, mousedown, mouseup, click, dblclick</li>
</ul>
<p>　　由此看来，dblclick 事件发生之前，实际上发生了两次 click 事件。其中，第一次的 click 是会被屏蔽掉，但是第二次则不会，所以就出现在双击的时候，也触发 click 事件。</p>
<p><strong>解决办法</strong>：<br />
　　知道了原因，接下来自然就是想办法把这次 click 给屏蔽掉，但是由于各浏览器均未提供直接去停止事件的方法，所以值得改变思路。<br />
　　由于我们只需要屏蔽一次 click 事件即可，由此联想到，可以利用 setTimeout() 方法来延时完成 click 事件的处理，在需要停止 click 的时候利用 clearTimeout() 方法停止这一事件的处理。这样，就可以比较容易的写出如下的 javascript 代码：</p>
<pre><code>
var timer = null;

function do_click(event) {
	clearTimeout(timer); // 这里加一句是为了兼容 Gecko 的浏览器
	// if (event.detail == 2) return ; // 同上句的作用

	timer = setTimeout(function() {
		// click 事件的处理
	}, 300);
}

function do_dblclick(event) {
	clearTimeout(timer);
	// dblclick 事件的处理
}
</code></pre>
<p><strong>测试代码</strong>：<br />
需要 jQuery 类库，你可以从 <a href="http://jquery.com/" target="_blank">jquery.com</a> 获取到最新版本</p>
<pre><code>
&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;title&gt;Test&lt;/title&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;

&lt;!--

var Test = {
&nbsp; &nbsp; times: 0,
&nbsp; &nbsp; timer: null,
&nbsp; &nbsp; logs: [],

&nbsp; &nbsp; first: null,
&nbsp; &nbsp; last: null,

&nbsp; &nbsp; do_click: function() {
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;var self = Test;

&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;self.start();
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;clearTimeout(self.timer);
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;self.times++;
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;self.timer = setTimeout(function() {
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;self.logs.push('click');

&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;self.echo();
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}, 300);
&nbsp; &nbsp; },

&nbsp; &nbsp; do_dblclick: function() {

&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;var self = Test;
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;clearTimeout(self.timer);
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;self.logs.push('dblclick');
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;self.echo();
&nbsp; &nbsp; },

&nbsp; &nbsp; start: function() {
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if (this.first == null) {
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;this.first = new Date().getTime();
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}

&nbsp; &nbsp; },

&nbsp; &nbsp; end: function() {
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if (this.last == null) {
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;this.last = new Date().getTime();

&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}
&nbsp; &nbsp; },

&nbsp; &nbsp; get_time: function() {
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return (this.last - this.first) || 0;

&nbsp; &nbsp; },

&nbsp; &nbsp; echo: function() {
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;var self = Test;
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;self.end();

&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;var log = 'No.' + self.times + '; Use time: ' + self.get_time() + 'ms; Event: ' + self.logs.join(', ') + ';&lt;br /&gt;\n';
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$('#log').prepend(log);
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;self.first = null;
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;self.last = null;

&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;self.logs = [];
&nbsp; &nbsp; },

&nbsp; &nbsp; init: function() {
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$(document).ready(function() {

&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$('div').click(Test.do_click).dblclick(Test.do_dblclick);
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;});
&nbsp; &nbsp; }
};

Test.init();
//--&gt;
&lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;div style=&quot;width:200px; height:50px; border:1px solid #999;&quot;&gt;Click / DblClick Me!&lt;/div&gt;
Log:&lt;br /&gt;
&lt;textarea id=&quot;log&quot; rows=&quot;20&quot; cols=&quot;50&quot;&gt;&lt;/textarea&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p><strong>问题总结</strong>：<br />
　　从测试结果来看，如果前后两次点击的时间在 300ms 左右的时候，还是很容易出现 click 和 dblclick 事件被“同时”调用的情况，而如果间隔的时间更短或更长，则只会有 click 或 dblclick 事件。<br />
　　所以，应该说这个方法已经在很大程度上，避免了 click 和 dblclick 事件的“同时”存在问题。当然，它还没有达到完全解决的程度。</p>
<p><strong>需要注意的地方</strong>：</p>
<ul>
<li>windows 的控制面板里是可以调鼠标的双击速度的（Linux 等系统下能不能调，俺就不清楚了），这点对于程序还是有一定影响，大家可以自己调节下试试看～</li>
<li>经过测试，延时 300ms 是一个比较理想的事件，既考虑到对鼠标操作并不十分顺利的朋友，也兼顾 click 事件的响应速度</li>
<li>以上代码，只在 IE6、FF3、Chrome 中测试过，并未出现问题</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://hpyer.cn/solution-for-javascript-of-click-and-dblclick-event.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
