<?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>I&#039;m qiqiboy !</title>
	<atom:link href="http://www.qiqiboy.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.qiqiboy.com</link>
	<description>一个very朝气的小孩子...</description>
	<lastBuildDate>Wed, 18 Jan 2012 03:32:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>TouchSlider 1.0 &#8211; 兼容触摸屏手机与PC的幻灯片</title>
		<link>http://www.qiqiboy.com/2012/01/11/touchslider-1-0-publish.html</link>
		<comments>http://www.qiqiboy.com/2012/01/11/touchslider-1-0-publish.html#comments</comments>
		<pubDate>Wed, 11 Jan 2012 12:39:41 +0000</pubDate>
		<dc:creator>qiqiboy</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[安卓]]></category>
		<category><![CDATA[幻灯]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://www.qiqiboy.com/?p=2854</guid>
		<description><![CDATA[注：应该是不支持IE6的。支持安卓系、iOS苹果机、平板以及PC上的浏览器，包括IE7、IE8等。 触屏手机越来越流行，所以制作网站也要越来越多的考虑手机用户的使用体验。网站上如果有轮换图片的幻灯片（走马灯）之类的功能，就要考虑触屏手机用户的使用体验，而提供他们可以通过手指滑动来切换上一张/下一张的功能，将会是很大的体验提升。 基于此考虑，我在参考了Swipe的实现后，开发了可以同时支持触屏手机手指滑动与PC上鼠标点击滑动的一段脚本，命名为“TouchSlider”。(已经有叫这个名字的脚本了？俺NO Care ^_^)。 为什么开发这个东西 上面已经说了，是为了支持触屏手机。其实还有一个更重要的原因是，为了适应手机版网站的自适应宽度特性。 由于手机、平板终端的多样性，其手机屏的分辨率各不相同，而许多网站为了适应多种设备的显示，往往是使用了自适应宽度的设计，也就是说页面宽度会随着所使用的设备的分辨率不同而有所变化，旋转设备方向后网站宽度也会变化。 之前的许多幻灯脚本只支持固定高宽的幻灯显示，所以在手机上并不能很好的工作。 这个TouchSlider的特点 也没什么特别的，主要是以下几点： 无JS库依赖，使用原生javascript开发。手机端我个人并不建议载入太多JS，能少一个请求少一个。尤其是如果为了一个很小的功能而去载入一个jQuery或者prototype之类的库，有点太不划算了。TouchSlider整个脚本大小约12KB，压缩后只有6KB。 触摸滑动与点击拖动切换全支持支持触屏手机上的触摸滑动切换，也支持PC上的点击拖动切换。详细可以参见DEMO页面，并实际使用体验。用触屏手机的可以用手指滑动切换，电脑端的用户可以用鼠标点击拖动切换。 幻灯支持多个方向切换支持向左、向右以及向上和向下滑动切换。 支持自适应浏览器宽度手机横竖屏切换或者改变浏览器宽度时，全宽度幻灯依然能正常工作适应 TouchSlider的使用以及demo 使用方法，载入TouchSlider的脚本文件，然后可以通过实例化“TouchSlider”这个类来使用。例如： new TouchSlider({ 'id': 'slider', //幻灯容器的id 'auto': 0, //是否自动开始，负数表示非自动开始，0,1,2,3....表示自动开始以及从第几个开始 'speed':600, //动画效果持续时间 ms 'timeout':5000,//幻灯切换的间隔时间 ms 'className':'', //每个幻灯所在的li标签的classname, 'direction':'left', //left right up down 'before':new Function(),//幻灯切换前的回调 'after':new [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>注：应该是不支持IE6的。支持安卓系、iOS苹果机、平板以及PC上的浏览器，包括IE7、IE8等。</p>
</blockquote>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="捕获" border="0" alt="捕获" src="http://www.qiqiboy.com/wp-content/uploads/2012/01/688860f891c5.png" width="550" height="422">触屏手机越来越流行，所以制作网站也要越来越多的考虑手机用户的使用体验。网站上如果有轮换图片的幻灯片（走马灯）之类的功能，就要考虑触屏手机用户的使用体验，而提供他们可以通过手指滑动来切换上一张/下一张的功能，将会是很大的体验提升。</p>
<p>基于此考虑，我在参考了<a href="http://swipejs.com/" target="_blank">Swipe</a>的实现后，开发了可以同时支持触屏手机手指滑动与PC上鼠标点击滑动的一段脚本，命名为“TouchSlider”。(已经有叫这个名字的脚本了？俺NO Care ^_^)。</p>
<h3>为什么开发这个东西</h3>
<p>上面已经说了，是为了支持触屏手机。其实还有一个更重要的原因是，为了适应手机版网站的自适应宽度特性。</p>
<p>由于手机、平板终端的多样性，其手机屏的分辨率各不相同，而许多网站为了适应多种设备的显示，往往是使用了自适应宽度的设计，也就是说页面宽度会随着所使用的设备的分辨率不同而有所变化，旋转设备方向后网站宽度也会变化。</p>
<p>之前的许多幻灯脚本只支持固定高宽的幻灯显示，所以在手机上并不能很好的工作。</p>
<h3>这个TouchSlider的特点</h3>
<p>也没什么特别的，主要是以下几点：</p>
<ol>
<li><strong>无JS库依赖，使用原生javascript开发。</strong><br />手机端我个人并不建议载入太多JS，能少一个请求少一个。尤其是如果为了一个很小的功能而去载入一个jQuery或者prototype之类的库，有点太不划算了。TouchSlider整个脚本大小约12KB，压缩后只有6KB。
<li><strong>触摸滑动与点击拖动切换全支持<br /></strong>支持触屏手机上的触摸滑动切换，也支持PC上的点击拖动切换。详细可以参见DEMO页面，并实际使用体验。用触屏手机的可以用手指滑动切换，电脑端的用户可以用鼠标点击拖动切换。
<li><strong>幻灯支持多个方向切换<br /></strong>支持向左、向右以及向上和向下滑动切换。
<li><strong>支持自适应浏览器宽度<br /></strong>手机横竖屏切换或者改变浏览器宽度时，全宽度幻灯依然能正常工作适应 </li>
</ol>
<h3>TouchSlider的使用以及demo</h3>
<p>使用方法，载入TouchSlider的脚本文件，然后可以通过实例化“TouchSlider”这个类来使用。例如：</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">new</span> TouchSlider({</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #006080">'id'</span>: <span style="color: #006080">'slider'</span>, <span style="color: #008000">//幻灯容器的id</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #006080">'auto'</span>: 0, <span style="color: #008000">//是否自动开始，负数表示非自动开始，0,1,2,3....表示自动开始以及从第几个开始</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #006080">'speed'</span>:600, <span style="color: #008000">//动画效果持续时间 ms</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #006080">'timeout'</span>:5000,<span style="color: #008000">//幻灯切换的间隔时间 ms</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #006080">'className'</span>:<span style="color: #006080">''</span>, <span style="color: #008000">//每个幻灯所在的li标签的classname,</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #006080">'direction'</span>:<span style="color: #006080">'left'</span>, <span style="color: #008000">//left right up down</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #006080">'before'</span>:<span style="color: #0000ff">new</span> Function(),<span style="color: #008000">//幻灯切换前的回调</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #006080">'after'</span>:<span style="color: #0000ff">new</span> Function() <span style="color: #008000">//幻灯切换后的回调</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">});</pre>

</div>
</div>
<p>这样子幻灯就会工作了。</p>
<p>当然，为了方便用户通过点击“上一张”/“下一张”来切换，实例化后的这个对象也具有一些方法来很方便的进行操作：</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">var</span> slider=<span style="color: #0000ff">new</span> TouchSlider({id:<span style="color: #006080">'slider'</span>});</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #008000">//切换上一张</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">slider.prev();</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> </pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #008000">//切换下一张</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">slider.next();</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> </pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #008000">//向前或者向后切换N张，例如，向前切换2张，可以通过 slider.prev(2) 来实现</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">sldier.prev(num);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">slider.next(num);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> </pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #008000">//暂停幻灯播放</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">slider.pause();</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> </pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #008000">//开始播放</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">slider.begin();</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> </pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #008000">//停止播放</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">slider.stop();</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> </pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #008000">//播放第N张幻灯片。N等于0,1,2...幻灯片数量</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">sldier.slide(N)</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> </pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #008000">//TouchSlider对象具有的其他属性</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">slider.index <span style="color: #008000">//当前显示的幻灯的次序</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">slider.length <span style="color: #008000">//幻灯片数量</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">slider.width, slider.height <span style="color: #008000">//幻灯当前的宽度 高度（可能会随着浏览器尺寸变化而变化）</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">slider.status <span style="color: #008000">//幻灯的状态。0表示停止，1表示正在播放，2表示暂停。-1表示脚本出错。如果出错，slider.errorInfo提供了出错信息</span></pre>

</div>
</div>
<p>具体的效果以及使用可以参见我提供的 <a href="http://u.boy.im/iphone-test/touch/" target="_blank"><strong>DEMO</strong></a> （可以用你的安卓或者苹果手机访问<a href="http://u.boy.im/iphone-test/touch" target="_blank">http://u.boy.im/iphone-test/touch</a> 体验。PC用户可以使用鼠标拖拽模拟触摸操作）。可以通过改变浏览器宽度或者横竖屏切换来查看幻灯的自适应效果。</p>
<p>源码下载点击<a href="http://u.boy.im/iphone-test/touch/base.js" target="_blank">此处下载</a>。</p>
<ul class="related_post"><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/07/810CI55J_0.jpg&amp;h=100&amp;w=100&amp;zc=1" alt="JavaScript: 支持iphone、ipad 使用两根手指放大图片" class="thumb" /><a href="http://www.qiqiboy.com/2011/07/17/javascript-touch-support-zoom-image.html" title="JavaScript: 支持iphone、ipad 使用两根手指放大图片">JavaScript: 支持iphone、ipad 使用两根手指放大图片</a> (18)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/01/Pompidou_ZH-CN3304850761.jpg&amp;h=100&amp;w=100&amp;zc=1" alt="终极完美版javascript获取并限制调整图片尺寸" class="thumb" /><a href="http://www.qiqiboy.com/2011/01/30/javascript-and-limit-access-to-adjust-the-picture-size.html" title="终极完美版javascript获取并限制调整图片尺寸">终极完美版javascript获取并限制调整图片尺寸</a> (40)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/06/5.png&amp;h=100&amp;w=100&amp;zc=1" alt="wordpress的微博时间显示方法" class="thumb" /><a href="http://www.qiqiboy.com/2011/06/10/sina-weibo-timestamp-function-2.html" title="wordpress的微博时间显示方法">wordpress的微博时间显示方法</a> (18)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/05/imgready.png&amp;h=100&amp;w=100&amp;zc=1" alt="javascript 图片预加载" class="thumb" /><a href="http://www.qiqiboy.com/2011/05/20/javascript-image-preload.html" title="javascript 图片预加载">javascript 图片预加载</a> (25)</li><li class="last"><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/04/lzyload.gif&amp;h=100&amp;w=100&amp;zc=1" alt="JavaScript &amp; images LazyLoad 图片延迟加载(伪lazyload)" class="thumb" /><a href="http://www.qiqiboy.com/2011/04/12/javascript-and-images-lazyload.html" title="JavaScript &amp; images LazyLoad 图片延迟加载(伪lazyload)">JavaScript &amp; images LazyLoad 图片延迟加载(伪lazyload)</a> (43)</li></ul><p><strong>声明:</strong> 本站遵循 <a href="http:\/\/creativecommons.org/licenses/by-nc-sa/3.0/">署名-非商业性使用-相同方式共享 3.0</a> 共享协议. 转载请注明转自 <a href="http://www.qiqiboy.com">I'm qiqiboy !</a> </p> <p>本文地址: <a href="http://qiqi.boy.im/fg">http://qiqi.boy.im/fg<a></p><span style="background:#cc5566;color:#fffff;"><h4>Hi,welcome to leave your reply.</h4></span><h3>Related comments</h3><ul><li>2012年02月1日, <a href="http://www.qiqiboy.com/2012/01/11/touchslider-1-0-publish.html#comment-17091">胡</a> say: 这么玩的啊  没搞明白</li><li>2012年01月19日, <a href="http://www.qiqiboy.com/2012/01/11/touchslider-1-0-publish.html#comment-16987">牧风</a> say: 收走研究去</li><li>2012年01月13日, <a href="http://www.qiqiboy.com/2012/01/11/touchslider-1-0-publish.html#comment-16888">十年灯</a> say: 高手啊，我最佩服能写出漂亮代码的人了</li><li>2012年01月13日, <a href="http://www.qiqiboy.com/2012/01/11/touchslider-1-0-publish.html#comment-16883">wmtimes</a> say: 嗯。效果不错。一回来就出新作品了。支持。</li><li>2012年01月12日, <a href="http://www.qiqiboy.com/2012/01/11/touchslider-1-0-publish.html#comment-16875">鑫爷</a> say: 板凳~~~ <img src='http://www.qiqiboy.com/wp-content/themes/windPaled/images/smiles/icon_evil.gif' alt=':evil:' class='wp-smiley' /> </li><li>2012年01月11日, <a href="http://www.qiqiboy.com/2012/01/11/touchslider-1-0-publish.html#comment-16869">liuqiqi</a> say: <span style="color:red;"><strong>美美的沙发。。。</strong></span> <img src='http://www.qiqiboy.com/wp-content/themes/windPaled/images/smiles/icon_razz.gif' alt=':razz:' class='wp-smiley' /> </li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.qiqiboy.com/2012/01/11/touchslider-1-0-publish.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>qiqiboy归来 &#8211; 纯吐槽</title>
		<link>http://www.qiqiboy.com/2012/01/08/qiqiboy-coming-again.html</link>
		<comments>http://www.qiqiboy.com/2012/01/08/qiqiboy-coming-again.html#comments</comments>
		<pubDate>Sun, 08 Jan 2012 04:50:58 +0000</pubDate>
		<dc:creator>qiqiboy</dc:creator>
				<category><![CDATA[Myself-Life]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[吐槽]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.qiqiboy.com/2012/01/08/qiqiboy-coming-again.html</guid>
		<description><![CDATA[博客很久没更新了，上次更新还是去年的9月16日了。算来已经快三个月了。当然，从没想过要把博客停掉，只是期间太多杂事，也没有折腾什么可分享的技术文。 还是从最近来说。 订购火车票 今天早上一早7点半多我爬起来，打开12306.cn来定火车票，战战兢兢地连续登陆了几十遍后终于在八点15分时登陆了上去。然后是订票，依然是提交了无数遍后网站依然淡定的显示着“系统忙。。。”。我眼睁睁的看着卧铺票数量从“有”变成“10”最后成为“无”。最后三十分钟后，又一次提交订单时，终于看到了“有未完成订单”的提示。遂迅速付款完成车票购买。当然，只是硬座了。 我已经问候了铁道部全家数遍。 网站宕机风波 1月5号之前的两周，我的博客访问的话会一直是“域名已被阻断”的提示。最初以为是暂时的，后来发现一个多星期了还是这个提示。于是我询问了万网（域名在万网）工作人员，答曰“域名正常解析，与他们无关”。于是联系了我的主机提供商，确认是机房屏蔽的，说是前段时间的数据库大面积泄露导致上头对未备案网站的监察收紧，他们临时屏蔽了未备案网站。我的域名是备过案的，所以我在提交了备案号后网站立马就解封了。 重见天日了。 蜗居在帝都 正因为身在帝都苟活，所以才有了开头的订购火车票回家的需求。 当然，求被请客，求腐败的需求也很旺盛。↖(^ω^)↗ 博客未来 博客继续更新，内容依然是与javascript、wordpress等技术文为主。 相信有不少之前的博客主都已经陆续离开这个圈子了，当然也有不少新人加入。有意与小站友链的，欢迎留言板申请。 感谢各位支持。 旅行在云南 (35)最近口腔溃疡+牙龈疼 (4)Social Medias Connect（社交媒体连接） (434)Guestbook (353)插件发布：边栏最新评论及ajax回复——WP RC Reply AJAX (188)声明: 本站遵循 署名-非商业性使用-相同方式共享 3.0 共享协议. 转载请注明转自 I'm qiqiboy ! 本文地址: http://qiqi.boy.im/fdLook, this post is replyed [...]]]></description>
			<content:encoded><![CDATA[<p>博客很久没更新了，上次更新还是去年的9月16日了。算来已经快三个月了。当然，从没想过要把博客停掉，只是期间太多杂事，也没有折腾什么可分享的技术文。</p>
<p>还是从最近来说。</p>
<h3>订购火车票</h3>
<p><img class="aligncenter size-full wp-image-2853" title="61b11ad9tw1douqptegsnj" alt="" src="http://www.qiqiboy.com/wp-content/uploads/2012/01/61b11ad9tw1douqptegsnj.jpg" width="955" height="416">今天早上一早7点半多我爬起来，打开12306.cn来定火车票，战战兢兢地连续登陆了几十遍后终于在八点15分时登陆了上去。然后是订票，依然是提交了无数遍后网站依然淡定的显示着“系统忙。。。”。我眼睁睁的看着卧铺票数量从“有”变成“10”最后成为“无”。最后三十分钟后，又一次提交订单时，终于看到了“有未完成订单”的提示。遂迅速付款完成车票购买。当然，只是硬座了。</p>
<p>我已经问候了铁道部全家数遍。</p>
<h3>网站宕机风波</h3>
<p>1月5号之前的两周，我的博客访问的话会一直是“域名已被阻断”的提示。最初以为是暂时的，后来发现一个多星期了还是这个提示。于是我询问了万网（域名在万网）工作人员，答曰“域名正常解析，与他们无关”。于是联系了我的主机提供商，确认是机房屏蔽的，说是前段时间的数据库大面积泄露导致上头对未备案网站的监察收紧，他们临时屏蔽了未备案网站。我的域名是备过案的，所以我在提交了备案号后网站立马就解封了。</p>
<p>重见天日了。</p>
<h3>蜗居在帝都</h3>
<p>正因为身在帝都苟活，所以才有了开头的订购火车票回家的需求。</p>
<p>当然，求被请客，求腐败的需求也很旺盛。↖(^ω^)↗</p>
<h3>博客未来</h3>
<p>博客继续更新，内容依然是与javascript、wordpress等技术文为主。</p>
<p>相信有不少之前的博客主都已经陆续离开这个圈子了，当然也有不少新人加入。有意与小站友链的，欢迎留言板申请。</p>
<p>感谢各位支持。</p>
<ul class="related_post"><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/05/200808311631407821.jpg&amp;h=100&amp;w=100&amp;zc=1" alt="旅行在云南" class="thumb" /><a href="http://www.qiqiboy.com/2011/05/27/i-am-traveling-in-yun-nan.html" title="旅行在云南">旅行在云南</a> (35)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2009/10/20091023002_thumb.gif&amp;h=100&amp;w=100&amp;zc=1" alt="最近口腔溃疡+牙龈疼" class="thumb" /><a href="http://www.qiqiboy.com/2009/10/23/nothing-the-life.html" title="最近口腔溃疡+牙龈疼">最近口腔溃疡+牙龈疼</a> (4)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/05/61b11ad9jw1dgiip0xm7qj.jpg&amp;h=100&amp;w=100&amp;zc=1" alt="Social Medias Connect（社交媒体连接）" class="thumb" /><a href="http://www.qiqiboy.com/products/plugins/social-medias-connect" title="Social Medias Connect（社交媒体连接）">Social Medias Connect（社交媒体连接）</a> (434)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/themes/windPaled/images/default-thumb.jpg&amp;h=100&amp;w=100&amp;zc=1" alt="Guestbook" class="thumb" /><a href="http://www.qiqiboy.com/guestbook" title="Guestbook">Guestbook</a> (353)</li><li class="last"><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2010/08/1de9fb000bac.png&amp;h=100&amp;w=100&amp;zc=1" alt="插件发布：边栏最新评论及ajax回复——WP RC Reply AJAX" class="thumb" /><a href="http://www.qiqiboy.com/2010/08/20/wordpress-plugin-wp-rc-reply-ajax.html" title="插件发布：边栏最新评论及ajax回复——WP RC Reply AJAX">插件发布：边栏最新评论及ajax回复——WP RC Reply AJAX</a> (188)</li></ul><p><strong>声明:</strong> 本站遵循 <a href="http:\/\/creativecommons.org/licenses/by-nc-sa/3.0/">署名-非商业性使用-相同方式共享 3.0</a> 共享协议. 转载请注明转自 <a href="http://www.qiqiboy.com">I'm qiqiboy !</a> </p> <p>本文地址: <a href="http://qiqi.boy.im/fd">http://qiqi.boy.im/fd<a></p><span style="background:#cc5566;color:#fffff;"><h4>Look, this post is replyed so hot, let's go O(∩_∩)O~.</h4></span><h3>Related comments</h3><ul><li>2012年01月16日, <a href="http://www.qiqiboy.com/2012/01/08/qiqiboy-coming-again.html#comment-16934">掌柜的马甲</a> say: 欢迎回来~网上买票买的早,没有遇到啥麻烦</li><li>2012年01月15日, <a href="http://www.qiqiboy.com/2012/01/08/qiqiboy-coming-again.html#comment-16924">超人</a> say: 乍一看以为是船票~~没想到是帝都出来的火车票。哈哈。今年不用再为购票而烦恼了 <img src='http://www.qiqiboy.com/wp-content/themes/windPaled/images/smiles/icon_twisted.gif' alt=':twisted:' class='wp-smiley' /> </li><li>2012年01月13日, <a href="http://www.qiqiboy.com/2012/01/08/qiqiboy-coming-again.html#comment-16891">康康</a> say: 春节不回家，离家近感受不到买票的热闹氛围确实是一大憾事。</li><li>2012年01月12日, <a href="http://www.qiqiboy.com/2012/01/08/qiqiboy-coming-again.html#comment-16882">jixiangac</a> say: 网上有个利用FIREBUG购票攻略的，很牛的</li><li>2012年01月12日, <a href="http://www.qiqiboy.com/2012/01/08/qiqiboy-coming-again.html#comment-16881">Maplews</a> say: 铁道部的网站都是个极品货..
太坑人.. 太坑爹</li><li>2012年01月11日, <a href="http://www.qiqiboy.com/2012/01/08/qiqiboy-coming-again.html#comment-16873">qiqiboy</a> say: <a href="#comment-16861" rel="nofollow">@鑫爷 </a> 
空间在国内放着的迟早得备案</li><li>2012年01月11日, <a href="http://www.qiqiboy.com/2012/01/08/qiqiboy-coming-again.html#comment-16872">qiqiboy</a> say: <a href="#comment-16858" rel="nofollow">@axiu </a> 
嗯，买票不易了。。过几天还要买回程票</li><li>2012年01月11日, <a href="http://www.qiqiboy.com/2012/01/08/qiqiboy-coming-again.html#comment-16871">qiqiboy</a> say: <a href="#comment-16855" rel="nofollow">@无冷 </a> 
嗯，现在好了。。</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.qiqiboy.com/2012/01/08/qiqiboy-coming-again.html/feed</wfw:commentRss>
		<slash:comments>45</slash:comments>
		</item>
		<item>
		<title>社交媒体连接 V1.6更新 支持facebook 完全重写的注册流程</title>
		<link>http://www.qiqiboy.com/2011/09/16/socila-medias-connect-1-6-update.html</link>
		<comments>http://www.qiqiboy.com/2011/09/16/socila-medias-connect-1-6-update.html#comments</comments>
		<pubDate>Fri, 16 Sep 2011 07:14:09 +0000</pubDate>
		<dc:creator>qiqiboy</dc:creator>
				<category><![CDATA[plugin]]></category>
		<category><![CDATA[SocialMedias]]></category>
		<category><![CDATA[微博]]></category>
		<category><![CDATA[插件]]></category>
		<category><![CDATA[更新]]></category>
		<category><![CDATA[社交媒体连接]]></category>

		<guid isPermaLink="false">http://www.qiqiboy.com/2011/09/16/socila-medias-connect-1-6-update.html</guid>
		<description><![CDATA[这几天抽空对我的插件 社交媒体连接 进行了更新，一连更新了三个版本，新增的特性如下： 增加对facebook的支持 使用了V1.6的同学应该已经在后台看到facebook的连接登陆图标。需要说明的是，管理员在启用facebook连接注册前，自己一定要到后台的 “绑定微博同步文章” 页面， 点击facebook的登陆连接，在弹出的要求输入facebook appid窗口中，填写为你网站申请的appid和appsecret。（不知道如何申请，那还是不要用facebook了） 设置完成后，你的网站用户才可以在前台使用facebook连接功能。 如果要修改输入的appid和appsecret。可以点击facebook连接按钮右边的“修改appKey”按钮，进行修改操作。 完全重写的账户注册流程 这是V1.6重点功能。原先的账号注册流程是： 用户点击微博连接 –》 带入到微博授权页面 –》 授权后返回网站 –》 获得授权的用户信息 –》 使用这些信息自动为用户建立账号 上面的缺点是，整个过程是自动的，用户没有选择用户名、邮箱的权利。尤其是邮箱，由于权限限制，即使授权后也无法获得用户的真实邮箱，所以使用虚拟的邮箱为用户注册后，用户也无法即时从网站得到信息（如评论回复信息）。 新的注册流程，在最后一步，将用户带到一个全新的注册页面，让他输入自己的真实可用的邮箱，这样一来就避免了上面的不足。并且如果用户愿意，他还可以自行更换一个用户名，并修改自己的网站地址（默认是用户的微博地址）。 最重要的是，使用新的注册流程后，旧的注册用户完全不受影响。 欢迎大家去更新最新版。wordpress官方下载地址 &#160; 有任何问题可以在新浪微博：http://weibo.com/qiqiboy 或者我博客任意页面留言交流。 Social Medias Connect V1.3发布 新增图片同步 (25)WordPress插件发布: Social Medias Connect (80)有关社交媒体连接插件对饭否、follow5支持的说明 (32)Social [...]]]></description>
			<content:encoded><![CDATA[<p>这几天抽空对我的插件 <a href="http://www.qiqiboy.com/products/plugins/social-medias-connect" target="_blank"><strong>社交媒体连接</strong></a> 进行了更新，一连更新了三个版本，新增的特性如下：</p>
<h3>增加对facebook的支持</h3>
<p>使用了V1.6的同学应该已经在后台看到facebook的连接登陆图标。需要说明的是，管理员在启用facebook连接注册前，自己一定要到后台的 “绑定微博同步文章” 页面， 点击facebook的登陆连接，在弹出的要求输入facebook appid窗口中，填写为你网站申请的appid和appsecret。（不知道如何申请，那还是不要用facebook了）<img style="display: block; float: none; margin-left: auto; margin-right: auto" title="fb1" alt="fb1" src="http://www.qiqiboy.com/wp-content/uploads/2011/09/fb1.png" width="397" height="376" /></p>
<p>设置完成后，你的网站用户才可以在前台使用facebook连接功能。</p>
<p>如果要修改输入的appid和appsecret。可以点击facebook连接按钮右边的“修改appKey”按钮，进行修改操作。</p>
<h3>完全重写的账户注册流程</h3>
<p>这是V1.6重点功能。原先的账号注册流程是：</p>
<blockquote><p>用户点击微博连接 –》 带入到微博授权页面 –》 授权后返回网站 –》 获得授权的用户信息 –》 使用这些信息自动为用户建立账号 </p>
</blockquote>
<p>上面的缺点是，整个过程是自动的，用户没有选择用户名、邮箱的权利。尤其是邮箱，由于权限限制，即使授权后也无法获得用户的真实邮箱，所以使用虚拟的邮箱为用户注册后，用户也无法即时从网站得到信息（如评论回复信息）。</p>
<p>新的注册流程，在最后一步，将用户带到一个全新的注册页面，让他输入自己的真实可用的邮箱，这样一来就避免了上面的不足。并且如果用户愿意，他还可以自行更换一个用户名，并修改自己的网站地址（默认是用户的微博地址）。</p>
<p>最重要的是，使用新的注册流程后，旧的注册用户完全不受影响。</p>
<p><img style="display: inline" title="ty" alt="ty" src="http://www.qiqiboy.com/wp-content/uploads/2011/09/ty.png" width="503" height="564" /></p>
<p>欢迎大家去更新最新版。<a href="http://wordpress.org/extend/plugins/social-medias-connect/" target="_blank"><strong>wordpress官方下载地址</strong></a></p>
<p>&#160;</p>
<p>有任何问题可以在新浪微博：<a href="http://weibo.com/qiqiboy" target="_blank">http://weibo.com/qiqiboy</a> 或者我博客任意页面留言交流。</p>
<ul class="related_post"><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/04/smc-plugin.gif&amp;h=100&amp;w=100&amp;zc=1" alt="Social Medias Connect V1.3发布 新增图片同步" class="thumb" /><a href="http://www.qiqiboy.com/2011/04/21/social-medias-connect-v1-3.html" title="Social Medias Connect V1.3发布 新增图片同步">Social Medias Connect V1.3发布 新增图片同步</a> (25)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/04/a9dff5b61cf6.png&amp;h=100&amp;w=100&amp;zc=1" alt="WordPress插件发布: Social Medias Connect" class="thumb" /><a href="http://www.qiqiboy.com/2011/04/15/publish-social-medias-connect.html" title="WordPress插件发布: Social Medias Connect">WordPress插件发布: Social Medias Connect</a> (80)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/05/fanfousmc.png&amp;h=100&amp;w=100&amp;zc=1" alt="有关社交媒体连接插件对饭否、follow5支持的说明" class="thumb" /><a href="http://www.qiqiboy.com/2011/05/12/social-medias-connect-about-fanfou-and-follow5.html" title="有关社交媒体连接插件对饭否、follow5支持的说明">有关社交媒体连接插件对饭否、follow5支持的说明</a> (32)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/04/comemnt-format.png&amp;h=100&amp;w=100&amp;zc=1" alt="Social Medias Connect V1.4更新，自定义同步格式 vs 标签、摘要同步" class="thumb" /><a href="http://www.qiqiboy.com/2011/04/26/social-medias-connect-v1-4.html" title="Social Medias Connect V1.4更新，自定义同步格式 vs 标签、摘要同步">Social Medias Connect V1.4更新，自定义同步格式 vs 标签、摘要同步</a> (49)</li><li class="last"><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/04/ttt.png&amp;h=100&amp;w=100&amp;zc=1" alt="新玩意儿-Social Medias Connect 微博连接" class="thumb" /><a href="http://www.qiqiboy.com/2011/04/14/social-medias-connect-plugin.html" title="新玩意儿-Social Medias Connect 微博连接">新玩意儿-Social Medias Connect 微博连接</a> (64)</li></ul><p><strong>声明:</strong> 本站遵循 <a href="http:\/\/creativecommons.org/licenses/by-nc-sa/3.0/">署名-非商业性使用-相同方式共享 3.0</a> 共享协议. 转载请注明转自 <a href="http://www.qiqiboy.com">I'm qiqiboy !</a> </p> <p>本文地址: <a href="http://qiqi.boy.im/f8">http://qiqi.boy.im/f8<a></p><span style="background:#cc5566;color:#fffff;"><h4>Look, this post is replyed so hot, let's go O(∩_∩)O~.</h4></span><h3>Related comments</h3><ul><li>2011年12月16日, <a href="http://www.qiqiboy.com/2011/09/16/socila-medias-connect-1-6-update.html#comment-16454">蓝颜博客</a> say: 第一次过来，围观一下</li><li>2011年11月26日, <a href="http://www.qiqiboy.com/2011/09/16/socila-medias-connect-1-6-update.html#comment-16006">笑话皇后</a> say: 博主的博客很专业，我学到了很多东西。目前已经用上了你的一个插件。</li><li>2011年11月14日, <a href="http://www.qiqiboy.com/2011/09/16/socila-medias-connect-1-6-update.html#comment-15581">微代码-鸿枫业</a> say: 我又来看你的新博了~~支持一下</li><li>2011年11月12日, <a href="http://www.qiqiboy.com/2011/09/16/socila-medias-connect-1-6-update.html#comment-15571">大学便民网</a> say: 收下了 还不错 之前的bug解决的了不少 但是不知道用户名太长这个解决了没 之前是太长不能注册
顺便问下 你的评论框这的编辑器怎么弄的呢？</li><li>2011年11月3日, <a href="http://www.qiqiboy.com/2011/09/16/socila-medias-connect-1-6-update.html#comment-15403">懒人工具</a> say: <a href="http://www.lrtool.net/" rel="nofollow">懒人</a>已阅，哈哈</li><li>2011年11月3日, <a href="http://www.qiqiboy.com/2011/09/16/socila-medias-connect-1-6-update.html#comment-15402">s.ing</a> say: 支持！</li><li>2011年10月31日, <a href="http://www.qiqiboy.com/2011/09/16/socila-medias-connect-1-6-update.html#comment-15309">brushes8</a> say: 曾经出现  空间不支持的情况 而且···文章发送的时候 异常的卡啊····</li><li>2011年10月14日, <a href="http://www.qiqiboy.com/2011/09/16/socila-medias-connect-1-6-update.html#comment-15056">顶屋韩国空间</a> say: 关注了，支持您</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.qiqiboy.com/2011/09/16/socila-medias-connect-1-6-update.html/feed</wfw:commentRss>
		<slash:comments>40</slash:comments>
		</item>
		<item>
		<title>wordpress 搜索自定义字段(模糊查询)</title>
		<link>http://www.qiqiboy.com/2011/09/14/query-posts-by-postmeta.html</link>
		<comments>http://www.qiqiboy.com/2011/09/14/query-posts-by-postmeta.html#comments</comments>
		<pubDate>Wed, 14 Sep 2011 09:11:13 +0000</pubDate>
		<dc:creator>qiqiboy</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[wordpress技巧]]></category>
		<category><![CDATA[开发]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://www.qiqiboy.com/2011/09/14/query-posts-by-postmeta.html</guid>
		<description><![CDATA[如果有关注我博客人，应该会发现最近一周之内博客都一直打不开。我一直以为是主机问题，今天联系了客服，才发现原来是我自己的主题的问题。所以今天花了大半天的时间一点点排除问题，最后发现原来是和gravatar的服务器被墙有关。去掉了头像缓存，问题就解决了。 当然，不会白白更新一篇博客的。下面说一个根据自定义字段查询文章的方法。 query_posts可以实现多种组合查询，但是我遇到的一个问题是，需要搜索自定义字段的值。比如为一个post定义了一个字段“my_address”，它的值表示一个地址，比如“中国 北京 海淀区 北四环路”。如果我们要想通过搜索“北京”这个关键词来找到这篇post，那么通过query_posts就办不到了。 虽然query_posts的查询有“meta_value”这个方法，但是这个必须是完整的值，也就是只有查询“中国 北京 海淀区 北四环路”这个长关键句才能找到文章，而只通过“北京”是会查询失败的。也就是说meta_value是精确查询的，而不能模糊查询。 最后，我琢磨了两种方法，虽然我自己都感觉并不怎么完美。 方法一，通过add_filter处理posts_join、posts_search勾子 add_filter( 'posts_search', 'wp_custom_search' ); function wp_custom_search($search){ if(!isset($_GET['meta_search']))return $search;//通过$_GET['meta_search']确保是要进行meta查询 $s=get_query_var('s'); $search = &#34;AND (((wp_posts.post_title LIKE '%{$s}%') OR (wp_posts.post_content LIKE '%{$s}%') OR (wp_postmeta.meta_value LIKE '%{$s}%') )) AND (wp_posts.post_password = '')&#34;; [...]]]></description>
			<content:encoded><![CDATA[<p>如果有关注我博客人，应该会发现最近一周之内博客都一直打不开。我一直以为是主机问题，今天联系了客服，才发现原来是我自己的主题的问题。所以今天花了大半天的时间一点点排除问题，最后发现原来是和gravatar的服务器被墙有关。去掉了头像缓存，问题就解决了。</p>
<p>当然，不会白白更新一篇博客的。下面说一个根据自定义字段查询文章的方法。</p>
<p>query_posts可以实现多种组合查询，但是我遇到的一个问题是，需要搜索自定义字段的值。比如为一个post定义了一个字段“my_address”，它的值表示一个地址，比如“中国 北京 海淀区 北四环路”。如果我们要想通过搜索“北京”这个关键词来找到这篇post，那么通过query_posts就办不到了。</p>
<p><span id="more-2820"></span>
<p>虽然query_posts的查询有“meta_value”这个方法，但是这个必须是完整的值，也就是只有查询“中国 北京 海淀区 北四环路”这个长关键句才能找到文章，而只通过“北京”是会查询失败的。也就是说meta_value是精确查询的，而不能模糊查询。</p>
<p>最后，我琢磨了两种方法，虽然我自己都感觉并不怎么完美。</p>
<h3>方法一，通过add_filter处理posts_join、posts_search勾子</h3>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">add_filter( <span style="color: #006080">'posts_search'</span>, <span style="color: #006080">'wp_custom_search'</span> );</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">function</span> wp_custom_search($search){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">if</span>(!<span style="color: #0000ff">isset</span>($_GET[<span style="color: #006080">'meta_search'</span>]))<span style="color: #0000ff">return</span> $search;<span style="color: #008000">//通过$_GET['meta_search']确保是要进行meta查询</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    $s=get_query_var(<span style="color: #006080">'s'</span>);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    $search = <span style="color: #006080">&quot;AND (((wp_posts.post_title LIKE '%{$s}%') </pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                OR (wp_posts.post_content LIKE '%{$s}%') </pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                OR (wp_postmeta.meta_value LIKE '%{$s}%')</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">               )) AND (wp_posts.post_password = '')&quot;</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">return</span> $search;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">}</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">add_filter( <span style="color: #006080">'posts_join'</span>, <span style="color: #006080">'wp_custom_search_join'</span> );</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">function</span> wp_custom_search_join($join){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">if</span>(!<span style="color: #0000ff">isset</span>($_GET[<span style="color: #006080">'meta_search'</span>]))<span style="color: #0000ff">return</span> $join;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    $join = <span style="color: #006080">&quot;INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)&quot;</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">return</span> $join;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">}</pre>
</div>
</div>
<p>为了不影响其它地方的query，所以我们通过检查是否有一个get请求meta_search，来判断是否要对查询进行处理。</p>
<h3>方法二，将字段信息加入到post_content中</h3>
<p>因为默认的post_title和post_content里的内容是模糊查询的，所以我们可以将postmeta的内容追加到post_content中。手动添加可以，自动加入也行。</p>
<p>下面是自动加入的方法： </p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">add_action(<span style="color: #006080">'wp_insert_post_data'</span>,<span style="color: #006080">'wp_my_post'</span>,10,2);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">function</span> wp_my_post($data, $postarr){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    $arrmeta=<span style="color: #0000ff">array</span>(<span style="color: #006080">'my_address'</span>,<span style="color: #006080">'meta2'</span>,<span style="color: #006080">'meta3'</span>);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    $info=<span style="color: #006080">'&lt;span style=&quot;display:none;color:#fff;&quot;&gt;'</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">foreach</span>($arrmeta <span style="color: #0000ff">as</span> $meta){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        $info .= <span style="color: #006080">' '</span>.$_POST[$meta];</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    }</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    $info.=<span style="color: #006080">'&lt;/span&gt;'</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    $data[<span style="color: #006080">'post_content'</span>] .= $info;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">return</span> $data;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">}</pre>
</div>
</div>
<p>仅供参考。</p>
<p>如果你还有更好的方法,欢迎与我交流分享。</p>
<p><img style="display: inline" title="rrr" alt="rrr" src="http://www.qiqiboy.com/wp-content/uploads/2011/09/rrr.png" width="464" height="348" /></p>
<ul class="related_post"><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/08/demo.png&amp;h=100&amp;w=100&amp;zc=1" alt="wordpress 按首字母排列文章/检索文章" class="thumb" /><a href="http://www.qiqiboy.com/2011/08/10/wordpress-search-post-by-first-char.html" title="wordpress 按首字母排列文章/检索文章">wordpress 按首字母排列文章/检索文章</a> (19)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/07/renren.png&amp;h=100&amp;w=100&amp;zc=1" alt="wordpress开发 - 仿淫淫网新鲜事评论的评论列表实现" class="thumb" /><a href="http://www.qiqiboy.com/2011/07/13/wordpress-comemnts-like-renren.html" title="wordpress开发 &#8211; 仿淫淫网新鲜事评论的评论列表实现">wordpress开发 &#8211; 仿淫淫网新鲜事评论的评论列表实现</a> (46)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/06/5.png&amp;h=100&amp;w=100&amp;zc=1" alt="wordpress的微博时间显示方法" class="thumb" /><a href="http://www.qiqiboy.com/2011/06/10/sina-weibo-timestamp-function-2.html" title="wordpress的微博时间显示方法">wordpress的微博时间显示方法</a> (18)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2010/1d7a79196621_DAE1/434.png&amp;h=100&amp;w=100&amp;zc=1" alt="仿腾讯微博式访客信息悬浮显示（JavaScript &amp; ajax）" class="thumb" /><a href="http://www.qiqiboy.com/2010/08/16/visitor-information-tencent-suspended-micro-display.html" title="仿腾讯微博式访客信息悬浮显示（JavaScript &amp; ajax）">仿腾讯微博式访客信息悬浮显示（JavaScript &amp; ajax）</a> (107)</li><li class="last"><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/07/810CI55J_0.jpg&amp;h=100&amp;w=100&amp;zc=1" alt="JavaScript: 让拖动支持iphone/ipad触摸" class="thumb" /><a href="http://www.qiqiboy.com/2011/07/16/javascript-touch-drag-support.html" title="JavaScript: 让拖动支持iphone/ipad触摸">JavaScript: 让拖动支持iphone/ipad触摸</a> (14)</li></ul><p><strong>声明:</strong> 本站遵循 <a href="http:\/\/creativecommons.org/licenses/by-nc-sa/3.0/">署名-非商业性使用-相同方式共享 3.0</a> 共享协议. 转载请注明转自 <a href="http://www.qiqiboy.com">I'm qiqiboy !</a> </p> <p>本文地址: <a href="http://qiqi.boy.im/f7">http://qiqi.boy.im/f7<a></p><span style="background:#cc5566;color:#fffff;"><h4>Look, this post is replyed so hot, let's go O(∩_∩)O~.</h4></span><h3>Related comments</h3><ul><li>2011年12月12日, <a href="http://www.qiqiboy.com/2011/09/14/query-posts-by-postmeta.html#comment-16353">胡实</a> say: 挖宝中 你懂得</li><li>2011年11月19日, <a href="http://www.qiqiboy.com/2011/09/14/query-posts-by-postmeta.html#comment-15704">beyondme</a> say: "Fuck you! Ni Ma Bi!" 这什么意思，网站不能留言了？</li><li>2011年10月29日, <a href="http://www.qiqiboy.com/2011/09/14/query-posts-by-postmeta.html#comment-15249">宝宝健康成长</a> say: 新的theme很给力啊！</li><li>2011年10月3日, <a href="http://www.qiqiboy.com/2011/09/14/query-posts-by-postmeta.html#comment-14919">wmtimes</a> say: 模糊查询啊。主题完成了再试。</li><li>2011年09月28日, <a href="http://www.qiqiboy.com/2011/09/14/query-posts-by-postmeta.html#comment-14757">软件风暴</a> say: 赶紧试试去 真不错</li><li>2011年09月17日, <a href="http://www.qiqiboy.com/2011/09/14/query-posts-by-postmeta.html#comment-14607">残影</a> say: <a href="#comment-13269" rel="nofollow">@liuqiqi </a> 
= = 好久没来了~~</li><li>2011年09月16日, <a href="http://www.qiqiboy.com/2011/09/14/query-posts-by-postmeta.html#comment-13931">qiqiboy</a> say: <a href="#comment-13740" rel="nofollow">@yetone </a> 
好久不见呐</li><li>2011年09月16日, <a href="http://www.qiqiboy.com/2011/09/14/query-posts-by-postmeta.html#comment-13924">qiqiboy</a> say: <a href="#comment-13729" rel="nofollow">@丕子 </a> 
哈 好久不见</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.qiqiboy.com/2011/09/14/query-posts-by-postmeta.html/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>wordpress 按首字母排列文章/检索文章</title>
		<link>http://www.qiqiboy.com/2011/08/10/wordpress-search-post-by-first-char.html</link>
		<comments>http://www.qiqiboy.com/2011/08/10/wordpress-search-post-by-first-char.html#comments</comments>
		<pubDate>Wed, 10 Aug 2011 08:01:14 +0000</pubDate>
		<dc:creator>qiqiboy</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[开发]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[网站开发]]></category>

		<guid isPermaLink="false">http://www.qiqiboy.com/2011/08/10/wordpress-search-post-by-first-char.html</guid>
		<description><![CDATA[从标题中可以看出，本文要讲两个方面内容： 第一，按标题首字母排列文章 这个简单，只需在循环（loop）前，添加 /** * 方式一，直接添加查询字符串 */ &#60;?php query_posts( $query_string . '&#38;orderby=title&#38;order=asc' ); ?&#62; /** * 方式二，合并查询数组 */ &#60;?php $args=array_merge( $wp_query-&#62;query, array( 'orderby' =&#62; 'title', 'order' =&#62; 'asc' ) ); query_posts($args); ?&#62; 注: query_posts($args)用来改变主循环，相关使用方法可查询wordpress官方说明文档。 第二，按首标题字母检索文章 这个普通用户可能用处不大，但是对于一些将wordpress用来做产品展示的网站来说，按照字母名称快速查询相关产品则是一个很基本的需求。最近在一个项目中有用到，研究了wordpress的query后，一点小心得在这里分享出来。 既然是检索，那肯定就是要用到”s=word”这个查询变量了。比如查找以字母“A”开头的文章 &#60;?php query_posts('s=A'); ?&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>从标题中可以看出，本文要讲两个方面内容：</p>
<h3>第一，按标题首字母排列文章</h3>
<p>这个简单，只需在循环（loop）前，添加</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000;">/**</span></pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000;"> * 方式一，直接添加查询字符串</span></pre>

<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000;"> */</span></pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&lt;?php query_posts( $query_string . <span style="color: #006080;">'&amp;orderby=title&amp;order=asc'</span> ); ?&gt;</pre>

<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"></pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000;">/**</span></pre>

<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000;"> * 方式二，合并查询数组</span></pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000;"> */</span></pre>

<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&lt;?php $args=array_merge( $wp_query-&gt;query, <span style="color: #0000ff;">array</span>( <span style="color: #006080;">'orderby'</span> =&gt; <span style="color: #006080;">'title'</span>, <span style="color: #006080;">'order'</span> =&gt; <span style="color: #006080;">'asc'</span> ) );</pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    query_posts($args); ?&gt;</pre>

</div>
</div>
<p><strong>注</strong>: <span style="text-decoration: underline;"><em>query_posts($args)</em></span>用来改变主循环，相关使用方法可查询<a href="http://codex.wordpress.org/Template_Tags/query_posts" target="_blank">wordpress官方</a>说明文档。</p>
<p><span id="more-2818"></span></p>
<h3>第二，按首标题字母检索文章</h3>
<p>这个普通用户可能用处不大，但是对于一些将wordpress用来做产品展示的网站来说，按照字母名称快速查询相关产品则是一个很基本的需求。最近在一个项目中有用到，研究了wordpress的query后，一点小心得在这里分享出来。</p>
<p>既然是检索，那肯定就是要用到”s=word”这个查询变量了。比如查找以字母“A”开头的文章</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&lt;?php query_posts(<span style="color: #006080;">'s=A'</span>); ?&gt;</pre>

</div>
</div>
<p>这样的话,wordpress会通过标题和内容查找包含字母A的文章,而不是我们需要的”以字母A开头的文章”.要达到我们的目的应该怎么做呢？</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">add_filter( <span style="color: #006080;">'posts_search'</span>, <span style="color: #006080;">'wp_custom_search'</span> );</pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">function</span> wp_custom_search($search){</pre>

<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    $s=get_query_var(<span style="color: #006080;">'s'</span>);</pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">if</span>(!$s)<span style="color: #0000ff;">return</span> $search;<span style="color: #008000;">//非搜索，直接返回。</span></pre>

<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    $search = <span style="color: #006080;">"AND (((wp_ymimds_posts.post_title LIKE '{$s}%'))) AND (wp_ymimds_posts.post_password = '')"</span>;<span style="color: #008000;">//会sql的你应该懂得，模糊查询</span></pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">return</span> $search;</pre>

<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">}</pre>

</div>
</div>
<p>将以上代码放到主题的functions.php中即可。</p>
<p>demo可看我在项目中的具体应用。</p>
<p><strong><a href="http://www.soewp.devave.com/directory/?browse=membername" target="_blank"><span style="font-size: x-small;">查询以某一字母开头的文章示例</span></a></strong></p>
<p><img style="display: inline;" title="demo" src="http://www.qiqiboy.com/wp-content/uploads/2011/08/demo.png" alt="demo" width="600" height="431" /></p>
<ul class="related_post"><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/09/rrr.png&amp;h=100&amp;w=100&amp;zc=1" alt="wordpress 搜索自定义字段(模糊查询)" class="thumb" /><a href="http://www.qiqiboy.com/2011/09/14/query-posts-by-postmeta.html" title="wordpress 搜索自定义字段(模糊查询)">wordpress 搜索自定义字段(模糊查询)</a> (17)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/07/renren.png&amp;h=100&amp;w=100&amp;zc=1" alt="wordpress开发 - 仿淫淫网新鲜事评论的评论列表实现" class="thumb" /><a href="http://www.qiqiboy.com/2011/07/13/wordpress-comemnts-like-renren.html" title="wordpress开发 &#8211; 仿淫淫网新鲜事评论的评论列表实现">wordpress开发 &#8211; 仿淫淫网新鲜事评论的评论列表实现</a> (46)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/06/5.png&amp;h=100&amp;w=100&amp;zc=1" alt="wordpress的微博时间显示方法" class="thumb" /><a href="http://www.qiqiboy.com/2011/06/10/sina-weibo-timestamp-function-2.html" title="wordpress的微博时间显示方法">wordpress的微博时间显示方法</a> (18)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2010/1d7a79196621_DAE1/434.png&amp;h=100&amp;w=100&amp;zc=1" alt="仿腾讯微博式访客信息悬浮显示（JavaScript &amp; ajax）" class="thumb" /><a href="http://www.qiqiboy.com/2010/08/16/visitor-information-tencent-suspended-micro-display.html" title="仿腾讯微博式访客信息悬浮显示（JavaScript &amp; ajax）">仿腾讯微博式访客信息悬浮显示（JavaScript &amp; ajax）</a> (107)</li><li class="last"><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/07/810CI55J_0.jpg&amp;h=100&amp;w=100&amp;zc=1" alt="JavaScript: 让拖动支持iphone/ipad触摸" class="thumb" /><a href="http://www.qiqiboy.com/2011/07/16/javascript-touch-drag-support.html" title="JavaScript: 让拖动支持iphone/ipad触摸">JavaScript: 让拖动支持iphone/ipad触摸</a> (14)</li></ul><p><strong>声明:</strong> 本站遵循 <a href="http:\/\/creativecommons.org/licenses/by-nc-sa/3.0/">署名-非商业性使用-相同方式共享 3.0</a> 共享协议. 转载请注明转自 <a href="http://www.qiqiboy.com">I'm qiqiboy !</a> </p> <p>本文地址: <a href="http://qiqi.boy.im/f5">http://qiqi.boy.im/f5<a></p><span style="background:#cc5566;color:#fffff;"><h4>Look, this post is replyed so hot, let's go O(∩_∩)O~.</h4></span><h3>Related comments</h3><ul><li>2011年11月9日, <a href="http://www.qiqiboy.com/2011/08/10/wordpress-search-post-by-first-char.html#comment-15528">微代码</a> say: <span style="color:#FF0000;">非常不错的博客，顶一个，欢迎回访，更欢迎互换链接</span></li><li>2011年11月3日, <a href="http://www.qiqiboy.com/2011/08/10/wordpress-search-post-by-first-char.html#comment-15405">懒人工具</a> say: 不错，受益了</li><li>2011年09月2日, <a href="http://www.qiqiboy.com/2011/08/10/wordpress-search-post-by-first-char.html#comment-12726">扒站</a> say: 很专业的博客,受益匪浅.</li><li>2011年08月26日, <a href="http://www.qiqiboy.com/2011/08/10/wordpress-search-post-by-first-char.html#comment-12620">zhbconan</a> say: 隔壁工位的哥们介绍我看你的网站，做的很不错，希望以后可以多向你学习。</li><li>2011年08月23日, <a href="http://www.qiqiboy.com/2011/08/10/wordpress-search-post-by-first-char.html#comment-12600">c</a> say: 感觉你的博客有点像cms了哦。。 <img src='http://www.qiqiboy.com/wp-content/themes/windPaled/images/smiles/icon_surprised.gif' alt=':eek:' class='wp-smiley' /> </li><li>2011年08月16日, <a href="http://www.qiqiboy.com/2011/08/10/wordpress-search-post-by-first-char.html#comment-12495">美容护肤小窍门</a> say: 通过百度访问到您的博客
内容很好
页面很漂亮
以后会常来看看你的博文的
谢谢你的分享</li><li>2011年08月14日, <a href="http://www.qiqiboy.com/2011/08/10/wordpress-search-post-by-first-char.html#comment-12450">loosky</a> say: 有的时候的却需要这个功能。</li><li>2011年08月13日, <a href="http://www.qiqiboy.com/2011/08/10/wordpress-search-post-by-first-char.html#comment-12446">毕节教育网</a> say: 代码看不明白。</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.qiqiboy.com/2011/08/10/wordpress-search-post-by-first-char.html/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>JavaScript: 支持iphone、ipad 使用两根手指放大图片</title>
		<link>http://www.qiqiboy.com/2011/07/17/javascript-touch-support-zoom-image.html</link>
		<comments>http://www.qiqiboy.com/2011/07/17/javascript-touch-support-zoom-image.html#comments</comments>
		<pubDate>Sun, 17 Jul 2011 07:13:20 +0000</pubDate>
		<dc:creator>qiqiboy</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[触摸]]></category>

		<guid isPermaLink="false">http://www.qiqiboy.com/2011/07/17/javascript-touch-support-zoom-image.html</guid>
		<description><![CDATA[昨天写了一篇《 JavaScript: 让拖动支持iphone/ipad触摸 》，今天又无聊，想到了图片放大(zoom)，让使用ios设备的的用户可以使用两根手指来缩放图片。想了一下，很容易就实现了。 其实原理也就是在图片接收了两个有效触摸点后，在手指移动过程中检测两点之间的距离的变化，以此来对图片进行放大缩小。 不多说，demo在这里（必须使用ios设备查看）。代码如下： var getZoomClass=(function(){ var SupportsTouches = (&#34;createTouch&#34; in document),//判断是否支持触摸 $=function(id){ return document.getElementById(id); }, preventDefault=function(ev){ if(ev)ev.preventDefault(); else window.event.returnValue = false; }, getTwoPointSub=function(ev){ var x1=x2=y1=y2=0,sub; x1=ev.touches.item(0).pageX;x2=ev.touches.item(1).pageX; y1=ev.touches.item(0).pageY;y2=ev.touches.item(1).pageY; sub=Math.round(Math.sqrt(Math.pow(x1-x2,2)+Math.pow(y1-y2,2))); return sub; }, getSize=function(img){ return {width:img.width,height:img.height}; }; function _zoom(opt){ [...]]]></description>
			<content:encoded><![CDATA[<p>昨天写了一篇《 <a href="http://www.qiqiboy.com/2011/07/16/javascript-touch-drag-support.html">JavaScript: 让拖动支持iphone/ipad触摸</a> 》，今天又无聊，想到了图片放大(zoom)，让使用ios设备的的用户可以使用两根手指来缩放图片。想了一下，很容易就实现了。</p>
<p>其实原理也就是在图片接收了两个有效触摸点后，在手指移动过程中检测两点之间的距离的变化，以此来对图片进行放大缩小。</p>
<p>  <span id="more-2816"></span>
<p>不多说，<a href="http://u.boy.im/zoom" target="_blank"><strong>demo在这里</strong></a>（必须使用ios设备查看）。代码如下：</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">var</span> getZoomClass=(<span style="color: #0000ff">function</span>(){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">var</span> SupportsTouches = (<span style="color: #006080">&quot;createTouch&quot;</span> <span style="color: #0000ff">in</span> document),<span style="color: #008000">//判断是否支持触摸</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    $=<span style="color: #0000ff">function</span>(id){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">return</span> document.getElementById(id);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    },</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    preventDefault=<span style="color: #0000ff">function</span>(ev){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">if</span>(ev)ev.preventDefault();</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">else</span> window.<span style="color: #0000ff">event</span>.returnValue = <span style="color: #0000ff">false</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    },</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    getTwoPointSub=<span style="color: #0000ff">function</span>(ev){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">var</span> x1=x2=y1=y2=0,sub;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        x1=ev.touches.item(0).pageX;x2=ev.touches.item(1).pageX;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        y1=ev.touches.item(0).pageY;y2=ev.touches.item(1).pageY;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        sub=Math.round(Math.sqrt(Math.pow(x1-x2,2)+Math.pow(y1-y2,2)));</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">return</span> sub;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    },</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    getSize=<span style="color: #0000ff">function</span>(img){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">return</span> {width:img.width,height:img.height};</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    };</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">function</span> _zoom(opt){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">if</span>(!SupportsTouches)<span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">this</span>.el=<span style="color: #0000ff">typeof</span> opt.el==<span style="color: #006080">'string'</span>?$(opt.el):opt.el;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">this</span>.onstart=opt.start || <span style="color: #0000ff">new</span> Function();<span style="color: #008000">//</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">this</span>.onmove=opt.move || <span style="color: #0000ff">new</span> Function();</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">this</span>.onend=opt.end || <span style="color: #0000ff">new</span> Function();</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">this</span>.action=<span style="color: #0000ff">false</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">this</span>.init();</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    }</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    _zoom.prototype={</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        init:<span style="color: #0000ff">function</span>(){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">this</span>.el[<span style="color: #006080">'ontouchstart'</span>]=<span style="color: #0000ff">this</span>.bind(<span style="color: #0000ff">function</span>(e){<span style="color: #008000">//绑定节点的 [鼠标按下/触摸开始] 事件</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                <span style="color: #0000ff">if</span>(<span style="color: #0000ff">this</span>.action || e.touches.length&lt;2)<span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span>;<span style="color: #008000">//这里监测了触摸点的数量，小于两个说明不是在进行缩放操作</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                <span style="color: #0000ff">else</span> <span style="color: #0000ff">this</span>.action=<span style="color: #0000ff">true</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                preventDefault(e);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                <span style="color: #0000ff">this</span>.startSub=getTwoPointSub(e);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                <span style="color: #0000ff">this</span>.startSize=getSize(<span style="color: #0000ff">this</span>.el);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                <span style="color: #0000ff">this</span>.onstart();</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                document.ontouchmove=<span style="color: #0000ff">this</span>.bind(<span style="color: #0000ff">function</span>(e){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                    <span style="color: #0000ff">if</span>(e.touches.length&gt;1){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                        preventDefault(e);<span style="color: #008000">//取消文档的默认行为[鼠标移动、触摸移动]</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                        <span style="color: #0000ff">this</span>.nowSub=getTwoPointSub(e);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                        <span style="color: #0000ff">this</span>.el.width=<span style="color: #0000ff">this</span>.startSize.width*<span style="color: #0000ff">this</span>.nowSub/<span style="color: #0000ff">this</span>.startSub;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                        <span style="color: #0000ff">this</span>.el.height=<span style="color: #0000ff">this</span>.startSize.height*<span style="color: #0000ff">this</span>.nowSub/<span style="color: #0000ff">this</span>.startSub;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                        <span style="color: #0000ff">this</span>.onmove();</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                    }</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                },<span style="color: #0000ff">this</span>);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                document.ontouchend=document.ontouchcancel=<span style="color: #0000ff">this</span>.bind(<span style="color: #0000ff">function</span>(){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                    document.ontouchend=document.ontouchcancel=document.ontouchmove=<span style="color: #0000ff">null</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                    <span style="color: #0000ff">this</span>.action=<span style="color: #0000ff">false</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                    <span style="color: #0000ff">this</span>.onend();</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                },<span style="color: #0000ff">this</span>);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            },<span style="color: #0000ff">this</span>);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        },</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        bind:<span style="color: #0000ff">function</span>(fn,obj){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">return</span> <span style="color: #0000ff">function</span>(){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                fn.apply(obj,arguments);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            }</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        },</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        tool:<span style="color: #0000ff">null</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    }</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">return</span> <span style="color: #0000ff">function</span>(opt){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">return</span> <span style="color: #0000ff">new</span> _zoom(opt);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    }</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">})();</pre>
</div>
</div>
<p><a href="http://u.boy.im/zoom" target="_blank"><strong>demo在这里</strong></a>（必须使用ios设备查看）。<img src="http://www.qiqiboy.com/wp-content/uploads/2011/07/810CI55J_0.jpg" /></p>
<ul class="related_post"><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2012/01/688860f891c5.png&amp;h=100&amp;w=100&amp;zc=1" alt="TouchSlider 1.0 - 兼容触摸屏手机与PC的幻灯片" class="thumb" /><a href="http://www.qiqiboy.com/2012/01/11/touchslider-1-0-publish.html" title="TouchSlider 1.0 &#8211; 兼容触摸屏手机与PC的幻灯片">TouchSlider 1.0 &#8211; 兼容触摸屏手机与PC的幻灯片</a> (6)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/07/810CI55J_0.jpg&amp;h=100&amp;w=100&amp;zc=1" alt="JavaScript: 让拖动支持iphone/ipad触摸" class="thumb" /><a href="http://www.qiqiboy.com/2011/07/16/javascript-touch-drag-support.html" title="JavaScript: 让拖动支持iphone/ipad触摸">JavaScript: 让拖动支持iphone/ipad触摸</a> (14)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/05/imgready.png&amp;h=100&amp;w=100&amp;zc=1" alt="javascript 图片预加载" class="thumb" /><a href="http://www.qiqiboy.com/2011/05/20/javascript-image-preload.html" title="javascript 图片预加载">javascript 图片预加载</a> (25)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/04/lzyload.gif&amp;h=100&amp;w=100&amp;zc=1" alt="JavaScript &amp; images LazyLoad 图片延迟加载(伪lazyload)" class="thumb" /><a href="http://www.qiqiboy.com/2011/04/12/javascript-and-images-lazyload.html" title="JavaScript &amp; images LazyLoad 图片延迟加载(伪lazyload)">JavaScript &amp; images LazyLoad 图片延迟加载(伪lazyload)</a> (43)</li><li class="last"><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/01/Pompidou_ZH-CN3304850761.jpg&amp;h=100&amp;w=100&amp;zc=1" alt="终极完美版javascript获取并限制调整图片尺寸" class="thumb" /><a href="http://www.qiqiboy.com/2011/01/30/javascript-and-limit-access-to-adjust-the-picture-size.html" title="终极完美版javascript获取并限制调整图片尺寸">终极完美版javascript获取并限制调整图片尺寸</a> (40)</li></ul><p><strong>声明:</strong> 本站遵循 <a href="http:\/\/creativecommons.org/licenses/by-nc-sa/3.0/">署名-非商业性使用-相同方式共享 3.0</a> 共享协议. 转载请注明转自 <a href="http://www.qiqiboy.com">I'm qiqiboy !</a> </p> <p>本文地址: <a href="http://qiqi.boy.im/ez">http://qiqi.boy.im/ez<a></p><span style="background:#cc5566;color:#fffff;"><h4>Look, this post is replyed so hot, let's go O(∩_∩)O~.</h4></span><h3>Related comments</h3><ul><li>2011年10月25日, <a href="http://www.qiqiboy.com/2011/07/17/javascript-touch-support-zoom-image.html#comment-15226">懒人</a> say: 我还在折腾安卓</li><li>2011年07月31日, <a href="http://www.qiqiboy.com/2011/07/17/javascript-touch-support-zoom-image.html#comment-12288">晨光</a> say: 这方面懂得还是很少呀</li><li>2011年07月25日, <a href="http://www.qiqiboy.com/2011/07/17/javascript-touch-support-zoom-image.html#comment-12259">丰禾棋牌</a> say: 电脑这方面不是特别懂  学习了</li><li>2011年07月24日, <a href="http://www.qiqiboy.com/2011/07/17/javascript-touch-support-zoom-image.html#comment-12255">小五</a> say: 没有接触过IP4</li><li>2011年07月23日, <a href="http://www.qiqiboy.com/2011/07/17/javascript-touch-support-zoom-image.html#comment-12250">孤夜狂狼</a> say: Android 平板 XOOM 测试成功…… 
好东西啊~ 收藏了~  虽然暂时没有什么用法方面的创意……</li><li>2011年07月23日, <a href="http://www.qiqiboy.com/2011/07/17/javascript-touch-support-zoom-image.html#comment-12248">人好哇！</a> say: 唔。。。我表示现在为IOS做的优化随处可见了呢~~不过还真没想过JS还可以这么搞，哈哈</li><li>2011年07月22日, <a href="http://www.qiqiboy.com/2011/07/17/javascript-touch-support-zoom-image.html#comment-12238">mirror</a> say: 评论框的AJAX好牛啊</li><li>2011年07月21日, <a href="http://www.qiqiboy.com/2011/07/17/javascript-touch-support-zoom-image.html#comment-12225">权子</a> say: 木有那么高档的设备~~~哈哈~~~</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.qiqiboy.com/2011/07/17/javascript-touch-support-zoom-image.html/feed</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>JavaScript: 让拖动支持iphone/ipad触摸</title>
		<link>http://www.qiqiboy.com/2011/07/16/javascript-touch-drag-support.html</link>
		<comments>http://www.qiqiboy.com/2011/07/16/javascript-touch-drag-support.html#comments</comments>
		<pubDate>Sat, 16 Jul 2011 10:40:34 +0000</pubDate>
		<dc:creator>qiqiboy</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[前端]]></category>
		<category><![CDATA[开发]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[触摸]]></category>

		<guid isPermaLink="false">http://www.qiqiboy.com/2011/07/16/javascript-touch-drag-support.html</guid>
		<description><![CDATA[一般的通过mousedown、mousemove、mouseup等打造的拖动，仅仅在普通的键盘+鼠标的电脑设备上可以工作。而到了ios设备上（iphone itouch ipad），则不能工作了。最近因为做个东西，需要支持ios设备，所以只好看了下webkit浏览器的触摸事件。 其实也很简单，对应mousedown、mousemove、mouseup的触摸事件分别是touchstart、touchmove、touchend。为了写个demo，花了不少的时间，所以为了节省时间，我文章里就不多说了，仅贴一下相关代码。 DEMO可以在此查看。 var getDragClass=(function(){ var SupportsTouches = (&#34;createTouch&#34; in document),//判断是否支持触摸 StartEvent = SupportsTouches ? &#34;touchstart&#34; : &#34;mousedown&#34;,//支持触摸式使用相应的事件替代 MoveEvent = SupportsTouches ? &#34;touchmove&#34; : &#34;mousemove&#34;, EndEvent = SupportsTouches ? &#34;touchend&#34; : &#34;mouseup&#34;, $=function(id){ return document.getElementById(id); }, preventDefault=function(ev){ if(ev)ev.preventDefault(); [...]]]></description>
			<content:encoded><![CDATA[<p>一般的通过mousedown、mousemove、mouseup等打造的拖动，仅仅在普通的键盘+鼠标的电脑设备上可以工作。而到了ios设备上（iphone itouch ipad），则不能工作了。最近因为做个东西，需要支持ios设备，所以只好看了下webkit浏览器的触摸事件。</p>
<p>其实也很简单，对应mousedown、mousemove、mouseup的触摸事件分别是touchstart、touchmove、touchend。为了写个demo，花了不少的时间，所以为了节省时间，我文章里就不多说了，仅贴一下相关代码。</p>
<p>  <span id="more-2815"></span>
<p><a href="http://u.boy.im/touchdrag" target="_blank"><strong><u>DEMO可以在此查看。</u></strong></a></p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">var</span> getDragClass=(<span style="color: #0000ff">function</span>(){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">var</span> SupportsTouches = (<span style="color: #006080">&quot;createTouch&quot;</span> <span style="color: #0000ff">in</span> document),<span style="color: #008000">//判断是否支持触摸</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    StartEvent = SupportsTouches ? <span style="color: #006080">&quot;touchstart&quot;</span> : <span style="color: #006080">&quot;mousedown&quot;</span>,<span style="color: #008000">//支持触摸式使用相应的事件替代</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    MoveEvent = SupportsTouches ? <span style="color: #006080">&quot;touchmove&quot;</span> : <span style="color: #006080">&quot;mousemove&quot;</span>,</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    EndEvent = SupportsTouches ? <span style="color: #006080">&quot;touchend&quot;</span> : <span style="color: #006080">&quot;mouseup&quot;</span>,</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    $=<span style="color: #0000ff">function</span>(id){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">return</span> document.getElementById(id);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    },</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    preventDefault=<span style="color: #0000ff">function</span>(ev){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">if</span>(ev)ev.preventDefault();</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">else</span> window.<span style="color: #0000ff">event</span>.returnValue = <span style="color: #0000ff">false</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    },</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    getMousePoint=<span style="color: #0000ff">function</span>(ev){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">var</span> x = y = 0,</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            doc = document.documentElement,</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            body = document.body;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">if</span>(!ev) ev=window.<span style="color: #0000ff">event</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">if</span> (window.pageYoffset) {</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                x = window.pageXOffset;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                y = window.pageYOffset;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            }<span style="color: #0000ff">else</span>{</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                x = (doc &amp;&amp; doc.scrollLeft || body &amp;&amp; body.scrollLeft || 0) - (doc &amp;&amp; doc.clientLeft || body &amp;&amp; body.clientLeft || 0);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                y = (doc &amp;&amp; doc.scrollTop  || body &amp;&amp; body.scrollTop  || 0) - (doc &amp;&amp; doc.clientTop  || body &amp;&amp; body.clientTop  || 0);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            }</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">if</span>(SupportsTouches){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                <span style="color: #0000ff">var</span> evt = ev.touches.item(0);<span style="color: #008000">//仅支持单点触摸,第一个触摸点</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                x=evt.pageX;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                y=evt.pageY;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            }<span style="color: #0000ff">else</span>{</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                x += ev.clientX;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                y += ev.clientY;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            }</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">return</span> {<span style="color: #006080">'x'</span> : x, <span style="color: #006080">'y'</span> : y};</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    };</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">function</span> _drag(opt){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">this</span>.el=<span style="color: #0000ff">typeof</span> opt.el==<span style="color: #006080">'string'</span>?$(opt.el):opt.el;<span style="color: #008000">//被拖动节点</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">this</span>.onstart=opt.start || <span style="color: #0000ff">new</span> Function();<span style="color: #008000">//</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">this</span>.onmove=opt.move || <span style="color: #0000ff">new</span> Function();</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">this</span>.onend=opt.end || <span style="color: #0000ff">new</span> Function();</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">this</span>.action=<span style="color: #0000ff">false</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">this</span>.init();</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    }</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    _drag.prototype={</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        init:<span style="color: #0000ff">function</span>(){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">this</span>.el.style.position=<span style="color: #006080">'relative'</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">this</span>.el[<span style="color: #006080">'on'</span>+StartEvent]=<span style="color: #0000ff">this</span>.bind(<span style="color: #0000ff">function</span>(e){<span style="color: #008000">//绑定节点的 [鼠标按下/触摸开始] 事件</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                preventDefault(e);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                <span style="color: #0000ff">if</span>(<span style="color: #0000ff">this</span>.action)<span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                <span style="color: #0000ff">else</span> <span style="color: #0000ff">this</span>.action=<span style="color: #0000ff">true</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                <span style="color: #0000ff">this</span>.startPoint=getMousePoint(e);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                <span style="color: #0000ff">this</span>.onstart();</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                document[<span style="color: #006080">'on'</span>+MoveEvent]=<span style="color: #0000ff">this</span>.bind(<span style="color: #0000ff">function</span>(e){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                    preventDefault(e);<span style="color: #008000">//取消文档的默认行为[鼠标移动、触摸移动]</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                    <span style="color: #0000ff">this</span>.nowPoint=getMousePoint(e);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                    <span style="color: #0000ff">this</span>.el.style.left=<span style="color: #0000ff">this</span>.nowPoint.x-<span style="color: #0000ff">this</span>.startPoint.x+<span style="color: #006080">'px'</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                    <span style="color: #0000ff">this</span>.el.style.top=<span style="color: #0000ff">this</span>.nowPoint.y-<span style="color: #0000ff">this</span>.startPoint.y+<span style="color: #006080">'px'</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                    <span style="color: #0000ff">this</span>.onmove();</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                },<span style="color: #0000ff">this</span>);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                document[<span style="color: #006080">'on'</span>+EndEvent]=document[<span style="color: #006080">'ontouchcancel'</span>]=<span style="color: #0000ff">this</span>.bind(<span style="color: #0000ff">function</span>(){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                    document[<span style="color: #006080">'on'</span>+EndEvent]=document[<span style="color: #006080">'ontouchcancel'</span>]=document[<span style="color: #006080">'on'</span>+MoveEvent]=<span style="color: #0000ff">null</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                    <span style="color: #0000ff">this</span>.action=<span style="color: #0000ff">false</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                    <span style="color: #0000ff">this</span>.onend();</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                },<span style="color: #0000ff">this</span>);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            },<span style="color: #0000ff">this</span>);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        },</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        bind:<span style="color: #0000ff">function</span>(fn,obj){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">return</span> <span style="color: #0000ff">function</span>(){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                fn.apply(obj,arguments);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            }</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        }</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    }</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">return</span> <span style="color: #0000ff">function</span>(opt){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">return</span> <span style="color: #0000ff">new</span> _drag(opt);</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    }</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">})();</pre>
</div>
</div>
<p>其实就是很简单的了，需要注意跌其实就是获取鼠标坐(getMousePoint)标的那里了，touches.item(0)表示第一个生效触摸点。</p>
<p><a href="http://u.boy.im/touchdrag" target="_blank"><strong><u>DEMO可以在此查看。</u></strong></a>（触摸效果请使用ios相关设备）</p>
<p>也可以查看<a href="http://www.qiqiboy.com/demo/2008/09/layout-test.html">http://www.qiqiboy.com/demo/2008/09/layout-test.html</a> 的那个评分拖动长条。<img style="display: inline" title="810CI55J_0" alt="810CI55J_0" src="http://www.qiqiboy.com/wp-content/uploads/2011/07/810CI55J_0.jpg" width="500" height="331" /></p>
<ul class="related_post"><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/07/810CI55J_0.jpg&amp;h=100&amp;w=100&amp;zc=1" alt="JavaScript: 支持iphone、ipad 使用两根手指放大图片" class="thumb" /><a href="http://www.qiqiboy.com/2011/07/17/javascript-touch-support-zoom-image.html" title="JavaScript: 支持iphone、ipad 使用两根手指放大图片">JavaScript: 支持iphone、ipad 使用两根手指放大图片</a> (18)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/01/mouseEnter.png&amp;h=100&amp;w=100&amp;zc=1" alt="优化javascript中mouseover和mouseout事件" class="thumb" /><a href="http://www.qiqiboy.com/2011/01/19/javascript-mouseover-and-mouseout.html" title="优化javascript中mouseover和mouseout事件">优化javascript中mouseover和mouseout事件</a> (30)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2012/01/688860f891c5.png&amp;h=100&amp;w=100&amp;zc=1" alt="TouchSlider 1.0 - 兼容触摸屏手机与PC的幻灯片" class="thumb" /><a href="http://www.qiqiboy.com/2012/01/11/touchslider-1-0-publish.html" title="TouchSlider 1.0 &#8211; 兼容触摸屏手机与PC的幻灯片">TouchSlider 1.0 &#8211; 兼容触摸屏手机与PC的幻灯片</a> (6)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/09/rrr.png&amp;h=100&amp;w=100&amp;zc=1" alt="wordpress 搜索自定义字段(模糊查询)" class="thumb" /><a href="http://www.qiqiboy.com/2011/09/14/query-posts-by-postmeta.html" title="wordpress 搜索自定义字段(模糊查询)">wordpress 搜索自定义字段(模糊查询)</a> (17)</li><li class="last"><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/08/demo.png&amp;h=100&amp;w=100&amp;zc=1" alt="wordpress 按首字母排列文章/检索文章" class="thumb" /><a href="http://www.qiqiboy.com/2011/08/10/wordpress-search-post-by-first-char.html" title="wordpress 按首字母排列文章/检索文章">wordpress 按首字母排列文章/检索文章</a> (19)</li></ul><p><strong>声明:</strong> 本站遵循 <a href="http:\/\/creativecommons.org/licenses/by-nc-sa/3.0/">署名-非商业性使用-相同方式共享 3.0</a> 共享协议. 转载请注明转自 <a href="http://www.qiqiboy.com">I'm qiqiboy !</a> </p> <p>本文地址: <a href="http://qiqi.boy.im/ey">http://qiqi.boy.im/ey<a></p><span style="background:#cc5566;color:#fffff;"><h4>Hi,welcome to leave your reply.</h4></span><h3>Related comments</h3><ul><li>2011年12月6日, <a href="http://www.qiqiboy.com/2011/07/16/javascript-touch-drag-support.html#comment-16295">心随雨下</a> say: 你好，这个效果确实不错。但是，我想问一下，如果是地图怎样可以实现这样的拖动效果呢？</li><li>2011年07月18日, <a href="http://www.qiqiboy.com/2011/07/16/javascript-touch-drag-support.html#comment-12146">无冷</a> say: 这个东西比ui插件好用多了</li><li>2011年07月18日, <a href="http://www.qiqiboy.com/2011/07/16/javascript-touch-drag-support.html#comment-12144">IM路人</a> say: 高级技术文哟~~~~</li><li>2011年07月18日, <a href="http://www.qiqiboy.com/2011/07/16/javascript-touch-drag-support.html#comment-12140">QiQiBoY</a> say: <a href="#comment-12122" rel="nofollow">@刘印 </a> 
基本上新款都是了。。而且只会越来越多</li><li>2011年07月17日, <a href="http://www.qiqiboy.com/2011/07/16/javascript-touch-drag-support.html#comment-12139">QiQiBoY</a> say: <a href="#comment-12121" rel="nofollow">@WayJam </a> 
嗯。现在这种用户很多。。其实这个好像包括安卓系统也适用</li><li>2011年07月17日, <a href="http://www.qiqiboy.com/2011/07/16/javascript-touch-drag-support.html#comment-12138">QiQiBoY</a> say: <a href="#comment-12120" rel="nofollow">@A.shun </a> 
 <img src='http://www.qiqiboy.com/wp-content/themes/windPaled/images/smiles/icon_biggrin.gif' alt=':grin:' class='wp-smiley' />  哈哈。</li><li>2011年07月17日, <a href="http://www.qiqiboy.com/2011/07/16/javascript-touch-drag-support.html#comment-12131">JavaScript: 支持iphone、ipad 使用两根手指放大图片 - I&#039;m qiqiboy !</a> say: [...] JavaScript: 让拖动支持iphone/ipad触摸 [...]</li><li>2011年07月17日, <a href="http://www.qiqiboy.com/2011/07/16/javascript-touch-drag-support.html#comment-12130">小邪</a> say: 来晚了-m-，twitter上面的发布真慢 ╮(╯▽╰)╭。</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.qiqiboy.com/2011/07/16/javascript-touch-drag-support.html/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>wordpress开发 &#8211; 仿淫淫网新鲜事评论的评论列表实现</title>
		<link>http://www.qiqiboy.com/2011/07/13/wordpress-comemnts-like-renren.html</link>
		<comments>http://www.qiqiboy.com/2011/07/13/wordpress-comemnts-like-renren.html#comments</comments>
		<pubDate>Wed, 13 Jul 2011 09:36:33 +0000</pubDate>
		<dc:creator>qiqiboy</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[comments]]></category>
		<category><![CDATA[开发]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[评论]]></category>

		<guid isPermaLink="false">http://www.qiqiboy.com/2011/07/13/wordpress-comemnts-like-renren.html</guid>
		<description><![CDATA[求新！求变！ 一直以来wordpress的评论也算一个开发重点，每个主题制作者在评论展现方式上的开发也下足了功夫，但是也不外乎都是样式上的变化。淫淫网的新鲜事都可以评论，我很喜欢这种即时评论的方式。所以一直有想法想要移植过来到wordpress上，但是又很懒，所以没有动手。说到懒，博客很久没更新了，很多评论也没回复。 前天有空，所以便动手搞了一下，发现还是很容易的。主要的实现思路说一下： 首先是要设置评论嵌套为2层 只有两层的话，我们就可以将第一层（主评论）当做主体，然后第二层都是对其的回复。 其次在是每条主评论下插入一个输入框 这个对于自定义评论显示结构的主题来说是很容易的，只要在functions.php中的评论回调函数中加上一个textarea就行了。具体的样式就需要自己去定义了，我就不多说了，更具体些的动态变化（点击展开输入框，焦点移开复原输入框）则需要js控制了。我是将这个框简单化，只有一条，点击后用js展开（第三点要说的）。 &#60;?php if ($depth===1): ?&#62; &#60;div class=&#34;quick-comment-form&#34;&#62; &#60;textarea class=&#34;quick-comment&#34;&#62;&#60;/textarea&#62; &#60;/div&#62; &#60;?php endif; ?&#62; 这样子插入的输入框都是直接附加到主评论后面的，本来其实我想实现的是，有子评论时我想将输入框直接输出到子评论的末尾，但是最后没有实现。有做到的同学可以可以与我不吝分享下哈。 点击输入框展开完整的评论输入 就想淫淫网的一样，点击后展开输入区域。wordpress这里涉及到两点，第一，用户登录，第二未登录。未登录下还分有cookie记录用户名 邮箱和没有这些信息。我是通过一段js代码将这些信息输出到页面上，以供后续代码调用判断。 &#60;?php $commenter=array( 'login' =&#62; (bool)is_user_logged_in(), 'author' =&#62; $username, 'email' =&#62; $useremail, 'url' =&#62; $userurl, 'avatar' =&#62; get_avatar($useremail, [...]]]></description>
			<content:encoded><![CDATA[<p><img style="display: inline" title="renren" alt="renren" src="http://www.qiqiboy.com/wp-content/uploads/2011/07/renren.png" width="504" height="208" /></p>
<p>求新！求变！</p>
<p>一直以来wordpress的评论也算一个开发重点，每个主题制作者在评论展现方式上的开发也下足了功夫，但是也不外乎都是样式上的变化。淫淫网的新鲜事都可以评论，我很喜欢这种即时评论的方式。所以一直有想法想要移植过来到wordpress上，但是又很懒，所以没有动手。说到懒，博客很久没更新了，很多评论也没回复。</p>
<p>  <span id="more-2813"></span>
<p>前天有空，所以便动手搞了一下，发现还是很容易的。主要的实现思路说一下：</p>
<h3>首先是要设置评论嵌套为2层</h3>
<p>只有两层的话，我们就可以将第一层（主评论）当做主体，然后第二层都是对其的回复。</p>
<h3>其次在是每条主评论下插入一个输入框</h3>
<p>这个对于自定义评论显示结构的主题来说是很容易的，只要在functions.php中的评论回调函数中加上一个textarea就行了。具体的样式就需要自己去定义了，我就不多说了，更具体些的动态变化（点击展开输入框，焦点移开复原输入框）则需要js控制了。我是将这个框简单化，只有一条，点击后用js展开（第三点要说的）。</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&lt;?php <span style="color: #0000ff">if</span> ($depth===1): ?&gt;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    &lt;div <span style="color: #0000ff">class</span>=<span style="color: #006080">&quot;quick-comment-form&quot;</span>&gt;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        &lt;textarea <span style="color: #0000ff">class</span>=<span style="color: #006080">&quot;quick-comment&quot;</span>&gt;&lt;/textarea&gt;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    &lt;/div&gt;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&lt;?php <span style="color: #0000ff">endif</span>; ?&gt;</pre>
</div>
</div>
<p>这样子插入的输入框都是直接附加到主评论后面的，本来其实我想实现的是，有子评论时我想将输入框直接输出到子评论的末尾，但是最后没有实现。有做到的同学可以可以与我不吝分享下哈。</p>
<h3>点击输入框展开完整的评论输入</h3>
<p>就想淫淫网的一样，点击后展开输入区域。wordpress这里涉及到两点，第一，用户登录，第二未登录。未登录下还分有cookie记录用户名 邮箱和没有这些信息。我是通过一段js代码将这些信息输出到页面上，以供后续代码调用判断。 </p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&lt;?php </pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    $commenter=<span style="color: #0000ff">array</span>(</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #006080">'login'</span> =&gt; (<span style="color: #0000ff">bool</span>)is_user_logged_in(),</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #006080">'author'</span> =&gt; $username,</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #006080">'email'</span> =&gt; $useremail,</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #006080">'url'</span> =&gt; $userurl,</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #006080">'avatar'</span> =&gt; get_avatar($useremail, 32)</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    );</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">echo</span> <span style="color: #006080">'&lt;script id=&quot;guestbookcommentlist&quot; type=&quot;text/javascript&quot;&gt;window.commenter='</span>.json_encode($commenter).<span style="color: #006080">';&lt;/script&gt;'</span>;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">?&gt;</pre>
</div>
</div>
<p>这样我就可以知道用户有没有登录，也可以很方便的取到用户存储在cookie中的用户名和邮箱值了，还有头像。</p>
<p>取得以上信息后我们就可以通过js操纵dom来将评论框展开，加上输入姓名 邮箱的部分。第一步是初始状态的输入框在获得焦点后（onfocus）后要展开，这点容易，我们直接循环对每个输入框绑定onfocus事件就行了。第二步则是要实现恢复展开的输入框为初始状态。这个不能用失焦（onblur）来做了。因为输入框下可能会有姓名 邮箱等其它输入部分，我们点击那些输入域或者回复按钮时会造成评论框失焦触发动作。所以这样是不行的。我是通过document的click事件，然后取得srcElement，通过和包含评论框、姓名 邮箱输入的那个节点（div#quick-comment-form）的contains关系比较来判断是否需要关闭恢复评论框。 </p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">addListener(document,<span style="color: #006080">'click'</span>,<span style="color: #0000ff">function</span>(e){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">var</span> target=window.event &amp;&amp; window.event.srcElement||e &amp;&amp; e.target;</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">for</span>(<span style="color: #0000ff">var</span> i=0;i&lt;quickcomments.length;i++){<span style="color: #008000">//quickcomments为取得的所有快速输入框的集合</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">if</span>(quickcomments[i].value==<span style="color: #006080">''</span> &amp;&amp; !contains(quickcomments[i].parentNode,target)){</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            <span style="color: #008000">//处理部分</span></pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        }</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    }</pre>

<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0px; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">},<span style="color: #0000ff">false</span>);</pre>
</div>
</div>
<h3>最后就是发布评论了</h3>
<p>这个就简单了，就是一个简单的ajax评论。登陆用户直接只取评论内容和post_id, comment_parent_id格式化后发送就行了。未登录用户还要去获取下姓名 邮箱输入的值，然后一块发送。后台加上相应的响应代码就行了。<br />
  </p>
<p>&#160;</p>
<p>Over。说的很简单，也没具体的代码，大家凑活看。主要是想说wordpress的评论其实可以千变万化，做出很多的新奇来。</p>
<p>我博客还没加上这个，不过这儿有一个<a href="http://www.mhtml5.com/guestbook" target="_blank"><strong>线上例子</strong></a>，也欢迎大家有html5相关的问题到这里进行提问，会有一帮热心人帮助你的。<a href="http://www.mhtml5.com/guestbook" target="_blank">点此浏览效果</a>。<img style="display: inline" title="h5" alt="h5" src="http://www.qiqiboy.com/wp-content/uploads/2011/07/h5.png" width="520" height="244" /></p>
<ul class="related_post"><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/09/rrr.png&amp;h=100&amp;w=100&amp;zc=1" alt="wordpress 搜索自定义字段(模糊查询)" class="thumb" /><a href="http://www.qiqiboy.com/2011/09/14/query-posts-by-postmeta.html" title="wordpress 搜索自定义字段(模糊查询)">wordpress 搜索自定义字段(模糊查询)</a> (17)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/08/demo.png&amp;h=100&amp;w=100&amp;zc=1" alt="wordpress 按首字母排列文章/检索文章" class="thumb" /><a href="http://www.qiqiboy.com/2011/08/10/wordpress-search-post-by-first-char.html" title="wordpress 按首字母排列文章/检索文章">wordpress 按首字母排列文章/检索文章</a> (19)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/02/312e53cfb85c.gif&amp;h=100&amp;w=100&amp;zc=1" alt="WordPress技术: 无限多级楼层显示" class="thumb" /><a href="http://www.qiqiboy.com/2011/02/02/unlimited-multi-level-floor-display.html" title="WordPress技术: 无限多级楼层显示">WordPress技术: 无限多级楼层显示</a> (61)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2010/d3a7458847ca_B553/222.png&amp;h=100&amp;w=100&amp;zc=1" alt="超级无语的新一代中文spam" class="thumb" /><a href="http://www.qiqiboy.com/2010/10/03/a-new-generation-of-super-silent-chinese-spam.html" title="超级无语的新一代中文spam">超级无语的新一代中文spam</a> (87)</li><li class="last"><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2010/08/spam5.png&amp;h=100&amp;w=100&amp;zc=1" alt="围观wordpress中文圈内好玩的spam" class="thumb" /><a href="http://www.qiqiboy.com/2010/08/31/chinese-circle-surrounding-wordpress-spam-fun.html" title="围观wordpress中文圈内好玩的spam">围观wordpress中文圈内好玩的spam</a> (133)</li></ul><p><strong>声明:</strong> 本站遵循 <a href="http:\/\/creativecommons.org/licenses/by-nc-sa/3.0/">署名-非商业性使用-相同方式共享 3.0</a> 共享协议. 转载请注明转自 <a href="http://www.qiqiboy.com">I'm qiqiboy !</a> </p> <p>本文地址: <a href="http://qiqi.boy.im/ex">http://qiqi.boy.im/ex<a></p><span style="background:#cc5566;color:#fffff;"><h4>Look, this post is replyed so hot, let's go O(∩_∩)O~.</h4></span><h3>Related comments</h3><ul><li>2012年01月15日, <a href="http://www.qiqiboy.com/2011/07/13/wordpress-comemnts-like-renren.html#comment-16906">citier</a> say: 之前做主题就是卡在评论页面的美化上，你这个比较帅</li><li>2011年12月20日, <a href="http://www.qiqiboy.com/2011/07/13/wordpress-comemnts-like-renren.html#comment-16514">hit9</a> say: 好cool啊，你的评论部分很给力！</li><li>2011年12月20日, <a href="http://www.qiqiboy.com/2011/07/13/wordpress-comemnts-like-renren.html#comment-16513">hit9</a> say: 来测试下</li><li>2011年11月20日, <a href="http://www.qiqiboy.com/2011/07/13/wordpress-comemnts-like-renren.html#comment-15710">MurphyL</a> say: 哈哈～来学习啊～</li><li>2011年09月21日, <a href="http://www.qiqiboy.com/2011/07/13/wordpress-comemnts-like-renren.html#comment-14667">set sail</a> say: 介个很不错啊，有没有放淫淫网那种相册的每张图片都可以评论的创建啊</li><li>2011年08月13日, <a href="http://www.qiqiboy.com/2011/07/13/wordpress-comemnts-like-renren.html#comment-12444">sprityaoyao</a> say: 不错，我也改成这样的了</li><li>2011年07月22日, <a href="http://www.qiqiboy.com/2011/07/13/wordpress-comemnts-like-renren.html#comment-12229">yetone</a> say: 不错，尝试下</li><li>2011年07月21日, <a href="http://www.qiqiboy.com/2011/07/13/wordpress-comemnts-like-renren.html#comment-12216">套图部落</a> say: 很好的功能，按方法尝试下，希望能成功。</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.qiqiboy.com/2011/07/13/wordpress-comemnts-like-renren.html/feed</wfw:commentRss>
		<slash:comments>46</slash:comments>
		</item>
		<item>
		<title>wordpress的微博时间显示方法</title>
		<link>http://www.qiqiboy.com/2011/06/10/sina-weibo-timestamp-function-2.html</link>
		<comments>http://www.qiqiboy.com/2011/06/10/sina-weibo-timestamp-function-2.html#comments</comments>
		<pubDate>Fri, 10 Jun 2011 13:55:33 +0000</pubDate>
		<dc:creator>qiqiboy</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[微博]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://www.qiqiboy.com/2011/06/10/sina-weibo-timestamp-function-2.html</guid>
		<description><![CDATA[前段时间大家都热衷于在wordpress上显示“XX小时，XX分钟前”类似的时间显示方式。 我在开发社交媒体连接插件的最新微博功能时，也想将微博的时间显示与新浪微博的显示方式一致。具体的要求如下： 一分钟之内显示“刚刚”；大于一分钟小于一个小时显示“XX分钟之前”；大于一个小时但在当天之内（小于当天24点），显示“今天 XX:XX”，今天之前，但是在今年之内的显示“XX月XX日，XX:XX”，今年以前的显示“XXXXXX月XX日，XX:XX”。 由于要考虑到不同地区的时差问题，我的实现方式如下： /** 微博时间格式化显示 * @param $timestamp，标准时间戳 */ function smc_time_since($timestamp) { $since = abs(time()-$timestamp); $gmt_offset = get_option('gmt_offset') * 3600;//获取wordpress的时区偏移值 $timestamp += $gmt_offset; $current_time = mktime() + $gmt_offset; if(floor($since/3600)){ if(gmdate('Y-m-d',$timestamp) == gmdate('Y-m-d',$current_time)){ $output = '今天 '; $output.= gmdate('H:i',$timestamp); [...]]]></description>
			<content:encoded><![CDATA[<p>前段时间大家都热衷于在wordpress上显示“XX小时，XX分钟前”类似的时间显示方式。</p>
<p>我在开发<a href="http://www.qiqiboy.com/products/plugins/social-medias-connect" target="_blank">社交媒体连接</a>插件的最新微博功能时，也想将微博的时间显示与新浪微博的显示方式一致。具体的要求如下：</p>
<blockquote><p>一分钟之内显示“刚刚”；大于一分钟小于一个小时显示“XX分钟之前”；大于一个小时但在当天之内（小于当天24点），显示“今天 XX:XX”，今天之前，但是在今年之内的显示“XX月XX日，XX:XX”，今年以前的显示“XXXXXX月XX日，XX:XX”。</p></blockquote>
<p><span id="more-2810"></span></p>
<p>由于要考虑到不同地区的时差问题，我的实现方式如下：</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000;">/** 微博时间格式化显示</span></pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000;"> * @param $timestamp，标准时间戳</span></pre>

<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000;"> */</span></pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">function</span> smc_time_since($timestamp) {</pre>

<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    $since = abs(time()-$timestamp);</pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    $gmt_offset = get_option(<span style="color: #006080;">'gmt_offset'</span>) * 3600;<span style="color: #008000;">//获取wordpress的时区偏移值</span></pre>

<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    $timestamp += $gmt_offset; $current_time = mktime() + $gmt_offset;</pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">if</span>(floor($since/3600)){</pre>

<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">if</span>(gmdate(<span style="color: #006080;">'Y-m-d'</span>,$timestamp) == gmdate(<span style="color: #006080;">'Y-m-d'</span>,$current_time)){</pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            $output = <span style="color: #006080;">'今天 '</span>;</pre>

<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            $output.= gmdate(<span style="color: #006080;">'H:i'</span>,$timestamp);</pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        }<span style="color: #0000ff;">else</span>{</pre>

<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            <span style="color: #0000ff;">if</span>(gmdate(<span style="color: #006080;">'Y'</span>,$timestamp) == gmdate(<span style="color: #006080;">'Y'</span>,$current_time)){</pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                $output = gmdate(<span style="color: #006080;">'m月d日 H:i'</span>,$timestamp);</pre>

<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            }<span style="color: #0000ff;">else</span>{</pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                $output = gmdate(<span style="color: #006080;">'Y年m月d日 H:i'</span>,$timestamp);</pre>

<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            }</pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        }</pre>

<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    }<span style="color: #0000ff;">else</span>{</pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">if</span>(($output=floor($since/60))){</pre>

<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            $output = $output.<span style="color: #006080;">'分钟前'</span>;</pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        }<span style="color: #0000ff;">else</span> $output = <span style="color: #006080;">'刚刚'</span>;</pre>

<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    }</pre>

<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">return</span> $output;</pre>

<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">}</pre>

</div>
</div>
<p>另外我后来在新浪微博发布的开源Xweibo的源码中找到了其所用的方法，只是我觉得一点繁琐，有兴趣的同学可以下载Xweibo的源码，然后在xweibo_upload\application\function\format_time.func.php的12行可以看到新浪微博的实现方式。个人觉得其有一点繁琐了，也许我没看懂他的思路。有兴趣各位可以参考下。</p>
<p>效果见我博客右边栏的微博显示部分。你也可以下载<a href="http://www.qiqiboy.com/products/plugins/social-medias-connect" target="_blank">社交媒体连接</a>插件，在你的博客上显示最新微博。</p>
<p><img style="display: inline;" title="捕获5" src="http://www.qiqiboy.com/wp-content/uploads/2011/06/5.png" alt="捕获5" width="269" height="346" /></p>
<ul class="related_post"><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2010/1d7a79196621_DAE1/434.png&amp;h=100&amp;w=100&amp;zc=1" alt="仿腾讯微博式访客信息悬浮显示（JavaScript &amp; ajax）" class="thumb" /><a href="http://www.qiqiboy.com/2010/08/16/visitor-information-tencent-suspended-micro-display.html" title="仿腾讯微博式访客信息悬浮显示（JavaScript &amp; ajax）">仿腾讯微博式访客信息悬浮显示（JavaScript &amp; ajax）</a> (107)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2012/01/688860f891c5.png&amp;h=100&amp;w=100&amp;zc=1" alt="TouchSlider 1.0 - 兼容触摸屏手机与PC的幻灯片" class="thumb" /><a href="http://www.qiqiboy.com/2012/01/11/touchslider-1-0-publish.html" title="TouchSlider 1.0 &#8211; 兼容触摸屏手机与PC的幻灯片">TouchSlider 1.0 &#8211; 兼容触摸屏手机与PC的幻灯片</a> (6)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/09/rrr.png&amp;h=100&amp;w=100&amp;zc=1" alt="wordpress 搜索自定义字段(模糊查询)" class="thumb" /><a href="http://www.qiqiboy.com/2011/09/14/query-posts-by-postmeta.html" title="wordpress 搜索自定义字段(模糊查询)">wordpress 搜索自定义字段(模糊查询)</a> (17)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/08/demo.png&amp;h=100&amp;w=100&amp;zc=1" alt="wordpress 按首字母排列文章/检索文章" class="thumb" /><a href="http://www.qiqiboy.com/2011/08/10/wordpress-search-post-by-first-char.html" title="wordpress 按首字母排列文章/检索文章">wordpress 按首字母排列文章/检索文章</a> (19)</li><li class="last"><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/02/confirm.png&amp;h=100&amp;w=100&amp;zc=1" alt="javascript自定义Dialog对话框(alert, confirm, prompt) -- (一)" class="thumb" /><a href="http://www.qiqiboy.com/2011/02/22/custom-javascript-dialog-alert-prompt.html" title="javascript自定义Dialog对话框(alert, confirm, prompt) &#8212; (一)">javascript自定义Dialog对话框(alert, confirm, prompt) &#8212; (一)</a> (31)</li></ul><p><strong>声明:</strong> 本站遵循 <a href="http:\/\/creativecommons.org/licenses/by-nc-sa/3.0/">署名-非商业性使用-相同方式共享 3.0</a> 共享协议. 转载请注明转自 <a href="http://www.qiqiboy.com">I'm qiqiboy !</a> </p> <p>本文地址: <a href="http://qiqi.boy.im/ew">http://qiqi.boy.im/ew<a></p><span style="background:#cc5566;color:#fffff;"><h4>Look, this post is replyed so hot, let's go O(∩_∩)O~.</h4></span><h3>Related comments</h3><ul><li>2011年11月25日, <a href="http://www.qiqiboy.com/2011/06/10/sina-weibo-timestamp-function-2.html#comment-15991">皇家元林</a> say: 这个在WordPress里怎么调用啊</li><li>2011年08月4日, <a href="http://www.qiqiboy.com/2011/06/10/sina-weibo-timestamp-function-2.html#comment-12316">syshack</a> say: 不错的主题 很好～</li><li>2011年07月31日, <a href="http://www.qiqiboy.com/2011/06/10/sina-weibo-timestamp-function-2.html#comment-12289">yoyiorlee</a> say: 顶一个！！！</li><li>2011年07月30日, <a href="http://www.qiqiboy.com/2011/06/10/sina-weibo-timestamp-function-2.html#comment-12285">heson</a> say: 给力 受用咯</li><li>2011年07月12日, <a href="http://www.qiqiboy.com/2011/06/10/sina-weibo-timestamp-function-2.html#comment-12023">WayJam</a> say: 做微博主题也要用到哦。</li><li>2011年06月26日, <a href="http://www.qiqiboy.com/2011/06/10/sina-weibo-timestamp-function-2.html#comment-11749">晨光</a> say: 非常的个性化哦</li><li>2011年06月25日, <a href="http://www.qiqiboy.com/2011/06/10/sina-weibo-timestamp-function-2.html#comment-11733">浩子</a> say: 我是来围观的</li><li>2011年06月21日, <a href="http://www.qiqiboy.com/2011/06/10/sina-weibo-timestamp-function-2.html#comment-11653">sprityaoyao</a> say: QiQiboy果然很强大</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.qiqiboy.com/2011/06/10/sina-weibo-timestamp-function-2.html/feed</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>旅行在云南</title>
		<link>http://www.qiqiboy.com/2011/05/27/i-am-traveling-in-yun-nan.html</link>
		<comments>http://www.qiqiboy.com/2011/05/27/i-am-traveling-in-yun-nan.html#comments</comments>
		<pubDate>Thu, 26 May 2011 16:24:19 +0000</pubDate>
		<dc:creator>qiqiboy</dc:creator>
				<category><![CDATA[Myself-Life]]></category>
		<category><![CDATA[云南]]></category>
		<category><![CDATA[吃喝玩乐]]></category>
		<category><![CDATA[旅行]]></category>
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.qiqiboy.com/2011/05/27/i-am-traveling-in-yun-nan.html</guid>
		<description><![CDATA[在古城中坐车到南关，然后转车去双廊，后半段路基本上是在小路上颠簸过去的。到了双廊后下雨了，雨后的洱海烟波缭绕，更增添一种情调。在双廊是住在 水时光 的海景房，200一晚，感觉值了。躺在床上，透过大大的落地玻璃门，可以一眼望到洱海。听着雨滴滴滴答，真想就那样一直躺在床上到永久。]]></description>
			<content:encoded><![CDATA[<p>5月27日出发，飞往云南.昆明，短暂停留后去往大理，之后行程不定。</p>
<p>对了，应该会在昆明去观看<a href="http://www.douban.com/event/14001400/" target="_blank"><strong>28日零点的《功夫熊猫2》首映</strong></a>。</p>
<p>以前没远行过，未知的旅行一定会带来不一样的感觉。亲，我走了，10天后回来。</p>
<p>我应该会在我的<a href="http://weibo.com/qiqiboy" target="_blank"><strong>新浪微博</strong></a>汇报每日行程，本文也将不定时更新旅行体验与心得。</p>
<p>有云南的朋友吗，也许我们可以大理碰头。</p>
<p><span id="more-2803"></span> <img style="display: inline;" title="20080831163140782" src="http://www.qiqiboy.com/wp-content/uploads/2011/05/200808311631407821.jpg" alt="20080831163140782" width="788" height="534" /></p>
<p>==========================05.27===========================</p>
<p>我对云南的印象是神马赶尸、背尸、苗巫、蛊术、降头之类的，好嘛，这都是来自盗墓小说了。</p>
<p>下午三点二十从郑州坐南航灰机，下午6点达到昆明。歇脚，然后干嘛呢。。。再然后去看《<a href="http://www.douban.com/event/14001400/" target="_blank">功夫熊猫2</a>》。</p>
<p><img style="display: inline;" title="hd" src="http://www.qiqiboy.com/wp-content/uploads/2011/05/hd.jpg" alt="hd" width="275" height="400" /></p>
<p>==========================05.28===========================</p>
<p>28日凌晨看了《功夫熊猫2》3D的首映，中文配音版，大概90分钟，剧情大概就是熊猫斗孔雀，具体点的记不清了，最后要提的就是台词超搞笑。。“神马都是浮云”类的都上去了都。。。</p>
<p>早上七点半起来买了到大理的车票，65块钱，10点17分发车，下午4点一刻终于到了，然后在大理新城（下关）直接坐在古城开旅馆的人家的车到了大理古城。现在应该还不算旺季，大理的游人不是很多。我表示不是很感冒，明天再看看，大概会去做索道，游洱海，等等。</p>
<p>暂且。</p>
<p>==========================05.29===========================</p>
<p>做旅馆的包车，早上8点半出发，先去了苍山索道，乘坐索道上到那啥山的半山腰，很短的一段索道，然后进去那个啥天龙八部的拍摄的那个溶洞，里面有个 神仙姐姐 雕像，我看了之后到目前为止还毫无魂牵梦绕的感觉，以后相信也不会了，因为我已经记不得那个雕像的样子了。接着就是在山洞中的各种行走，没什么感觉，到处是被游人抚摸得油乎乎，黑不溜秋的石头、钟乳啥的，导游还一个劲的让人去摸，我表示毫无兴趣。有一段阶梯路，应该是由于山洞太深，氧气有点稀薄，所以走上去会觉得比较累，呼吸会沉重。</p>
<p>然后是洱海游船，绕着洱海一圈，票价140多。洱海就是一个湖泊嘛。。</p>
<p>还去了一处白族人家，什么四道茶、三道茶的，其实就是像游客推销茶叶，当然他们没强买强卖。</p>
<p>返回古城后，晚上去了一个特他妈的三俗的酒吧，樱花屋，完了。</p>
<p>==========================05.30===========================</p>
<p>依然呆在古城，本来今天要去双廊的，在三俗酒吧里临时将双廊水时光的房间预订后移了一天。所以今天依然是古城里各种转。不过不巧的是，下雨了。夏天，就适合做两件事：睡觉和吃西瓜。下雨的夏天，只适合睡觉 。所以当我晃了两条街后毅然决定还是回去睡觉吧。</p>
<p>晚上去了洋人街上的太白楼，在二楼一直坐到了晚上10点。这期间点了牛肉披萨和一盘毛豆，我表示披萨很好吃，毛豆我吃了很多没放屁。<br />
<img style="display: inline;" title="IMG_0105" src="http://www.qiqiboy.com/wp-content/uploads/2011/06/IMG_0105.jpg" alt="IMG_0105" width="490" height="368" /></p>
<p>==========================05.31 &#8211; 06.01===========================</p>
<p>在古城中坐车到南关，然后转车去双廊，后半段路基本上是在小路上颠簸过去的。到了双廊后下雨了，雨后的洱海烟波缭绕，更增添一种情调。在双廊是住在 水时光 的海景房，200一晚，感觉值了。躺在床上，透过大大的落地玻璃门，可以一眼望到洱海。听着雨滴滴滴答，真想就那样一直躺在床上到永久。<img style="display: inline;" title="IMG_0110" src="http://www.qiqiboy.com/wp-content/uploads/2011/06/IMG_0110.jpg" alt="IMG_0110" width="640" height="480" /><img style="display: inline;" title="IMG_0132" src="http://www.qiqiboy.com/wp-content/uploads/2011/06/IMG_0132.jpg" alt="IMG_0132" width="640" height="480" /></p>
<p>住了两晚，六月二号又回到了古城。</p>
<p>==========================06.02 &#8211; 06.03===========================</p>
<p>在古城又晃荡了两天，很安逸，很好，各种好。</p>
<p>期间在古城墙上晃荡过，电影博物馆中参观过，又在太白楼坐过，唐朝酒吧听过唱现场，斗过两只恶狗(凶恶的小狗)。。。。。这是一段恍惚的记忆，各种美好。</p>
<p><img style="display: inline;" title="IMG_0156" src="http://www.qiqiboy.com/wp-content/uploads/2011/06/IMG_0156.jpg" alt="IMG_0156" width="360" height="480" /></p>
<p>城墙上仿佛有个女巫</p>
<p>==========================06.04===========================</p>
<p>回到昆明。念。</p>
<p>==========================06.05===========================</p>
<p>离别。伤。</p>
<p>==========================06.06===========================</p>
<p>我坐川航的早七点的飞机回到郑州。安。</p>
<p>========================== 总结 ===========================</p>
<p>仿佛一场梦。</p>
<p>只不过一场旅行的结束，人生的旅途需要我们一起努力，过的精彩灿烂。</p>
<ul class="related_post"><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2012/01/61b11ad9tw1douqptegsnj.jpg&amp;h=100&amp;w=100&amp;zc=1" alt="qiqiboy归来 - 纯吐槽" class="thumb" /><a href="http://www.qiqiboy.com/2012/01/08/qiqiboy-coming-again.html" title="qiqiboy归来 &#8211; 纯吐槽">qiqiboy归来 &#8211; 纯吐槽</a> (45)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2011/05/61b11ad9jw1dgiip0xm7qj.jpg&amp;h=100&amp;w=100&amp;zc=1" alt="Social Medias Connect（社交媒体连接）" class="thumb" /><a href="http://www.qiqiboy.com/products/plugins/social-medias-connect" title="Social Medias Connect（社交媒体连接）">Social Medias Connect（社交媒体连接）</a> (434)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/themes/windPaled/images/default-thumb.jpg&amp;h=100&amp;w=100&amp;zc=1" alt="Guestbook" class="thumb" /><a href="http://www.qiqiboy.com/guestbook" title="Guestbook">Guestbook</a> (353)</li><li><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2010/08/1de9fb000bac.png&amp;h=100&amp;w=100&amp;zc=1" alt="插件发布：边栏最新评论及ajax回复——WP RC Reply AJAX" class="thumb" /><a href="http://www.qiqiboy.com/2010/08/20/wordpress-plugin-wp-rc-reply-ajax.html" title="插件发布：边栏最新评论及ajax回复——WP RC Reply AJAX">插件发布：边栏最新评论及ajax回复——WP RC Reply AJAX</a> (188)</li><li class="last"><img src="http://www.qiqiboy.com/wp-content/themes/windPaled/timthumb.php?src=http://www.qiqiboy.com/wp-content/uploads/2010/08/spam5.png&amp;h=100&amp;w=100&amp;zc=1" alt="围观wordpress中文圈内好玩的spam" class="thumb" /><a href="http://www.qiqiboy.com/2010/08/31/chinese-circle-surrounding-wordpress-spam-fun.html" title="围观wordpress中文圈内好玩的spam">围观wordpress中文圈内好玩的spam</a> (133)</li></ul><p><strong>声明:</strong> 本站遵循 <a href="http:\/\/creativecommons.org/licenses/by-nc-sa/3.0/">署名-非商业性使用-相同方式共享 3.0</a> 共享协议. 转载请注明转自 <a href="http://www.qiqiboy.com">I'm qiqiboy !</a> </p> <p>本文地址: <a href="http://qiqi.boy.im/eu">http://qiqi.boy.im/eu<a></p><span style="background:#cc5566;color:#fffff;"><h4>Look, this post is replyed so hot, let's go O(∩_∩)O~.</h4></span><h3>Related comments</h3><ul><li>2011年12月14日, <a href="http://www.qiqiboy.com/2011/05/27/i-am-traveling-in-yun-nan.html#comment-16375">tinnitus treatment otc</a> say: <strong>Read was interesting, stay in touch...</strong>

[...]listed below are some references to internet pages which I connect to for the fact we think they’re truly worth checking out[...]...</li><li>2011年09月15日, <a href="http://www.qiqiboy.com/2011/05/27/i-am-traveling-in-yun-nan.html#comment-13520">梦飞</a> say: 彩云之南……羡慕 <img src='http://www.qiqiboy.com/wp-content/themes/windPaled/images/smiles/icon_exclaim.gif' alt=':!:' class='wp-smiley' /> </li><li>2011年08月19日, <a href="http://www.qiqiboy.com/2011/05/27/i-am-traveling-in-yun-nan.html#comment-12579">维斯王</a> say: 有机会再去，呵呵。看的我都心痒了~</li><li>2011年08月8日, <a href="http://www.qiqiboy.com/2011/05/27/i-am-traveling-in-yun-nan.html#comment-12389">尘色记忆</a> say: 不错的旅行啊 我也在凑花我的 单身之路 呵呵</li><li>2011年07月30日, <a href="http://www.qiqiboy.com/2011/05/27/i-am-traveling-in-yun-nan.html#comment-12283">习小衣</a> say: 好美的云南~~~~向往中~~~~其实去过一次了，可惜就到了昆明，真正漂亮的地儿都还没去呢。。。</li><li>2011年06月18日, <a href="http://www.qiqiboy.com/2011/05/27/i-am-traveling-in-yun-nan.html#comment-11639">asd</a> say: 哇啊</li><li>2011年06月18日, <a href="http://www.qiqiboy.com/2011/05/27/i-am-traveling-in-yun-nan.html#comment-11638">sailor</a> say: 很羡慕出去旅游的人啊，那个有女巫的图片吓到我了，呵呵</li><li>2011年06月17日, <a href="http://www.qiqiboy.com/2011/05/27/i-am-traveling-in-yun-nan.html#comment-11624">秦大少</a> say: 话说赶尸、放蛊之类的应该是湘西才有的吧……</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.qiqiboy.com/2011/05/27/i-am-traveling-in-yun-nan.html/feed</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
	</channel>
</rss>

