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

<channel>
	<title>我想网 &#187; Source-code</title>
	<atom:link href="http://www.iwanna.cn/tags/source-code/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.iwanna.cn</link>
	<description></description>
	<lastBuildDate>Mon, 26 Dec 2011 05:46:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>get URL Params －JavaScript实现获取URL参数</title>
		<link>http://www.iwanna.cn/archives/2010/12/14/6125/</link>
		<comments>http://www.iwanna.cn/archives/2010/12/14/6125/#comments</comments>
		<pubDate>Tue, 14 Dec 2010 05:33:58 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=6125</guid>
		<description><![CDATA[var Url = location.href; Url = Url.replace(/.*\?(.*?)/,&#8221;$1&#8243;); Variables = Url.split (&#8220;&#38;&#8221;); for (i = 0; i &#60; Variables.length; i++) { Separ = Variables[i].split(&#8220;=&#8221;); eval (&#8216;var &#8216;+Separ[0]+&#8217;=&#8221;&#8216;+Separ[1]+&#8217;&#8221;&#8216;); } function getURLParam(strParamName){ var strReturn = &#8220;&#8221;; var strHref = window.location.href; if ( strHref.indexOf(&#8220;?&#8221;) &#62; -1 ){ var strQueryString = strHref.substr(strHref.indexOf(&#8220;?&#8221;)).toLowerCase(); var aQueryString = strQueryString.split(&#8220;&#38;&#8221;); for ( var iParam [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li>var Url = location.href;</li>
<li>Url = Url.replace(/.*\?(.*?)/,&#8221;$1&#8243;);</li>
<li>Variables = Url.split (&#8220;&amp;&#8221;);</li>
<li>for (i = 0; i &lt; Variables.length; i++) {</li>
<li>       Separ = Variables[i].split(&#8220;=&#8221;);</li>
<li>       eval (&#8216;var &#8216;+Separ[0]+&#8217;=&#8221;&#8216;+Separ[1]+&#8217;&#8221;&#8216;);</li>
<li>}</li>
<li></li>
<li></li>
<li></li>
<li>function getURLParam(strParamName){</li>
<li>  var strReturn = &#8220;&#8221;;</li>
<li>  var strHref = window.location.href;</li>
<li>  if ( strHref.indexOf(&#8220;?&#8221;) &gt; -1 ){</li>
<li>    var strQueryString = strHref.substr(strHref.indexOf(&#8220;?&#8221;)).toLowerCase();</li>
<li>    var aQueryString = strQueryString.split(&#8220;&amp;&#8221;);</li>
<li>    for ( var iParam = 0; iParam &lt; aQueryString.length; iParam++ ){</li>
<li>      if (aQueryString[iParam].indexOf(strParamName + &#8220;=&#8221;) &gt; -1 ){</li>
<li>        var aParam = aQueryString[iParam].split(&#8220;=&#8221;);</li>
<li>        strReturn = aParam[1];</li>
<li>        break;</li>
<li>      }</li>
<li>    }</li>
<li>  }</li>
<li>  return strReturn;</li>
<li>}</li>
</ol>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/12/14/6125/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/12/14/6125/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/12/14/6125/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/12/14/6125/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/12/14/6125/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/12/14/6125/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用PHP自动生成密码的源代码</title>
		<link>http://www.iwanna.cn/archives/2010/12/09/6116/</link>
		<comments>http://www.iwanna.cn/archives/2010/12/09/6116/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 14:45:33 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=6116</guid>
		<description><![CDATA[使用PHP自动生成密码 In this tutorial I will show you how to generate random passwords that are highly secure and extremely difficult to crack. However you can choose between various complexity/strength and you can set password length as well. Step 1. Let’s go through what we need to generate passwords. First we need a list of words [...]]]></description>
			<content:encoded><![CDATA[<p><strong>使用PHP自动生成密码</strong></p>
<p>In  this tutorial I will show you how to generate random passwords that are  highly secure and extremely difficult to crack. However you can choose  between various complexity/strength and you can set password length as  well.</p>
<p><strong>Step 1.</strong></p>
<p>Let’s  go through what we need to generate passwords. First we need a list of  words and/or characters what we can use for password generation. I don’t  offer using word lists as it is easier to guess and password recovery  tools are using such lists as well. So I will focus only on character  lists.</p>
<p>The idea is to create a string from the  characters and than in a loop we select an item from this string  (character list) one by one until we reach the requested length. To  realize this we will implement a function with 2 parameters. The first  is the length of the requested password and the second is the  strength/complexity of the password.      <strong></strong><br />
<span id="more-6116"></span><br />
<strong>Step  2.</strong></p>
<p>The function use case looks like this:<br />
<!--[endif]--></p>
<ul>
<li>Initializing  the <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag" title="标签 PHP 下的日志">PHP</a> random generator using the actual time value.</li>
<li>Define 3 various strings for  the various password complexity.</li>
<li>Reset the password and length  counter variables</li>
<li>Create  a loop until the requested length and append a random character one by  one to the password string.</li>
<li>In the loop I made one more check to make all  character different in the generated password.</li>
<li>Return with the ready  password.</li>
</ul>
<p>It is quite simple and you can  generate really strong passwords with it.</p>
<p>The  complete code looks like this:</p>
<p><!--[if !supportLists]--><!--[endif]--><!--[if !supportLists]--><!--[endif]--><!--[if !supportLists]--><!--[endif]--><!--[if !supportLists]--><!--[endif]--><!--[if !supportLists]--><!--[endif]--> &lt;?php</p>
<p>function generatePassword($length=6,$level=2){</p>
<p>list($usec, $sec) = explode(&#8216; &#8217;, microtime());<br />
srand((float) $sec + ((float) $usec * 100000));</p>
<p>$validchars[1] = &#8221;0123456789abcdfghjkmnpqrstvwxyz&#8221;;<br />
$validchars[2] = &#8221;0123456789abcdfghjkmnpqrstvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&#8221;;<br />
$validchars[3] = &#8221;0123456789_!@#$%&amp;*()-=+/abcdfghjkmnpqrstvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_!@#$%&amp;*()-=+/&#8221;;</p>
<p>$password  = &#8221;";<br />
$counter   = 0;</p>
<p>while ($counter &lt; $length) {<br />
$actChar = substr($validchars[$level], rand(0, strlen($validchars[$level])-1), 1);</p>
<p>// All character must be different<br />
if (!strstr($password, $actChar)) {<br />
$password .= $actChar;<br />
$counter++;<br />
}<br />
}</p>
<p>return $password;</p>
<p>}<br />
?&gt;</p>
<p><strong>Step 3.</strong></p>
<p>To make the script more usable let’s create an <a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag" title="标签 HTML 下的日志">html</a> page  where the visitor can set the requested length and strength of the  password. To do this we will create a simple form with 2 drop down box  where the visitor can select the password properties. In this example I  set the length list from 5 to 10 and the strength to Easy, Normal, and  Hard. When the visitor submits the form it will call itself and in this  phase not only shows the form again but processes the submitted values  and generates the requested password and shows it for the user.</p>
<p>The  HTML code is quite simple:</p>
<p>&lt;!DOCTYPE html PUBLIC &#8221;-//W3C//DTD XHTML 1.0 Transitional//EN&#8221; &#8221;DTD/xhtml1-transitional.dtd&#8221;&gt;<br />
&lt;html&gt;<br />
&lt;body&gt;<br />
&lt;form action=&#8221;&lt;?php echo $_SERVER['PHP_SELF']; ?&gt;&#8221; method=&#8221;post&#8221;&gt;<br />
&lt;table&gt;<br />
&lt;tr&gt;&lt;td&gt;Password length: &lt;/td&gt;&lt;td&gt;<br />
&lt;select name=&#8221;passlength&#8221;&gt;<br />
&lt;option value=&#8221;5&#8243;&gt;5&lt;/option&gt;<br />
&lt;option value=&#8221;6&#8243;&gt;6&lt;/option&gt;<br />
&lt;option value=&#8221;7&#8243;&gt;7&lt;/option&gt;<br />
&lt;option value=&#8221;8&#8243;&gt;8&lt;/option&gt;<br />
&lt;option value=&#8221;9&#8243;&gt;9&lt;/option&gt;<br />
&lt;option value=&#8221;10&#8243;&gt;10&lt;/option&gt;<br />
&lt;/select&gt;<br />
&lt;/td&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;td&gt;Password strength:&lt;/td&gt;&lt;td&gt;<br />
&lt;select name=&#8221;passstrength&#8221;&gt;<br />
&lt;option value=&#8221;1&#8243;&gt;Easy&lt;/option&gt;<br />
&lt;option value=&#8221;2&#8243;&gt;Normal&lt;/option&gt;<br />
&lt;option value=&#8221;3&#8243;&gt;Hard&lt;/option&gt;<br />
&lt;/select&gt;<br />
&lt;/td&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;td &gt;&lt;br/&gt;&lt;input type=&#8221;submit&#8221; name=&#8221;submitBtn&#8221; value=&#8221;Generate&#8221;&gt;&lt;/td&gt;&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;/form&gt;<br />
&lt;?php<br />
if (isset($_POST['submitBtn'])){<br />
echo &#8217;&lt;table&gt;&lt;tr&gt;&lt;td&gt;Generated password:&lt;/td&gt;&lt;td&gt;&#8217;;<br />
echo generatePassword($length,$strength);<br />
echo &#8217;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#8217;;<br />
}<br />
?&gt;<br />
&lt;/body&gt;</p>
<p><strong>Step  4.</strong></p>
<p>Final words:<br />
As you  can see generating a random password is not so complex task. You can  integrate this script into your registration process to generate a  password for the user.</p>
<p>The complete script is the  following:</p>
<p>&lt;?php</p>
<p>function generatePassword($length=6,$level=2){</p>
<p>list($usec, $sec) = explode(&#8216; &#8217;, microtime());<br />
srand((float) $sec + ((float) $usec * 100000));</p>
<p>$validchars[1] = &#8221;0123456789abcdfghjkmnpqrstvwxyz&#8221;;<br />
$validchars[2] = &#8221;0123456789abcdfghjkmnpqrstvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&#8221;;<br />
$validchars[3] = &#8221;0123456789_!@#$%&amp;*()-=+/abcdfghjkmnpqrstvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_!@#$%&amp;*()-=+/&#8221;;</p>
<p>$password  = &#8221;";<br />
$counter   = 0;</p>
<p>while ($counter &lt; $length) {<br />
$actChar = substr($validchars[$level], rand(0, strlen($validchars[$level])-1), 1);</p>
<p>// All character must be different<br />
if (!strstr($password, $actChar)) {<br />
$password .= $actChar;<br />
$counter++;<br />
}<br />
}</p>
<p>return $password;</p>
<p>}</p>
<p>?&gt;</p>
<p>&lt;!DOCTYPE html PUBLIC &#8221;-//W3C//DTD XHTML 1.0 Transitional//EN&#8221; &#8221;DTD/xhtml1-transitional.dtd&#8221;&gt;<br />
&lt;html&gt;<br />
&lt;body&gt;<br />
&lt;form action=&#8221;&lt;?php echo $_SERVER['PHP_SELF']; ?&gt;&#8221; method=&#8221;post&#8221;&gt;<br />
&lt;table&gt;<br />
&lt;tr&gt;&lt;td&gt;Password length: &lt;/td&gt;&lt;td&gt;<br />
&lt;select name=&#8221;passlength&#8221;&gt;<br />
&lt;option value=&#8221;5&#8243;&gt;5&lt;/option&gt;<br />
&lt;option value=&#8221;6&#8243;&gt;6&lt;/option&gt;<br />
&lt;option value=&#8221;7&#8243;&gt;7&lt;/option&gt;<br />
&lt;option value=&#8221;8&#8243;&gt;8&lt;/option&gt;<br />
&lt;option value=&#8221;9&#8243;&gt;9&lt;/option&gt;<br />
&lt;option value=&#8221;10&#8243;&gt;10&lt;/option&gt;<br />
&lt;/select&gt;<br />
&lt;/td&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;td&gt;Password strength:&lt;/td&gt;&lt;td&gt;<br />
&lt;select name=&#8221;passstrength&#8221;&gt;<br />
&lt;option value=&#8221;1&#8243;&gt;Easy&lt;/option&gt;<br />
&lt;option value=&#8221;2&#8243;&gt;Normal&lt;/option&gt;<br />
&lt;option value=&#8221;3&#8243;&gt;Hard&lt;/option&gt;<br />
&lt;/select&gt;<br />
&lt;/td&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;td &gt;&lt;br/&gt;&lt;input type=&#8221;submit&#8221; name=&#8221;submitBtn&#8221; value=&#8221;Generate&#8221;&gt;&lt;/td&gt;&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;/form&gt;<br />
&lt;?php<br />
if (isset($_POST['submitBtn'])){<br />
echo &#8217;&lt;table&gt;&lt;tr&gt;&lt;td&gt;Generated password:&lt;/td&gt;&lt;td&gt;&#8217;;<br />
echo generatePassword($length,$strength);<br />
echo &#8217;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#8217;;<br />
}<br />
?&gt;<br />
&lt;/body&gt;</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/12/09/6116/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/12/09/6116/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/12/09/6116/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/12/09/6116/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/12/09/6116/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/12/09/6116/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javascript简单实现checkbox的全选与反选</title>
		<link>http://www.iwanna.cn/archives/2010/11/24/5906/</link>
		<comments>http://www.iwanna.cn/archives/2010/11/24/5906/#comments</comments>
		<pubDate>Wed, 24 Nov 2010 15:06:52 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=5906</guid>
		<description><![CDATA[作者：断桥残雪 今天上网遇到有个网友在论坛问input的checkbox全选和反选的问题，顺手总结了一下，然后写了个简单 的jQuery checkbox全选反选插件，希望对大家有用。 如果是简单的实现checkbox的全选与反选可以使用下面的函数： function checkall(obj,cName) { var checkboxs = document.getElementsByName(cName); for(var i=checkboxs.length;i--;){ checkboxs[i].checked = obj.checked; } } //使用方法:给全选的按钮加onclick事件：onclick="checkall(this,'all[]');" 下面的jQuery checkbox插件是在网上找的： $.fn.checkbox = function(){ var t = this; /* * 切换全选/反选 * @example $("#checkAll").checkbox().toggle($("input[name='selectAll']")); */ this.toggle = function(el){ $(el).click(function(){ $(t).attr('checked', false); }); $(this).click(function(){ $(el).attr('checked', $(this).attr('checked') == true ? true : false); }); }; /* [...]]]></description>
			<content:encoded><![CDATA[<p>作者：断桥残雪</p>
<p>今天上网遇到有个网友在论坛问input的<strong>checkbox</strong>全选和反选的问题，顺手总结了一下，然后写了个简单 的jQuery checkbox<strong>全选反选</strong>插件，希望对大家有用。<br />
如果是简单的实现checkbox的全选与反选可以使用下面的函数：</p>
<div>
<div>
<pre> function checkall(obj,cName)
 {
     var checkboxs = document.getElementsByName(cName);
     for(var i=checkboxs.length;i--;){
             checkboxs[i].checked = obj.checked;
     }
 }
//使用方法:给全选的按钮加onclick事件：onclick="checkall(this,'all[]');"</pre>
</div>
</div>
<p><span id="more-5906"></span><br />
下面的jQuery checkbox插件是在网上找的：</p>
<div>
<div>
<pre>$.fn.checkbox = function(){
    var t = this;
    /*
     * 切换全选/反选
     * @example $("#checkAll").checkbox().toggle($("input[name='selectAll']"));
     */
    this.toggle = function(el){
        $(el).click(function(){
            $(t).attr('checked', false);
        });
        $(this).click(function(){
            $(el).attr('checked', $(this).attr('checked') == true ? true : false);
        });
    };
    /*
     * 全选
     */
    this.check = function(el){
        $(el).attr('checked', true);
    };
    /*
     * 反选
     */
    this.uncheck = function(el){
        $(el).attr('checked', false);
    };
    return t;
};</pre>
</div>
</div>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/11/24/5906/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/11/24/5906/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/11/24/5906/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/11/24/5906/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/11/24/5906/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/11/24/5906/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress：timestamp 函数的时差(timezone)问题</title>
		<link>http://www.iwanna.cn/archives/2010/11/21/5866/</link>
		<comments>http://www.iwanna.cn/archives/2010/11/21/5866/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 14:44:06 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=5866</guid>
		<description><![CDATA[最早发现这个时差问题是在我们首页添加24小时内热文(显示浏览最多十篇文章)后发现的，平时每天更新20-30篇，即 使扣除8小时影响也不大，但在某个周末的最近24小时文章刚好够10篇时，它只显示几篇给我，当时就诧异了。当时没想过根源是 timestamp 函数，只是想简单 hack 一下就好，将 wp-postviews 插件里 get_timespan_most_viewed 函数中的 $limit_date = current_time(’timestamp’) &#8211; ($days*86400); 改为 $limit_date = current_time(’timestamp’) &#8211; ($days*86400) &#8211; 28800; // 8小时就是 8×60&#215;60=28800秒 所以今天在把我们首页第一篇文章的时间显示方式改为 xxx mins ago 时，8小时时差又出现了，于是毫不犹豫的暴力 hack 了，同样是把 &#60;?php echo human_time_diff(get_the_time(’U&#8217;), current_time(’timestamp’)) . ‘ ago’; ?&#62; 改成 &#60;?php echo human_time_diff(get_the_time(’U&#8217;), current_time(’timestamp’) &#8211; 28800 ) . ‘ ago’; ?&#62; 当然我这样指标不治本，有兴趣折腾的同学可以直接到 wp-includes/formatting.php [...]]]></description>
			<content:encoded><![CDATA[<p>最早发现这个时差问题是在我们<a rel="nofollow" href="http://www.iwanna.cn/" target="_blank">首页</a>添加24小时内热文(显示浏览最多十篇文章)后发现的，平时每天更新20-30篇，即 使扣除8小时影响也不大，但在某个周末的最近24小时文章刚好够10篇时，它只显示几篇给我，当时就诧异了。当时没想过根源是 timestamp  函数，只是想简单 hack 一下就好，将 wp-postviews 插件里 get_timespan_most_viewed 函数中的</p>
<blockquote><p>$limit_date = current_time(’timestamp’) &#8211; ($days*86400);</p></blockquote>
<p>改为</p>
<blockquote><p>$limit_date = current_time(’timestamp’) &#8211; ($days*86400) &#8211;  28800;</p></blockquote>
<p>// 8小时就是 8×60&#215;60=28800秒</p>
<p>所以今天在把我们首页第一篇文章的时间显示方式改为 xxx mins ago 时，8小时时差又出现了，于是毫不犹豫的暴力 hack  了，同样是把</p>
<blockquote><p>&lt;?<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag" title="标签 PHP 下的日志">php</a> echo human_time_diff(get_the_time(’U&#8217;),  current_time(’timestamp’)) . ‘ ago’; ?&gt;</p></blockquote>
<p>改成</p>
<blockquote><p>&lt;?php echo human_time_diff(get_the_time(’U&#8217;),  current_time(’timestamp’) &#8211; 28800 ) . ‘ ago’; ?&gt;</p></blockquote>
<p>当然我这样指标不治本，有兴趣折腾的同学可以直接到 wp-includes/formatting.php 里修改  human_time_diff。就解决 human_time_diff 函数的 timezone  问题而言，我这个方法简单有效(网上N多老外哭求这个时差问题都没有答案，哈哈哈)，但究其根源还是要解决 timestamp 函数的时差问题。<br />
<span id="more-5866"></span><br />
参考<a rel="nofollow" href="http://core.trac.wordpress.org/ticket/8662" target="_blank">这里</a>，有三种解决方案，其中比较简洁的 一个是，在 wp-includes/functions.php 第66行</p>
<blockquote><p>case ‘timestamp’:<br />
return ( $gmt ) ? time() : time() + ( get_option( ‘gmt_offset’ ) * 3600  );<br />
break;</p></blockquote>
<p>下面添加</p>
<blockquote><p>case ‘timestampgmt’:<br />
return ( $gmt ) ? strtotime(gmdate(”Y-m-d H:i:s”)) :  strtotime(gmdate(”Y-m-d H:i:s”)) + ( get_option( ‘gmt_offset’ ) * 3600  );<br />
break;</p></blockquote>
<p>然后再要用 timestamp 改用 timestampgmt 就好了。</p>
<p><span style="text-decoration: underline;"># 注：请自行以上代码中的将全角引号改为半角</span></p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/11/21/5866/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/11/21/5866/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/11/21/5866/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/11/21/5866/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/11/21/5866/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/11/21/5866/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>根据url提取网站域名的方法小结</title>
		<link>http://www.iwanna.cn/archives/2010/10/17/5561/</link>
		<comments>http://www.iwanna.cn/archives/2010/10/17/5561/#comments</comments>
		<pubDate>Sun, 17 Oct 2010 12:32:03 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=5561</guid>
		<description><![CDATA[前言：最近使用到了他人总结的一个基础类库。查看了下源码，发现String帮助类的一个辅助方法不是很严谨，重构之。 1、原来程序的写法 public static string GetDomainName(string url) { Regex reg = new Regex(@"http(s)?://([\w-]+\.)+[\w-]+/?"); string result = reg.Match(url, 0).Value; if (result.IndexOf("http://") &#62; -1) { result = result.Replace("http://", string.Empty); } else if (result.IndexOf("https://") &#62; -1) { result = result.Replace("https://", string.Empty); } return result.Replace("/", string.Empty); } 2、改进方案 上面的写法，我认为不严谨的地方有两处：a、没有区分部分字符串的大小写（虽然通常传入的url都是小写http(s)开头的，使用起来问题不 大）；b、参数没有考虑为null的情况。下面给出我的几种解决方法，个人认为相对而言比较简洁严谨一些。 （1）正则改进 按照原来代码的写法，正则表达式是先提取出形如 http://www.iwanna.cn/ 的形式的字符串，然后再处理字符串。字符串替换和hard coding看起来会比较多，而且，毫无疑问，上面代码中的正则提取的字符串稍显冗余。我的改进如下： public static string GetDomainName(string [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>前言：最近使用到了他人总结的一个基础类库。查看了下源码，发现String帮助类的一个辅助方法不是很严谨，重构之。</p></blockquote>
<p>1、原来程序的写法</p>
<pre>      public static string GetDomainName(string url)
        {
            Regex reg = new Regex(@"http(s)?://([\w-]+\.)+[\w-]+/?");
            string result = reg.Match(url, 0).Value;
            if (result.IndexOf("http://") &gt; -1)
            {
                result = result.Replace("http://", string.Empty);
            }
            else if (result.IndexOf("https://") &gt; -1)
            {
                result = result.Replace("https://", string.Empty);
            }
            return result.Replace("/", string.Empty);
        }</pre>
<p><span id="more-5561"></span><br />
2、改进方案</p>
<p>上面的写法，我认为不严谨的地方有两处：a、没有区分部分字符串的大小写（虽然通常传入的url都是小写http(s)开头的，使用起来问题不 大）；b、参数没有考虑为null的情况。下面给出我的几种解决方法，个人认为相对而言比较简洁严谨一些。</p>
<p>（1）<strong>正则改进</strong></p>
<p>按照原来代码的写法，正则表达式是先提取出形如 <a href="http://www.iwanna.cn/" target="_blank">http://www.iwanna.cn/</a> 的形式的字符串，然后再处理字符串。字符串替换和hard  coding看起来会比较多，而且，毫无疑问，上面代码中的正则提取的字符串稍显冗余。我的改进如下：</p>
<pre>   public static string GetDomainName(string url)
        {
            if (url == null)
            {
                throw new Exception("输入的url为空");
            }
            Regex reg = new Regex(@"(?&lt;=[://])([\w-]+\.)+[\w-]+/?", RegexOptions.IgnoreCase);
            return reg.Match(url, 0).Value.Replace("/", string.Empty);
        }
</pre>
<p>应该说这是比较忠实于源代码的一种实现。<br />
【UPDATE】：根据文章后面布袋和尚<a href="http://www.cnblogs.com/mobydick/" target="_blank">说不得</a>大师的指点，再改进一下正则表达式，这样对于正常的 url路径或其他类型的路径都可以进行验证匹配了。代码如下：</p>
<pre>   public static string GetDomainName(string url)
        {
            if (url == null)
            {
                throw new Exception("输入的url为空");
            }
            Regex reg = new Regex(@"(?&lt;=://)([\w-]+\.)+[\w-]+(?&lt;=/?)");
            return reg.Match(url, 0).Value.Replace("/", string.Empty);
        }
</pre>
<p>（2）<strong>直接拼接字符串 </strong></p>
<p>拼接字符串在实际开发中可以做很多事情，简单的域名提取自然不在话下。我们分析一下输入的url，发现很显著也很重要的一个特征就是通过斜线 （/）来分割字符串，每一个分隔后的字符串分别表示不同的属性，如对应的协议名称，域名，站点名，页面名称等等。具体分割拼接提取的方法如下：</p>
<pre>     public static string GetDomainName(string url)
        {
             if (url == null)
            {
                throw new Exception("输入的url为空");
            }
            string result = string.Empty;
            string[] strArr = url.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
            foreach (string item in strArr)
            {
                if (string.Compare("http:", item.ToLower()) == 0)
                {
                    continue;
                }
                else if (string.Compare("https:", item.ToLower()) == 0)
                {
                    continue;
                }
                result = item;
                break;
            }
            return result;
        }
</pre>
<p>严格来说，这个是比较“笨”的方法，但是通俗易懂。</p>
<p>（3）<strong>通过一个HttpRequest对象获取它的Url的Host</strong></p>
<p>平时我们都是通过HttpRequest对象获取它的Url的Host来获取网站域名，现在只有一个字符串参数url，很显然，我们会 想到构造一个HttpRequest对象，然后按步就班即可。具体方法如下：</p>
<pre>        public static string GetDomainName(string url)
        {
            string result = null;
            try
            {
                HttpRequest request = new HttpRequest(string.Empty, url, string.Empty);
                result = request.Url.Host;
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("当前输入的URL:{0},发生异常：{1}", url, ex.Message));
            }
            return result;
        }</pre>
<p>这个应该算是另辟蹊径的一种解决方案，可是必需要引用System.Web dll，作为基础类库，应该越少引用越好。</p>
<blockquote><p>结语：到这里，根据url提取host的常规方法基本重构完成，没有过分考虑效率和性能，不知哪种会更快一点。期待您更好的方法和意见。</p></blockquote>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/10/17/5561/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/10/17/5561/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/10/17/5561/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/10/17/5561/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/10/17/5561/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/10/17/5561/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript 全角转半角技术</title>
		<link>http://www.iwanna.cn/archives/2010/10/17/5559/</link>
		<comments>http://www.iwanna.cn/archives/2010/10/17/5559/#comments</comments>
		<pubDate>Sun, 17 Oct 2010 12:27:10 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=5559</guid>
		<description><![CDATA[　 　function CtoH(obj){ 　　var str=obj.value; 　　 var result=&#8221;"; 　　for (var i = 0; i < str.length; i++){ 　　　if (str.charCodeAt(i)==12288){ 　　　　result+= String.fromCharCode(str.charCodeAt(i)-12256); 　　　　continue; 　　　} 　　　if (str.charCodeAt(i)>65280 &#038;&#038; str.charCodeAt(i)]]></description>
			<content:encoded><![CDATA[<p>　<SCRIPT><br />
　function CtoH(obj){<br />
　　var str=obj.value;<br />
　　 var result=&#8221;";<br />
　　for (var i = 0; i < str.length; i++){<br />
　　　if (str.charCodeAt(i)==12288){<br />
　　　　result+= String.fromCharCode(str.charCodeAt(i)-12256);<br />
　　　　continue;<br />
　　　}<br />
　　　if (str.charCodeAt(i)>65280 &#038;&#038; str.charCodeAt(i)<65375) result+= String.fromCharCode(str.charCodeAt(i)-65248);<br />
　　　else result+= String.fromCharCode(str.charCodeAt(i));<br />
　　}<br />
　　 obj.value=result;<br />
　}<br />
　</SCRIPT></p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/10/17/5559/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/10/17/5559/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/10/17/5559/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/10/17/5559/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/10/17/5559/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/10/17/5559/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery教程之鼠标事件篇</title>
		<link>http://www.iwanna.cn/archives/2010/10/03/5479/</link>
		<comments>http://www.iwanna.cn/archives/2010/10/03/5479/#comments</comments>
		<pubDate>Sun, 03 Oct 2010 13:22:41 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[JQuery]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=5479</guid>
		<description><![CDATA[jQuery除了选择器之外，还封装了很多事件的处理，比如鼠标事件，所谓 的鼠标事件是指用户在移动鼠标光标或者点击任意鼠标键而触发的事件，jQuery中封装了几乎所有的鼠标事件，包括点击，双击，移出，移入等鼠标事件，下 面断桥残雪简单的介绍下jQuery的鼠标事件 jQuery的click事件 经典鼠标click的实例： $("sel").click(function(){ alert('哈哈 !'); }); jQuery的dbclick事件 一般dbclick事件的同时也会触发两次click事件。。以前我写过一篇博客简单的介绍了下jQuery的鼠标双击事件 $('p').dbclick(function(){ alert('鼠标双击!'); }); $('p').click(function(){ alert('点击了一下!'); });//大家看看结果是怎么样的？ jQuery的mousedown事件 mousedown就是在按下鼠标时触发的事件 $(’p&#8217;).mousedown(function(){ alert(’按下了鼠标 !’); }); jQuery的mouseup事件 同上就是松开鼠标时候触发的事件,如果在于按下鼠标的相同元素上松开,那么也会触发click事件,mousedown和mouseup事件一般有 在div拖拽等效果中 $('p').mouseup(function(){ alert('鼠标起来了 !'); }).click(function(){ alert('点击了下鼠标!'); }); jQuery的mouseover事件 mouseover事件于用户把鼠标从一个元素移动到另外一个元素上时触发，如果需要知道来自那个元素可以使用，relatedTagrget属性 jQuery的mouseout事件 mouseout事件于用户把鼠标移出一个元素时触发，这包括从父元素移动到子元素上，或者使用键盘跳到元素上。 jQuery的mouseenter事件 和mouseover事件类似,但两者有区别 jQuery的mouserleaver事件 同上和mouseout事件类似. hover事件 其实hover事件内部就是使用了mouseenter和mouseleaver事件,我们可以使用jQuery的hover这个函数来代替上面的 两个函数 $('p').hover(function(){ alert('这个function里放mouseenter 的事件!'); },function(){ alert('这里是mouseleaver function!'); }); 这里我们没有鼠标右键事件?其实使用jQuery的mousedown事件然后再函数里判断就OK了 © 我想网 Akon 所有 [...]]]></description>
			<content:encoded><![CDATA[<p>jQuery除了<strong>选择器</strong>之外，还封装了很多事件的处理，比如<strong>鼠标事件</strong>，所谓 的鼠标事件是指用户在移动鼠标光标或者点击任意鼠标键而触发的事件，jQuery中封装了几乎所有的鼠标事件，包括点击，双击，移出，移入等鼠标事件，下 面断桥残雪简单的介绍下<strong>jQuery的鼠标事件</strong></p>
<h3>jQuery的click事件</h3>
<p>经典鼠标click的实例：</p>
<pre>$("sel").click(function(){
    alert('哈哈 !');
});</pre>
<p><span id="more-5479"></span></p>
<h3>jQuery的dbclick事件</h3>
<p>一般dbclick事件的同时也会触发两次click事件。。以前我写过一篇博客简单的介绍了下<a href="http://www.js8.in/610.html" target="_blank">jQuery的鼠标双击事件</a></p>
<pre>$('p').dbclick(function(){
alert('鼠标双击!');
});
$('p').click(function(){
alert('点击了一下!');
});//大家看看结果是怎么样的？</pre>
<h3>jQuery的mousedown事件</h3>
<p>mousedown就是在按下鼠标时触发的事件<br />
$(’p&#8217;).mousedown(function(){<br />
alert(’按下了鼠标 !’);<br />
});</p>
<h3>jQuery的mouseup事件</h3>
<p>同上就是松开鼠标时候触发的事件,如果在于按下鼠标的相同元素上松开,那么也会触发click事件,mousedown和mouseup事件一般有 在div拖拽等效果中</p>
<pre>$('p').mouseup(function(){
alert('鼠标起来了 !');
}).click(function(){
alert('点击了下鼠标!');
});</pre>
<h3>jQuery的mouseover事件</h3>
<p>mouseover事件于用户把鼠标从一个元素移动到另外一个元素上时触发，如果需要知道来自那个元素可以使用，relatedTagrget属性</p>
<h3>jQuery的mouseout事件</h3>
<p>mouseout事件于用户把鼠标移出一个元素时触发，这包括从父元素移动到子元素上，或者使用键盘跳到元素上。</p>
<h3>jQuery的mouseenter事件</h3>
<p>和mouseover事件类似,但两者有区别</p>
<h3>jQuery的mouserleaver事件</h3>
<p>同上和mouseout事件类似.</p>
<h3>hover事件</h3>
<p>其实hover事件内部就是使用了mouseenter和mouseleaver事件,我们可以使用jQuery的hover这个函数来代替上面的 两个函数</p>
<pre>$('p').hover(function(){
alert('这个function里放mouseenter 的事件!');
},function(){
alert('这里是mouseleaver function!');
});</pre>
<p>这里我们没有鼠标右键事件?其实使用jQuery的<strong>mousedown</strong>事件然后再函数里判断就OK了</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/10/03/5479/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/10/03/5479/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/10/03/5479/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/10/03/5479/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/10/03/5479/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/10/03/5479/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript–Apple设备检测代码</title>
		<link>http://www.iwanna.cn/archives/2010/09/27/5418/</link>
		<comments>http://www.iwanna.cn/archives/2010/09/27/5418/#comments</comments>
		<pubDate>Sun, 26 Sep 2010 16:47:56 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=5418</guid>
		<description><![CDATA[这里提供一些javascript检测代码，用于检测iPhone、iPod、iPad设备。 // Apple detection object var Apple = {}; Apple.UA = navigator.userAgent; Apple.Device = false; Apple.Types = ["iPhone", "iPod", "iPad"]; for (var d = 0; d &#60; Apple.Types.length; d++) { var t = Apple.Types[d]; Apple[t] = !!Apple.UA.match(new RegExp(t, “i”)); Apple.Device = Apple.Device &#124;&#124; Apple[t]; } // is this an Apple device? alert( “Apple device? ” [...]]]></description>
			<content:encoded><![CDATA[<p>这里提供一些javascript检测代码，用于检测iPhone、iPod、iPad设备。</p>
<div>
<div>// Apple detection object</div>
<div>var Apple = {};</div>
<div>Apple.UA = navigator.userAgent;</div>
<div>Apple.Device = false;</div>
<div>Apple.Types = ["iPhone", "iPod", "iPad"];</div>
<div>for (var d = 0; d &lt; Apple.Types.length; d++) {</div>
<div>var t = Apple.Types[d];</div>
<div>Apple[t] =  !!Apple.UA.match(new RegExp(t, “i”));</div>
<div>Apple.Device = Apple.Device  || Apple[t];</div>
<div>}</div>
<div>// is this an Apple device?</div>
<div>alert(</div>
<div>“Apple device? ” +  Apple.Device +</div>
<div>“\niPhone? ” + Apple.iPhone  +</div>
<div>“\niPod? ” + Apple.iPod +</div>
<div>“\niPad? ” + Apple.iPad</div>
<div>);</div>
<div>也可以使用类似的PHP代码在服务器端检测，具体方法可以查看<a href="http://www.sitepoint.com/blogs/2010/04/20/identify-apple-iphone-ipod-ipad-visitors/" target="_blank">How  to Identify an Apple iPhone, iPod or iPad Visitor to Your Website</a>。</div>
</div>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/09/27/5418/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/09/27/5418/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/09/27/5418/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/09/27/5418/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/09/27/5418/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/09/27/5418/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>利用PHP为大图片生成缩略图代码实现</title>
		<link>http://www.iwanna.cn/archives/2010/09/12/5237/</link>
		<comments>http://www.iwanna.cn/archives/2010/09/12/5237/#comments</comments>
		<pubDate>Sun, 12 Sep 2010 14:52:08 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=5237</guid>
		<description><![CDATA[&#60;?php /** * 生成缩略图 * * @param string $imagePath 图片路径 * @param string $thumb 生成缩略图名称 * @param integer $width 生成缩略图最大宽度 * @param integer $height 生成缩略图最大高度 * * @author Silver * @link http://www.zdyi.com */ function resizeImage($imagePath, $thumb, $width = 200, $height = 200) { list($imageWidth, $imageHeight) = getimagesize($imagePath); $imagePath = imagecreatefromjpeg($imagePath); if ($width &#38;&#38; ($imageWidth &#60; [...]]]></description>
			<content:encoded><![CDATA[<p><code id="code0">&lt;?<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag" title="标签 PHP 下的日志">php</a><br />
/**<br />
* 生成缩略图<br />
*<br />
* @param string $imagePath 图片路径<br />
* @param string $thumb 生成缩略图名称<br />
* @param integer $width 生成缩略图最大宽度<br />
* @param integer $height 生成缩略图最大高度<br />
*<br />
* @author Silver<br />
* @link http://www.zdyi.com<br />
*/<br />
function resizeImage($imagePath, $thumb, $width = 200, $height = 200)<br />
{<br />
list($imageWidth, $imageHeight) = getimagesize($imagePath);<br />
$imagePath = imagecreatefromjpeg($imagePath);<br />
if ($width &amp;&amp; ($imageWidth &lt; $imageHeight))<br />
{<br />
$width = ($height / $imageHeight) * $imageWidth;<br />
}<br />
else<br />
{<br />
$height = ($width / $imageWidth) * $imageHeight;<br />
}<br />
$image = imagecreatetruecolor($width, $height);<br />
imagecopyresampled($image, $imagePath, 0, 0, 0, 0, $width, $height,  $imageWidth, $imageHeight);<br />
imagepng($image, $thumb);<br />
imagedestroy($image);<br />
}<br />
resizeImage('test.jpg', 'test_thumb.jpg');<br />
?&gt;</code></p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/09/12/5237/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/09/12/5237/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/09/12/5237/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/09/12/5237/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/09/12/5237/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/09/12/5237/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决IE6不支持max-height的bug</title>
		<link>http://www.iwanna.cn/archives/2010/09/12/5232/</link>
		<comments>http://www.iwanna.cn/archives/2010/09/12/5232/#comments</comments>
		<pubDate>Sun, 12 Sep 2010 14:46:22 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[JQuery]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=5232</guid>
		<description><![CDATA[罪恶的IE6不支持max-height属性，不过我们可以通过jQuery来解决IE6不支持max- height，jQuery的代码如下： $(".entry").each(function(){ if($(this)[0].scrollHeight&#38;gt;500) $(this).css({"height":"500px"}); }); 原理: 在IE6中可以通过设定height来达到max-height的 效果. 循环所有要加max-height属性的DOM元素,判断他的scrollHeight大于你要设置的最大高度 如果超过了就通过设置height为最大高度，我这里使用的是[0]，获取的是的DOM对象，而不是jQuery对象，详细说明见：《jQuery选择器使用详解》 上面的代码还没有加入IE6的判断,完整代码如下: if($.browser.msie&#38;amp;&#38;amp;($.browser.version === "6.0")){ $(".entry").each(function(){ if($(this)[0].scrollHeight&#38;gt;500) $(this).css({"height":"500px","overflow":"hidden"}); });} 当然你也可以通过css表达式来实现IE6支持max-height属性 .entry{ //我烧验证woshao_985140e4b71711df9e5e000c295b2b8d height: expression( this.scrollHeight &#38;gt; 500 ? "500px" : "auto" ); /* sets max-height for IE */ } © 我想网 Akon 所有 , 2010. &#124; 永久链接 &#124; 没有评论 &#124; 提交到 Google Reader 鲜果 抓虾 [...]]]></description>
			<content:encoded><![CDATA[<p>罪恶的IE6不支持<strong>max-height</strong>属性，不过我们可以通过jQuery来解决IE6不支持max- height，<strong><a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag" title="标签 JQuery 下的日志">jQuery</a></strong>的代码如下：</p>
<pre>$(".entry").each(function(){
    if($(this)[0].scrollHeight&amp;gt;500)
     $(this).<a href="http://www.iwanna.cn/tags/css/" class="st_tag internal_tag" rel="tag" title="标签 CSS 下的日志">css</a>({"height":"500px"});
});</pre>
<p><strong>原理</strong>: 在IE6中可以通过设定height来达到<strong>max-height</strong>的 效果. 循环所有要加max-height属性的DOM元素,判断他的scrollHeight大于你要设置的最大高度  如果超过了就通过设置height为最大高度，我这里使用的是[0]，获取的是的DOM对象，而不是jQuery对象，详细说明见：《jQuery选择器使用详解》<br />
<span id="more-5232"></span><br />
上面的代码还没有加入IE6的判断,完整代码如下:</p>
<pre>if($.<a href="http://www.iwanna.cn/tags/browser/" class="st_tag internal_tag" rel="tag" title="标签 Browser 下的日志">browser</a>.msie&amp;amp;&amp;amp;($.<a href="http://www.iwanna.cn/tags/browser/" class="st_tag internal_tag" rel="tag" title="标签 Browser 下的日志">browser</a>.version === "6.0")){
$(".entry").each(function(){
if($(this)[0].scrollHeight&amp;gt;500)
$(this).css({"height":"500px","overflow":"hidden"});
});}</pre>
<p>当然你也可以通过<strong>css表达式</strong>来实现<strong><a href="http://www.iwanna.cn/tags/ie6/" class="st_tag internal_tag" rel="tag" title="标签 IE6 下的日志">IE6</a></strong>支持max-height属性</p>
<div>
<div>
<pre>.entry{
//我烧验证woshao_985140e4b71711df9e5e000c295b2b8d
height: expression( this.scrollHeight &amp;gt; 500 ? "500px" : "auto" ); /* sets max-height for IE */
}</pre>
</div>
</div>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/09/12/5232/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/09/12/5232/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/09/12/5232/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/09/12/5232/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/09/12/5232/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/09/12/5232/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用PHP把excel(xls)文件导入mysql数据库</title>
		<link>http://www.iwanna.cn/archives/2010/09/12/5230/</link>
		<comments>http://www.iwanna.cn/archives/2010/09/12/5230/#comments</comments>
		<pubDate>Sun, 12 Sep 2010 14:43:49 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=5230</guid>
		<description><![CDATA[昨晚一个客户联系我做网站，提出的要求是需要把客户提供的excel文件里面的数据导入到mysql数据库，最常用的方法就是先把xls文件导出为csv格式的文件，然后在解析csv格式的文件 导入到mysql数据库。方法比较冗余，而且分好几步进行，很不方便，断桥残雪今天介绍一种方法是直接跳过csv的 中间环节，直接把excel文件导入mysql数据库。 首先我们需要下载PHP-ExcelReader这是一个开源的项目，主要是来解析excel的文件，下载地 址：http://sourceforge.net/projects/phpexcelreader， 下载之后解压，主要用到excel文件夹里面的两个文件reader.php和oleread.php（这个文件默认的是oleread.inc，不清楚 为啥，一堆e文，没看，直接改名即可）。 在reader.php文件中找到以下类似代码（第一行既是），改成正确的oleread.php路径即可：require_once 'oleread.php'; 然后新建一个php文件引入reader.php，代码如下： &#60;?php require_once 'Excel/reader.php'; $data = new Spreadsheet_Excel_Reader(); $data-&#62;setOutputEncoding('gbk');//此处设置编码，一般都是gbk模式 $data-&#62;read('Book1.xls');//文件路径 error_reporting(E_ALL ^ E_NOTICE); //这里我就只循环输出excel文件的内容了，要入库，只要把输出的地方，写一段mysql语句即可~ for ($i = 1; $i &#60;= $data-&#62;sheets[0]['numRows']; $i++) { for ($j = 1; $j &#60;= $data-&#62;sheets[0]['numCols']; $j++) { echo "\"".$data-&#62;sheets[0]['cells'][$i][$j]."\","; } echo "\n"; } ?&#62; 注意：请不要使用PHP-ExcelReader压缩包里面的xls进行测试，断桥残雪发现，那个文件既是使用excel也打不开，所以是错误的。 断桥残雪使用上面的方法解析了一个1.4M的数据，都显示正常，所以大家可以放心使用 © 我想网 Akon 所有 , [...]]]></description>
			<content:encoded><![CDATA[<p>昨晚一个客户联系我做网站，提出的要求是需要把客户提供的<strong>excel文件</strong>里面的数据导入到mysql数据库，最常用的方法就是先把<strong>xls</strong>文件导出为csv格式的文件，然后在解析csv格式的文件 导入到<strong>mysql数据库</strong>。方法比较冗余，而且分好几步进行，很不方便，断桥残雪今天介绍一种方法是直接跳过<strong>csv</strong>的 中间环节，直接把excel文件导入mysql数据库。</p>
<p>首先我们需要下载<strong><a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag" title="标签 PHP 下的日志">PHP</a>-ExcelReader</strong>这是一个开源的项目，主要是来解析excel的文件，下载地 址：<a href="http://sourceforge.net/projects/phpexcelreader" target="_blank">http://sourceforge.net/projects/phpexcelreader</a>， 下载之后解压，主要用到excel文件夹里面的两个文件reader.php和oleread.php（这个文件默认的是oleread.inc，不清楚 为啥，一堆e文，没看，直接改名即可）。</p>
<p>在reader.php文件中找到以下类似代码（第一行既是），改成正确的oleread.php路径即可：<code>require_once  'oleread.php';</code><br />
<span id="more-5230"></span><br />
然后新建一个php文件引入reader.php，代码如下：</p>
<div>
<div>
<pre>&lt;?php
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data-&gt;setOutputEncoding('gbk');//此处设置编码，一般都是gbk模式

$data-&gt;read('Book1.xls');//文件路径

error_reporting(E_ALL ^ E_NOTICE);
//这里我就只循环输出excel文件的内容了，要入库，只要把输出的地方，写一段mysql语句即可~
for ($i = 1; $i &lt;= $data-&gt;sheets[0]['numRows']; $i++) {
	for ($j = 1; $j &lt;= $data-&gt;sheets[0]['numCols']; $j++) {
		echo "\"".$data-&gt;sheets[0]['cells'][$i][$j]."\",";
	}
	echo "\n";
}
?&gt;</pre>
</div>
</div>
<p>注意：请不要使用PHP-ExcelReader压缩包里面的xls进行测试，断桥残雪发现，那个文件既是使用<strong>excel</strong>也打不开，所以是错误的。</p>
<p>断桥残雪使用上面的方法解析了一个1.4M的数据，都显示正常，所以大家可以放心使用</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/09/12/5230/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/09/12/5230/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/09/12/5230/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/09/12/5230/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/09/12/5230/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/09/12/5230/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>提高Firefox的innerHTML()的性能</title>
		<link>http://www.iwanna.cn/archives/2010/09/12/5222/</link>
		<comments>http://www.iwanna.cn/archives/2010/09/12/5222/#comments</comments>
		<pubDate>Sun, 12 Sep 2010 14:36:42 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Browser]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=5222</guid>
		<description><![CDATA[function replaceHtml(el, html) { var oldEl = typeof el === "string" ? document.getElementById(el) : el; /*@cc_on // 原始的 innerHTML 在 IE 中的性能好一点 oldEl.innerHTML = html; return oldEl; @*/ var newEl = oldEl.cloneNode(false); newEl.innerHTML = html; oldEl.parentNode.replaceChild(newEl, oldEl); /* 一旦我们从 DOM 上移除老的元素，则返回新的元素引用。*/ return newEl; }; 可以直接用el=replaceHtml(el, newHtml)代替el.innerHTML=newHtml。 速度到底有多大提升，还得测试说话。作者提供了一个测试页面：http://stevenlevithan.com/demo /replaceHtml.html 此方法大大提高了 innerHTML 在 Firefox 和 Safari 上的性能。replaceHtml() [...]]]></description>
			<content:encoded><![CDATA[<pre>function replaceHtml(el, <a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag" title="标签 HTML 下的日志">html</a>) {
var oldEl = typeof el === "string" ? document.getElementById(el) : el;
/*@cc_on // 原始的 innerHTML 在 IE 中的性能好一点
oldEl.innerHTML = <a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag" title="标签 HTML 下的日志">html</a>;
return oldEl;
@*/
var newEl = oldEl.cloneNode(false);
newEl.innerHTML = <a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag" title="标签 HTML 下的日志">html</a>;
oldEl.parentNode.replaceChild(newEl, oldEl);
/* 一旦我们从 DOM 上移除老的元素，则返回新的元素引用。*/
return newEl;
};</pre>
<p>可以直接用<code>el=replaceHtml(el, newHtml)</code>代替<code>el.innerHTML=newHtml</code>。<br />
<span id="more-5222"></span><br />
速度到底有多大提升，还得测试说话。作者提供了一个测试页面：http://stevenlevithan.com/demo /replaceHtml.html</p>
<p>此方法大大提高了 innerHTML 在 <a href="http://www.iwanna.cn/tags/firefox/" class="st_tag internal_tag" rel="tag" title="标签 Firefox 下的日志">Firefox</a> 和 Safari 上的性能。replaceHtml() 在 <a href="http://www.iwanna.cn/tags/firefox/" class="st_tag internal_tag" rel="tag" title="标签 Firefox 下的日志">Firefox</a>  2.0.0.6 里 destroy 与 replace 的速度各快了 473 倍以及 50 倍。而在 Safari 3.0.3 <a title="beta" href="http://www.js8.in/tag/beta">beta</a> 上则是 create 100  倍，replace 50 倍。</p>
<p>对于 Opera 也依然有性能提高，只是提高幅度没有上面两种浏览器惊人而已，</p>
<p>唯在 IE 中，则原始的 <strong>innerHTML </strong>的方法更效率点。</p>
<p>扩展阅读：</p>
<p>《<a href="http://blog.stevenlevithan.com/archives/faster-than-innerhtml" target="_blank">When  innerHTML isn’t Fast Enoug</a>h》| 《<a href="http://www.dustindiaz.com/innerhtml-vs-dom-methods/" target="_blank">innerHTML and  DOM Methods</a>》| <a href="http://www.planabc.net/2008/03/04/innerhtml_and_dom_methods/" target="_blank">原文链接</a></p>
<p>﻿</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/09/12/5222/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/09/12/5222/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/09/12/5222/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/09/12/5222/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/09/12/5222/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/09/12/5222/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS实现图片按固定大小等比例缩放</title>
		<link>http://www.iwanna.cn/archives/2010/09/12/5206/</link>
		<comments>http://www.iwanna.cn/archives/2010/09/12/5206/#comments</comments>
		<pubDate>Sun, 12 Sep 2010 13:58:41 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=5206</guid>
		<description><![CDATA[例如：设置图片最大高度和宽度分别为120px，75px，即当图片宽大于120或者高大于75时则等比例缩放。 .imglist_3 img{margin-right:10px;max-width:120px;max-height:75px;font:bold 12px/28px normal;} * html .imglist_3 img{width: expression(this.width &#62; 120 &#38;&#38; this.width &#62; this.height ? &#8220;120px&#8221; :auto); height:expression(this.height &#62;75 ? &#8220;75px&#8221;:auto);}/* for IE6 */ © 我想网 Akon 所有 , 2010. &#124; 永久链接 &#124; 没有评论 &#124; 提交到 Google Reader 鲜果 抓虾 Feed enhanced by Better Feed from Ozh]]></description>
			<content:encoded><![CDATA[<p>例如：设置图片最大高度和宽度分别为120px，75px，即当图片宽大于120或者高大于75时则等比例缩放。</p>
<div id="postContent">
<div>
.imglist_3  img{margin-right:10px;max-width:120px;max-height:75px;font:bold  12px/28px normal;}<br />
* <a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag" title="标签 HTML 下的日志">html</a> .imglist_3 img{width: expression(this.width  &gt; 120 &amp;&amp; this.width &gt; this.height ? &#8220;120px&#8221; :auto);  height:expression(this.height &gt;75 ? &#8220;75px&#8221;:auto);}/* for <a href="http://www.iwanna.cn/tags/ie6/" class="st_tag internal_tag" rel="tag" title="标签 IE6 下的日志">IE6</a> */</div>
</div>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/09/12/5206/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/09/12/5206/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/09/12/5206/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/09/12/5206/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/09/12/5206/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/09/12/5206/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>几大大型站点提供的IP地址API调用及腾讯API的使用介绍</title>
		<link>http://www.iwanna.cn/archives/2010/09/07/5176/</link>
		<comments>http://www.iwanna.cn/archives/2010/09/07/5176/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 04:46:23 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[站长工具]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=5176</guid>
		<description><![CDATA[腾讯的IP地址API接口地址：http://fw.qq.com/ipaddress 返回的是数据格式为：var IPData = new Array(“114.218.183.139″,”&#8221;,”江苏省”,”苏州市”); 使用JS代码进行调取： &#60;script language="javascript" type="text/javascript" src="http://fw.qq.com/ipaddress"&#62;&#60;/script&#62;   &#60;script&#62;document.write("你的IP是："+IPData[0]+"，来自："+IPData[2]);&#60;/script&#62; 使用PHP解析的方法： &#60;?php function getIpPlace(){  $ip=file_get_contents("http://fw.qq.com/ipaddress");  $ip=str_replace('"',' ',$ip);  $ip2=explode("(",$ip);  $a=substr($ip2[1],0,-2);  $b=explode(",",$a);  return $b; } $ip=getIpPlace(); print_r($ip); ?&#62; 处理后输出的是一个数组。 另： 新浪的IP地址查询接口：http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js 新浪多地域测试方法：http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&#38;ip=218.192.3.42 搜狐IP地址查询接口（默认GBK）：http://pv.sohu.com/cityjson 搜狐IP地址查询接口（可设置编码）：http://pv.sohu.com/cityjson?ie=utf-8 搜狐另外的IP地址查询接口：http://txt.go.sohu.com/ip/soip © 我想网 Akon 所有 , 2010. &#124; 永久链接 &#124; 2 条评论 &#124; 提交到 Google Reader 鲜果 抓虾 Feed enhanced [...]]]></description>
			<content:encoded><![CDATA[<p>腾讯的IP地址API接口地址：<a href="http://fw.qq.com/ipaddress" target="_blank">http://fw.qq.com/ipaddress</a></p>
<p>返回的是数据格式为：var IPData = new Array(“114.218.183.139″,”&#8221;,”江苏省”,”苏州市”);</p>
<p>使用JS代码进行调取：</p>
<pre>&lt;script language="<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag" title="标签 JavaScript 下的日志">javascript</a>" type="text/<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag" title="标签 JavaScript 下的日志">javascript</a>" src="http://fw.qq.com/ipaddress"&gt;&lt;/script&gt;
 
&lt;script&gt;document.write("你的IP是："+IPData[0]+"，来自："+IPData[2]);&lt;/script&gt;</pre>
<p><span id="more-5176"></span><br />
使用PHP解析的方法：</p>
<pre>&lt;?<a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag" title="标签 PHP 下的日志">php</a>
function getIpPlace(){
 $ip=file_get_contents("http://fw.qq.com/ipaddress");
 $ip=str_replace('"',' ',$ip);
 $ip2=explode("(",$ip);
 $a=substr($ip2[1],0,-2);
 $b=explode(",",$a);
 return $b;
}
$ip=getIpPlace();
print_r($ip);
?&gt;</pre>
<p>处理后输出的是一个数组。</p>
<p>另：</p>
<p>新浪的IP地址查询接口：<a href="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js" target="_blank">http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js</a></p>
<p>新浪多地域测试方法：<a href="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&amp;ip=218.192.3.42" target="_blank">http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&amp;ip=218.192.3.42</a></p>
<p>搜狐IP地址查询接口（默认GBK）：<a href="http://pv.sohu.com/cityjson" target="_blank">http://pv.sohu.com/cityjson</a></p>
<p>搜狐IP地址查询接口（可设置编码）：<a href="http://pv.sohu.com/cityjson?ie=utf-8" target="_blank">http://pv.sohu.com/cityjson?ie=utf-8</a></p>
<p>搜狐另外的IP地址查询接口：<a href="http://txt.go.sohu.com/ip/soip" target="_blank">http://txt.go.sohu.com/ip/soip</a></p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/09/07/5176/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/09/07/5176/#comments">2 条评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/09/07/5176/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/09/07/5176/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/09/07/5176/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/09/07/5176/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>关于jQuery ready()方法一些用法解释</title>
		<link>http://www.iwanna.cn/archives/2010/08/31/5151/</link>
		<comments>http://www.iwanna.cn/archives/2010/08/31/5151/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 14:37:47 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[JQuery]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=5151</guid>
		<description><![CDATA[jQuery的ready方 法的是开发中经常用到的，作用相当于我们的body onload，是当页面DOM准备就绪的时候才运行的代码，最常用的就是在DOM渲染加载之前，先给document绑定ready事件，然后当页面 DOM都准备好之后才运行这个事件。 关于jQuery的ready有以下几种用法 最常用也是最标准的ready方法 $(document).ready(){ }); 简写的jQuery ready() $(function(){ }); 这是因为jQuery的选择器第一个参数假如为空，那么默认的是document 不建议使用的ready()方法 $().ready(handler); 在jQuery1.4 发布公告中提到了：在jQuery1.4中仍然保留这种方法，但是不推荐使用，并且 jQuery1.3的ready会返回一个jQuery的对象，而1.4中则不会又返回 解决jQuery（$）库冲突的ready方法 这一种方式一般用在处理jQuery的$和别的库冲突的时候用的,可以通过jQuery.noConflict()这 个方法,我们就可以直接在代码中通过jQuery来代替$来使用,但又习惯了使用$怎么办?看下面的代码: jQuery.noConflict(); jQuery(function($){ alert($("#ready1").html()); //这样我们就可以使用$了 }); 后记 一般在开发中断桥残雪是不会推荐使用jQuery的ready方法的，因为绑定 ready事件之后，jQuery需要添加DOMContentLoaded监听事件，对于页面加载渲染是有一定影响 的，所以建议我们在逼不得已的情况下才使用jQuery的ready。 在实际开发中我推荐把ready中要执行的函数放在DOM的HTML代码之后，也就是当DOM渲染过去之后再执行handler，或者把代码直接放 在页面的末尾 © 我想网 Akon 所有 , 2010. &#124; 永久链接 &#124; 没有评论 &#124; 提交到 Google Reader 鲜果 抓虾 Feed enhanced by Better Feed from Ozh]]></description>
			<content:encoded><![CDATA[<p>jQuery的<strong>ready</strong>方 法的是开发中经常用到的，作用相当于我们的body onload，是当页面DOM准备就绪的时候才运行的代码，最常用的就是在DOM渲染加载之前，先给document绑定ready事件，然后当页面 DOM都准备好之后才运行这个事件。<br />
关于<strong><a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag" title="标签 JQuery 下的日志">jQuery</a></strong>的ready有以下几种用法</p>
<h3>最常用也是最标准的ready方法</h3>
<blockquote><p><code><br />
$(document).ready(){<br />
});<br />
</code></p></blockquote>
<p><span id="more-5151"></span></p>
<h3>简写的jQuery ready()</h3>
<blockquote><p><code><br />
$(function(){<br />
});<br />
</code></p></blockquote>
<p>这是因为<strong>jQuery</strong>的选择器第一个参数假如为空，那么默认的是<strong>document</strong></p>
<h3>不建议使用的ready()方法</h3>
<blockquote><p><code><br />
$().ready(handler);<br />
</code></p></blockquote>
<p>在<a href="http://jquery14.com/day-01/jquery-14" target="_blank">jQuery1.4 发布公告</a>中提到了：在jQuery1.4中仍然保留这种方法，但是不推荐使用，并且 jQuery1.3的ready会返回一个jQuery的对象，而1.4中则不会又返回</p>
<h3>解决jQuery（$）库冲突的ready方法</h3>
<p>这一种方式一般用在处理jQuery的$和别的<strong>库冲突</strong>的时候用的,可以通过<strong><code>jQuery.noConflict()</code></strong>这 个方法,我们就可以直接在代码中通过jQuery来代替$来使用,但又习惯了使用$怎么办?看下面的代码:</p>
<blockquote><p><code><br />
jQuery.noConflict();<br />
jQuery(function($){<br />
    alert($("#ready1").<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag" title="标签 HTML 下的日志">html</a>());   //这样我们就可以使用$了<br />
});<br />
</code></p></blockquote>
<h3>后记</h3>
<p>一般在开发中断桥残雪是不会推荐使用jQuery的ready方法的，因为绑定 ready事件之后，jQuery需要添加<strong>DOMContentLoaded</strong>监听事件，对于页面加载渲染是有一定影响 的，所以建议我们在逼不得已的情况下才使用jQuery的ready。</p>
<p>在实际开发中我推荐把ready中要执行的函数放在DOM的HTML代码之后，也就是当DOM渲染过去之后再执行handler，或者把代码直接放 在页面的末尾</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/08/31/5151/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/08/31/5151/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/08/31/5151/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/08/31/5151/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/08/31/5151/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/08/31/5151/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>通过PHP批量下载图片文件</title>
		<link>http://www.iwanna.cn/archives/2010/08/22/5047/</link>
		<comments>http://www.iwanna.cn/archives/2010/08/22/5047/#comments</comments>
		<pubDate>Sun, 22 Aug 2010 14:06:36 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=5047</guid>
		<description><![CDATA[最近一直很忙，遇到一个手工活，需要下载一些远程的图片，一共一百多张，如果通过手工一张一张的保存，也太耗费时间了，于是上网google了 一把，找到PHP批量下载图片文件的方法，原文是出自平凡世界博客的一片关于如何使用PHP批量下载CSS文件中的图片的文章。经过研究改写了一下就可以使用了，方便快捷多了。 PHP批量下载图片文件代码： set_time_limit(0);//设置PHP超时时间 $imagesURLArray = array_unique($imagesURLArray ); foreach($imagesURLArray as $imagesURL) { echo $imagesURL; echo "&#60;br/&#62;"; file_put_contents(basename($imagesURL), file_get_contents($imagesURL)); } 原理很简单，通过一个含有图片地址的数组循环，然后使用PHP的file_get_contents函数取得图片，在使用file_put_contents函数把图片保存下来。 P.S：一定要加上设置PHP超时时间哦~！ 附上原文中通过php下载css中图片的代码： &#60; ?php /* More &#38; Original PHP Framwork Copyright (c) 2007 - 2008 IsMole Inc. Author: kimi Documentation: 下载样式文件中的图片，水水专用扒皮工具 */ //note 设置PHP超时时间 set_time_limit(0); //note 取得样式文件内容 $styleFileContent = file_get_contents('images/style.css'); //note 匹配出需要下载的URL地址 preg_match_all("/url\((.*)\)/", $styleFileContent, $imagesURLArray); [...]]]></description>
			<content:encoded><![CDATA[<p>最近一直很忙，遇到一个手工活，需要下载一些远程的图片，一共一百多张，如果通过手工一张一张的保存，也太耗费时间了，于是上网google了 一把，找到<strong>PHP批量下载图片</strong>文件的方法，原文是出自平凡世界博客的一片关于如何使用<strong><a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag" title="标签 PHP 下的日志">PHP</a></strong><a rel="nofollow" href="http://www.ccvita.com/375.html" target="_blank">批量下载CSS文件中的图片的文章</a>。经过研究改写了一下就可以使用了，方便快捷多了。</p>
<p>PHP批量下载图片文件代码：</p>
<pre>set_time_limit(0);//设置PHP超时时间
$imagesURLArray = array_unique($imagesURLArray );

foreach($imagesURLArray as $imagesURL) {
    echo $imagesURL;
    echo "&lt;br/&gt;";
    file_put_contents(basename($imagesURL), file_get_contents($imagesURL));
}</pre>
<p><span id="more-5047"></span><br />
原理很简单，通过一个含有图片地址的数组循环，然后使用PHP的<strong>file_get_contents</strong>函数取得图片，在使用<strong>file_put_contents</strong>函数把图片保存下来。<br />
P.S：一定要加上<strong>设置PHP超时时间</strong>哦~！</p>
<p>附上原文中通过php下载css中图片的代码：</p>
<pre>&lt; ?php
/*
More &amp; Original PHP Framwork
Copyright (c) 2007 - 2008 IsMole Inc.
Author: kimi
Documentation: 下载样式文件中的图片，水水专用扒皮工具
*/

//note 设置PHP超时时间
set_time_limit(0);

//note 取得样式文件内容
$styleFileContent = file_get_contents('images/style.<a href="http://www.iwanna.cn/tags/css/" class="st_tag internal_tag" rel="tag" title="标签 CSS 下的日志">css</a>');

//note 匹配出需要下载的URL地址
preg_match_all("/url\((.*)\)/", $styleFileContent, $imagesURLArray);

//note 循环需要下载的地址，逐个下载
$imagesURLArray = array_unique($imagesURLArray[1]);
    foreach($imagesURLArray as $imagesURL) {
    file_put_contents(basename($imagesURL), file_get_contents($imagesURL));
}</pre>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/08/22/5047/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/08/22/5047/#comments">1条评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/08/22/5047/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/08/22/5047/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/08/22/5047/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/08/22/5047/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>实用的css代码片段集合</title>
		<link>http://www.iwanna.cn/archives/2010/08/09/4881/</link>
		<comments>http://www.iwanna.cn/archives/2010/08/09/4881/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 15:37:50 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=4881</guid>
		<description><![CDATA[以下css代码片段都非常实用，是不可多得的css技巧。 利用text-indent隐藏文本 text-indent的主要作用在于文本缩进，但text-indent还有个妙用，先看代码： h1&#38;nbsp;{ text-indent:-9999px; margin:0&#38;nbsp;auto; width:400px; height:100px; background:transparent&#38;nbsp;url(&#8220;images/logo.jpg&#8221;)&#38;nbsp;no-repeat&#38;nbsp;scroll; } text-indent:-9999px;即文本负缩进-9999像素（溢出容器），那么你在屏幕上就无法看到文本了，达到隐藏文本的作用。 那么其意义在哪呢？ 主要是考虑SEO。举个典型例子，你的站点的logo部分是个图片，为了SEO，一般加title属性，但效果显然没有直接加文本来的好，而利用 text-indent，你既加上了文本，同时不影响logo效果。 删除IE下文本域的滚动条 textarea{ overflow:auto; } 全兼容浏览器的透明度设置 .transparent{ filter:alpha(opacity=50); -moz-opacity:0.5; -khtml-opacity:0.5; opacity:0.5; } 非常实用，通用大部分浏览器。-moz-opacity的作用是为了支持一些老版本的Mozilla浏览器，-khtml-opacity的作用是 支持一些老版本的Safari浏览器。 Eric Meyer写的经典重置样式 html, body, div, span, applet, object, iframe,h1, h2, h3, h4, h5, h6, p, blockquote, pre,a, abbr, acronym,address, big, cite, code,del, dfn, em, font, img, ins, kbd, [...]]]></description>
			<content:encoded><![CDATA[<p>以下css代码片段都非常实用，是不可多得的css技巧。</p>
<h5>利用text-indent隐藏文本</h5>
<p>text-indent的主要作用在于文本缩进，但text-indent还有个妙用，先看代码：</p>
<ol title="Double click to hide line number.">
<li>h1&amp;nbsp;{</li>
<li> text-indent:-9999px;</li>
<li> margin:0&amp;nbsp;auto;</li>
<li> width:400px;</li>
<li> height:100px;</li>
<li> background:transparent&amp;nbsp;url(&#8220;images/logo.jpg&#8221;)&amp;nbsp;no-repeat&amp;nbsp;scroll;</li>
<li>}</li>
</ol>
<p><span id="more-4881"></span><br />
text-indent:-9999px;即文本负缩进-9999像素（溢出容器），那么你在屏幕上就无法看到文本了，达到隐藏文本的作用。<br />
<strong>那么其意义在哪呢？</strong><br />
主要是考虑SEO。举个典型例子，你的站点的logo部分是个图片，为了SEO，一般加title属性，但效果显然没有直接加文本来的好，而利用 text-indent，你既加上了文本，同时不影响logo效果。</p>
<h5>删除IE下文本域的滚动条</h5>
<ol title="Double click to hide line number.">
<li>textarea{</li>
<li> overflow:auto;</li>
<li>}</li>
</ol>
<h5>全兼容浏览器的透明度设置</h5>
<ol title="Double click to hide line number.">
<li>.transparent{</li>
<li> filter:alpha(opacity=50);</li>
<li> -moz-opacity:0.5;</li>
<li> -khtml-opacity:0.5;</li>
<li> opacity:0.5;</li>
<li>}</li>
</ol>
<p>非常实用，通用大部分浏览器。-moz-opacity的作用是为了支持一些老版本的Mozilla浏览器，-khtml-opacity的作用是 支持一些老版本的Safari浏览器。</p>
<h5>Eric Meyer写的经典重置样式</h5>
<ol title="Double click to hide line number.">
<li><a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag" title="标签 HTML 下的日志">html</a>, body, div, span, applet, object, iframe,h1, h2, h3, h4, h5, h6, p, blockquote, pre,a, abbr, acronym,address, big, cite, code,del, dfn, em, font, img, ins, kbd, q, s, samp,small, strike, strong, sub, sup, tt, var,b, u, i, center,dl, dt, dd, ol, ul, li,fieldset, form, label, legend,table, caption, tbody, tfoot, thead, tr, th, td {</li>
<li> margin: 0;</li>
<li> padding: 0;</li>
<li> border: 0;</li>
<li> outline: 0;</li>
<li> font-size: 100%;</li>
<li> vertical-align: baseline;</li>
<li> background: transparent;</li>
<li>}</li>
<li></li>
<li>body {</li>
<li> line-height: 1;</li>
<li>}</li>
<li></li>
<li>ol, ul {</li>
<li> list-style: none;</li>
<li>}</li>
<li></li>
<li>blockquote, q {</li>
<li> quotes: none;</li>
<li>}</li>
<li></li>
<li>blockquote:before, blockquote:after,</li>
<li>q:before, q:after {</li>
<li> content: &#8221;;</li>
<li> content: none;</li>
<li>}</li>
<li></li>
<li>/* remember to define focus styles! */</li>
<li>:focus {</li>
<li> outline: 0;</li>
<li>}</li>
<li></li>
<li>/* remember to highlight inserts somehow! */</li>
<li>ins {</li>
<li> text-decoration: none;</li>
<li>}</li>
<li></li>
<li>del {</li>
<li> text-decoration: line-through;</li>
<li>}</li>
<li></li>
<li>/* tables still need &#8216;cellspacing=&#8221;0&#8243;&#8216; in the markup */</li>
<li>table {</li>
<li> border-collapse: collapse;</li>
<li> border-spacing: 0;</li>
<li>}</li>
</ol>
<h5>基础的css使用图片的按钮样式</h5>
<ol title="Double click to hide line number.">
<li>a {</li>
<li>display: block;</li>
<li>background: url(sprite.png) no-repeat;</li>
<li>height: 30px;</li>
<li>width: 250px;</li>
<li>}</li>
<li></li>
<li>a:hover {</li>
<li> background-position: 0 -30px;</li>
<li>}</li>
</ol>
<h5>谷歌的字体服务API</h5>
<ol title="Double click to hide line number.">
<li>&lt;head&gt;</li>
<li> Inconsolata:italic|Droid+Sans&#8221;&gt;</li>
<li>&lt;/head&gt;</li>
</ol>
<ol title="Double click to hide line number.">
<li>body {</li>
<li> font-family: &#8216;Tangerine&#8217;, &#8216;Inconsolata&#8217;, &#8216;Droid Sans&#8217;, serif; font-size: 48px;</li>
<li>}</li>
</ol>
<p>目前好像还没有中文的字体。</p>
<h5>浏览器的特殊hacks</h5>
<ol title="Double click to hide line number.">
<li>/* IE 6 */</li>
<li>* html .yourclass { }</li>
<li></li>
<li>/* IE 7 */</li>
<li>*+html .yourclass{ }</li>
<li></li>
<li>/* IE 7 and modern browsers */</li>
<li>html&gt;body .yourclass { }</li>
<li></li>
<li>/* Modern browsers (not IE 7) */</li>
<li>html&gt;/**/body .yourclass { }</li>
<li></li>
<li>/* Opera 9.27 and below */</li>
<li>html:first-child .yourclass { }</li>
<li></li>
<li>/* Safari */</li>
<li>html[xmlns*=""] body:last-child .yourclass { }</li>
<li></li>
<li>/* Safari 3+, Chrome 1+, Opera 9+, Fx 3.5+ */</li>
<li>body:nth-of-type(1) .yourclass { }</li>
<li></li>
<li>/* Safari 3+, Chrome 1+, Opera 9+, Fx 3.5+ */</li>
<li>body:first-of-type .yourclass {  }</li>
<li></li>
<li>/* Safari 3+, Chrome 1+ */</li>
<li>@media screen and (-webkit-min-device-pixel-ratio:0) {</li>
<li> .yourclass  {  }</li>
<li>}</li>
</ol>
<p>非常经典，明河严重推荐收藏。</p>
<h5>固定定位，通用于IE6</h5>
<ol title="Double click to hide line number.">
<li>#footer {</li>
<li> position:fixed;</li>
<li> left:0px;</li>
<li> bottom:0px;</li>
<li> height:30px;</li>
<li> width:100%;</li>
<li> background:#999;</li>
<li>}</li>
<li></li>
<li>/* IE 6 */</li>
<li>* html #footer {</li>
<li> position:absolute;</li>
<li> top:expression((0-(footer.offsetHeight)+(document.documentElement.clientHeight  ? document.documentElement.clientHeight :  document.body.clientHeight)+(ignoreMe =  document.documentElement.scrollTop ? document.documentElement.scrollTop :  document.body.scrollTop))+&#8217;px&#8217;);</li>
<li>}</li>
</ol>
<p>IE 6是不支持position:fixed;的，这里使用绝对定位来模拟。代码中的expression是啥含义？<a href="http://www.52css.com/article.asp?id=230" target="_blank">请点此</a>。</p>
<h5>翻转图片</h5>
<ol title="Double click to hide line number.">
<li>img.flip {</li>
<li> -moz-transform: scaleX(-1);</li>
<li> -o-transform: scaleX(-1);</li>
<li> -webkit-transform: scaleX(-1);</li>
<li> transform: scaleX(-1);</li>
<li> filter: FlipH;</li>
<li> -ms-filter: &#8220;FlipH&#8221;;</li>
<li>}</li>
</ol>
<h5>清理浮动</h5>
<ol title="Double click to hide line number.">
<li>.clearfix:after {</li>
<li> visibility: hidden;</li>
<li> display: block;</li>
<li> font-size: 0;</li>
<li> content: &#8221; &#8220;;</li>
<li> clear: both;</li>
<li> height: 0;</li>
<li>}</li>
<li></li>
<li>.clearfix { display: inline-block; }</li>
<li></li>
<li>/* start commented backslash hack */</li>
<li>* html .clearfix { height: 1%; }</li>
<li>.clearfix { display: block; }</li>
<li>/* close commented backslash hack */</li>
</ol>
<p>极度经典，明河严重推荐收藏。</p>
<h5>圆角（不支持IE）</h5>
<ol title="Double click to hide line number.">
<li>.round{</li>
<li> -moz-border-radius: 10px;</li>
<li> -webkit-border-radius: 10px;</li>
<li> border-radius: 10px; /* future proofing */</li>
<li> -khtml-border-radius: 10px; /* for old Konqueror browsers */</li>
<li>}</li>
</ol>
<h5>@font-face字体设置</h5>
<ol title="Double click to hide line number.">
<li>@font-face {</li>
<li> font-family: &#8216;Graublau Web&#8217;;</li>
<li> src: url(&#8216;GraublauWeb.eot&#8217;);</li>
<li> src: local(&#8216;☺&#8217;),</li>
<li> url(&#8216;GraublauWeb.woff&#8217;)  format(&#8216;woff&#8217;), url(&#8216;GraublauWeb.ttf&#8217;) format(&#8216;truetype&#8217;);</li>
<li>}</li>
</ol>
<h5>居中页面</h5>
<ol title="Double click to hide line number.">
<li>.wrapper {</li>
<li> width:960px;</li>
<li> margin:0&amp;nbsp;auto;</li>
<li>}</li>
</ol>
<h5>IE中的最小高度</h5>
<ol title="Double click to hide line number.">
<li>.box {</li>
<li> min-height:500px;</li>
<li> height:auto !important;</li>
<li> height:500px;</li>
<li>}</li>
</ol>
<h5>正在读取图片的效果</h5>
<ol title="Double click to hide line number.">
<li>img {</li>
<li> background: url(loader.gif) no−repeat 50% 50%;</li>
<li>}</li>
</ol>
<h5>垂直居中</h5>
<ol title="Double click to hide line number.">
<li>.container {</li>
<li> min-height: 10em;</li>
<li> display: table-cell;</li>
<li> vertical-align: middle;</li>
<li>}</li>
</ol>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/08/09/4881/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/08/09/4881/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/08/09/4881/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/08/09/4881/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/08/09/4881/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/08/09/4881/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Border使用小分享</title>
		<link>http://www.iwanna.cn/archives/2010/08/06/4849/</link>
		<comments>http://www.iwanna.cn/archives/2010/08/06/4849/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 16:11:27 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=4849</guid>
		<description><![CDATA[之前在懒懒分会上分享的一 点关于border画小图的内容, 完整的ppt在这里. 原理 css盒模型 一个盒子包括: margin+border+padding+content – 上下左右边框交界处出呈现平滑的斜线. 利用这个特点, 通过设置不同的上下左右边框宽度或者颜色可以得到小三角, 小梯形等. – 调整宽度大小可以调节三角形形状. 示例1 一般情况下, 我们设置盒子的宽高度, 及上下左右边框, 会呈现如下图 #test1 { height:20px; width:20px; border-color:#FF9600 #3366ff #12ad2a #f0eb7a; border-style:solid; border-width:20px; } 示例2 在上面基础上, 我们把宽高度都设为0时, 会呈现上述的边界斜线. #test2 { height:0; width:0; overflow: hidden; /* 这里设置overflow, font-size, line-height */ font-size: 0; /*是因为, 虽然宽高度为0, 但在IE6下会具有默认的 */ line-height: 0; /* 字体大小和行高, [...]]]></description>
			<content:encoded><![CDATA[<p>之前在懒懒分会上分享的一 点关于border画小图的内容, 完整的ppt在<a href="http://images.uheed.com/iwanna/2010/08/05/css-border/my.html" target="_blank">这里</a>.</p>
<h3>原理</h3>
<h4>css盒模型</h4>
<p><img src="http://images.uheed.com/iwanna/2010/08/05/css-border/box-model.png" alt="box-model" height="300px" /></p>
<dl>
<dt>一个盒子包括: margin+border+padding+content</dt>
<dd> – 上下左右边框交界处出呈现平滑的斜线. 利用这个特点, 通过设置不同的上下左右边框宽度或者颜色可以得到小三角, 小梯形等.</dd>
<dd> – 调整宽度大小可以调节三角形形状.</dd>
<dd>
</dd>
</dl>
<p><span id="more-4849"></span></p>
<h4>示例1</h4>
<p>一般情况下, 我们设置盒子的宽高度, 及上下左右边框, 会呈现如下图</p>
<div><img src="http://images.uheed.com/iwanna/2010/08/05/css-border/Snap1.gif" alt="snap1" /></div>
<pre>#test1 {
    height:20px;
    width:20px;
    border-color:#FF9600 #3366ff #12ad2a #f0eb7a;
    border-style:solid;
    border-width:20px;
}</pre>
<h4>示例2</h4>
<p>在上面基础上, 我们把宽高度都设为0时, 会呈现上述的边界斜线.</p>
<div><img src="http://images.uheed.com/iwanna/2010/08/05/css-border/Snap2.gif" alt="snap1" /></div>
<pre>#test2 {
    height:0;
    width:0;
    overflow: hidden; /* 这里设置overflow, font-size, line-height */
    font-size: 0;     /*是因为, 虽然宽高度为0, 但在IE6下会具有默认的 */
    line-height: 0;  /* 字体大小和行高, 导致盒子呈现被撑开的长矩形 */
    border-color:#FF9600 #3366ff #12ad2a #f0eb7a;
    border-style:solid;
    border-width:20px;
}</pre>
<p>这时, 其实我们已经看到有上下左右四个三角形了..如果, 我们把4种颜色, 只保留一种颜色,  余下3种颜色设置为透明(或者设置为和背景色相同的颜色), 那不就出现一个小三角了么</p>
<h4>示例3</h4>
<p>只保留上面的红色, 看看</p>
<div><img src="http://images.uheed.com/iwanna/2010/08/05/css-border/Snap3.gif" alt="snap1" /></div>
<pre>#test3 {
    height:0;
    width:0;
    overflow: hidden;
    font-size: 0;
    line-height: 0;
    border-color:#FF9600 transparent transparent transparent;
    border-style:solid;
    border-width:20px;
}</pre>
<p>可是, IE6下不支持透明啊~~~, 会出现下图的样子</p>
<p><img src="http://images.uheed.com/iwanna/2010/08/05/css-border/Snap3ie6.gif" alt="snap1" /></p>
<p>找到一个在IE6下边框透明的文章中找到解决办法, 如下例</p>
<h4>示例4</h4>
<p>IE6下, 设置余下三条边的border-style为dashed,,,即可达到透明的效果~ 具体原因可以见参考资料3</p>
<div><img src="http://images.uheed.com/iwanna/2010/08/05/css-border/Snap5.gif" alt="snap1" /></div>
<pre>#test4 {
    height:0;
    width:0;
    overflow: hidden;
    font-size: 0;
    line-height: 0;
    border-color:#FF9600 transparent transparent transparent;
    border-style:solid dashed dashed dashed;
    border-width:20px;
}</pre>
<p>当然, 在IE6下, 不设置透明, 将其颜色设置为背景色, 使其看不出来也是可以的.</p>
<h4>示例5</h4>
<p>上面我们画的小三角的斜边都是依靠原来盒子的边, 还有另外一种形式的小三角, 就是斜边在盒子的对角线上</p>
<div><img src="http://images.uheed.com/iwanna/2010/08/05/css-border/Snap6.gif" alt="snap1" /></div>
<pre>#test5 {
    height:0;
    width:0;
    overflow: hidden;
    font-size: 0;
    line-height: 0;
    border-color:#FF9600 #3366ff transparent transparent;
    border-style:solid solid dashed dashed;
    border-width:40px 40px 0 0 ;
}</pre>
<p>保留其中一种颜色, 就可以得到斜边在对角线上的三角形了…多个这样的三角形, 通过设置边框大小, 颜色, 拼凑起来可以形成任意形状的三角形.</p>
<div><img src="http://images.uheed.com/iwanna/2010/08/05/css-border/Snap7.gif" alt="snap1" /></div>
<p>像这种不规则的三角形, 延伸一下, 放在气泡框上, 就可以省去拼背景图片的麻烦了.</p>
<div><img src="http://images.uheed.com/iwanna/2010/08/05/css-border/Snap8.gif" alt="snap1" /></div>
<p>另外, 关于气泡框, 可以使用棱形字符(◆)来实现, 设置其font-size, 颜色和背景色一致,  定位可以使用margin负值和absolute绝对定位来实现, 见<a href="http://images.uheed.com/iwanna/2010/08/05/css-border/my.html#slide6" target="_blank">示例</a>.</p>
<h3>应用之圆角生成</h3>
<dl>
<dt>应该说是近似圆角,,其实由一个高度非常小的梯形展示出来</dt>
<dd>- 上梯形(无上边框,下左右3px宽度, 左右颜色去掉)+矩形+下梯形</dd>
<dd>
<div>
<p><img src="http://images.uheed.com/iwanna/2010/08/05/css-border/Snap9.gif" alt="snap1" /></p>
</div>
</dd>
<dt>自适应圆角1: </dt>
<dd>- 整个rc设置为float: left 或 display: inline-block 分为top,bd,bottom,  top中又有两个层rc1和rc2, rc1只设置border-top, 高度为0, 并设置左右margin呈短小的一横线,  rc2只设置左右border并且左右margin小于rc1, height为1px, 中间bd设置左右border,不设置左右margin;</dd>
<dd>- 不过 IE 6&amp;7 出现 bug：rc在IE6中依然显示为dispaly:block,而IE7中top 和  bottom缩成一坨,不肯扩展开来,而在rc1/rc2/rc3 中插入文字xxx后只能扩展到文字宽度,不能与bd对齐.</dd>
<dd>- 见<a href="http://images.uheed.com/iwanna/2010/08/05/css-border/my.html#slide7" target="_blank">自适应圆角1</a></dd>
<dt>自适应圆角2</dt>
<dd>- 自 Google 系产品的 1px 圆角按钮,,,三层div, 最外层div1正常设置边框宽度1px, 呈现出上下边框线,  中间div2只设置左右边框, 且把左右margin设置成负值, 呈现出圆角处的4个圆点 内层div3同样只设置左右边框,  同时margin上下空出div2的高度, margin左右也设置与div2相同的负值.</dd>
<dd>- 见<a href="http://images.uheed.com/iwanna/2010/08/05/css-border/my.html#slide7" target="_blank">自适应圆角2</a></dd>
</dl>
<h3>其他小问题</h3>
<dl>
<dt>- 透明:</dt>
<dd>IE6浏览器不支持transparent透明属性,就border生成三角技术而言,直接设置对应的透明边框的border-style属性为 dotted或是dashed即可解决这一问题,原因是在IE6下,  点线与虚线均以边框宽度为基准,点线长度必须是其宽度的3倍以上（height&gt;=border-width*3）,虚线宽长度必须是其宽度的5倍 以上（height&gt;=border-width*5）,否则点线和虚线都不会出现.</dd>
<dd>
</dd>
<dt>- IE6的奇偶bug:</dt>
<dd>如果定位外框高度或是宽度为奇数,则IE6下,绝对定位元素的低定位和右定位会有1像素的误差.所以,尽量保证外框的高度或宽度为偶数值.</dd>
<dd>
</dd>
<dt>- IE6的空div高度bug: </dt>
<dd>IE6下,空div会有莫名的高度,也就是说height:0;不顶用,此时形成的尖角的实际占高于其他浏览器是有差异的.可使用font- size:0; + overflow:hidden;修复此问题.</dd>
<dd>
</dd>
<dt>- filter: chroma滤镜</dt>
<dd>该属性属性可以设置一个对象中指定的颜色为透明色, 如:</dd>
<dd>
<pre>border-color: pink;
filter: chroma(color=pink);</pre>
</dd>
<dt>
</dt>
</dl>
<h3>参考资料</h3>
<ol>
<li><a href="http://www.zhangxinxu.com/wordpress/?p=794" target="_blank">CSS 小三角原理</a></li>
<li><a href="http://www.zhangxinxu.com/wordpress/?p=651" target="_blank">CSS 气泡效果</a></li>
<li><a href="http://blog.silentash.com/2009/12/ie6-border-transparent/" target="_blank">IE6下边框透 明原理解析</a></li>
<li><a href="http://koyoz.com/blog/?action=show&amp;id=282" target="_blank">CSS3实现的机器猫图形</a></li>
</ol>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/08/06/4849/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/08/06/4849/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/08/06/4849/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/08/06/4849/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/08/06/4849/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/08/06/4849/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>实用jquery代码片段集合[下]</title>
		<link>http://www.iwanna.cn/archives/2010/07/29/4797/</link>
		<comments>http://www.iwanna.cn/archives/2010/07/29/4797/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 14:26:22 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[JQuery]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=4797</guid>
		<description><![CDATA[如何隐藏除了特定选择器下的全部对象 $(&#8216;#target div:not(#exclude)&#8217;).hide(); //或者 $(&#8216;#target&#8217;).children().filter(&#8216;:not(#exclude)&#8217;).hide(); filter()起到过滤的作用。 寻找带有指定字符串的元素 var foundin = $(&#8216;*:contains(&#8221; 明河&#8221;)&#8217;); 获取垂直滚动距离 alert($(document).scrollTop()); scrollTop()非常实用的一个方法。 向表格追加一行数据 $(&#8216;#myTable tr:last&#8217;).after(&#8216;&#60;tr&#62;&#8230;&#60;/tr&#62;&#8217;); 超过一个属性时的过滤 var elements = $(&#8216;#someid input[type=sometype][value=somevalue]&#8216;).get(); 让cookies在X分钟后过期 var date = new Date(); date.setTime(date.getTime() + (x * 60 * 1000)); $.cookie(&#8216;example&#8217;, &#8216;foo&#8217;, { expires: date }); 选择从第一个到第X个的元素 //从第一个到第10个 $(&#8216;a&#8217;).slice(0,10); //或者 $(&#8216;a:lt(10)&#8217;); 获取客户端的IP $.getJSON(&#8220;http://jsonip.appspot.com?callback=?&#8221;,function(data){ alert( &#8220;你的IP：&#8221; + data.ip); }); [...]]]></description>
			<content:encoded><![CDATA[<h5>如何隐藏除了特定选择器下的全部对象</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$(&#8216;#target div:not(#exclude)&#8217;).hide();</li>
<li> //或者</li>
<li> $(&#8216;#target&#8217;).children().filter(&#8216;:not(#exclude)&#8217;).hide();</li>
</ol>
<p>filter()起到过滤的作用。</p>
<h5>寻找带有指定字符串的元素</h5>
<p><span id="more-4797"></span></p>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>var foundin = $(&#8216;*:contains(&#8221; 明河&#8221;)&#8217;);</li>
</ol>
<h5>获取垂直滚动距离</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>alert($(document).scrollTop());</li>
</ol>
<p>scrollTop()非常实用的一个方法。</p>
<h5>向表格追加一行数据</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$(&#8216;#myTable tr:last&#8217;).after(&#8216;&lt;tr&gt;&#8230;&lt;/tr&gt;&#8217;);</li>
</ol>
<h5>超过一个属性时的过滤</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>var elements = $(&#8216;#someid  input[type=sometype][value=somevalue]&#8216;).get();</li>
</ol>
<h5>让cookies在X分钟后过期</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>var date = new Date();</li>
<li>date.setTime(date.getTime() + (x * 60 * 1000));</li>
<li>$.cookie(&#8216;example&#8217;, &#8216;foo&#8217;, { expires: date });</li>
</ol>
<h5>选择从第一个到第X个的元素</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>//从第一个到第10个</li>
<li>$(&#8216;a&#8217;).slice(0,10);</li>
<li>//或者</li>
<li>$(&#8216;a:lt(10)&#8217;);</li>
</ol>
<h5>获取客户端的IP</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$.getJSON(&#8220;http://jsonip.appspot.com?callback=?&#8221;,function(data){</li>
<li> alert( &#8220;你的IP：&#8221; + data.ip);</li>
<li>});</li>
</ol>
<p>这是利用了jsonip.appspot.com提供的取IP服务。</p>
<h5>解析XML数据源</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>&lt;?xml version=&#8221;1.0&#8243; ?&gt;</li>
<li>&lt;result&gt;</li>
<li> &lt;item&gt;</li>
<li> &lt;id&gt;1&lt;/id&gt;</li>
<li> &lt;title&gt;title1&lt;/title&gt;</li>
<li> &lt;description&gt;desc1&lt;/description&gt;</li>
<li> &lt;/item&gt;</li>
<li> &lt;item&gt;</li>
<li> &lt;id&gt;2&lt;/id&gt;</li>
<li> &lt;title&gt;title2&lt;/title&gt;</li>
<li> &lt;description&gt;desc2&lt;/description&gt;</li>
<li> &lt;/item&gt;</li>
<li> &lt;!&#8211; &#8230; &#8211;&gt;</li>
<li>&lt;/result&gt;</li>
</ol>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$.get(&#8216;file.xml&#8217;,{},function(data){</li>
<li> $(&#8216;item&#8217;,data).each(function(){</li>
<li> var $this&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = $(this);</li>
<li> var id &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= $this.find(&#8216;id&#8217;).text();</li>
<li> var title &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= $this.find(&#8216;title&#8217;).text();</li>
<li> var description = $this.find(&#8216;description&#8217;).text();</li>
<li> //do something &#8230;</li>
<li> });</li>
<li>});</li>
</ol>
<h5>获取在id中的数字</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>&lt;div id=&#8221;sites&#8221;&gt;</li>
<li> &lt;a id=&#8221;site_1&#8243; href=&#8221;http://siteA.com&#8221;&gt;siteA&lt;/a&gt;</li>
<li> &lt;a id=&#8221;site_2&#8243; href=&#8221;http://siteB.com&#8221;&gt;siteB&lt;/a&gt;</li>
<li> &lt;a id=&#8221;site_3&#8243; href=&#8221;http://siteB.com&#8221;&gt;siteC&lt;/a&gt;</li>
<li> &#8230;</li>
<li>&lt;/div&gt;</li>
</ol>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$(&#8220;#sites a&#8221;).click(function(){</li>
<li> var $this &amp;nbsp;&amp;nbsp; &amp;nbsp;= $(this);</li>
<li> var nmb &amp;nbsp;&amp;nbsp; &amp;nbsp;= $this.attr(&#8216;id&#8217;).match(/site_(\d+)/)[1];</li>
<li> &#8230;</li>
<li>});</li>
</ol>
<h5>将类似12343778 转成 12.343.778的形式</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>var delimiter = &#8216;.&#8217;;</li>
<li>$(&#8216;#result&#8217;).<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag" title="标签 HTML 下的日志">html</a>()</li>
<li> .toString()</li>
<li> .replace(new RegExp(&#8220;(^\\d{&#8220;+($this.html().toString().length%3||-1)+&#8221;})(?=\\d{3})&#8221;),&#8221;$1&#8243; + delimiter)</li>
<li> .replace(/(\d{3})(?=\d)/g,&#8221;$1&#8243; + delimiter);</li>
</ol>
<p>这个正则值得收藏，颇为经典。</p>
<h5>向firebug的控制面板发送消息</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li><a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag" title="标签 JQuery 下的日志">jQuery</a>.fn.log = function (msg) {</li>
<li> console.log(&#8220;%s: %o&#8221;, msg, this);</li>
<li> return this;</li>
<li>};</li>
<li>$(&#8216;#some_div&#8217;).find(&#8216;li.source &gt; input:checkbox&#8217;).log(&#8220;sources to uncheck&#8221;).removeAttr(&#8220;checked&#8221;);</li>
</ol>
<h5>获取图片的宽高</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>var img = $(&#8216;#imageid&#8217;);</li>
<li>var theImage = new Image();</li>
<li>theImage.src = img.attr(&#8220;src&#8221;);</li>
<li>alert(&#8220;Width:  &#8221; + theImage.width);</li>
<li>alert(&#8220;Height:  &#8221; + theImage.height);</li>
</ol>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/07/29/4797/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/07/29/4797/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/07/29/4797/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/07/29/4797/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/07/29/4797/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/07/29/4797/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>实用jquery代码片段集合[上]</title>
		<link>http://www.iwanna.cn/archives/2010/07/29/4795/</link>
		<comments>http://www.iwanna.cn/archives/2010/07/29/4795/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 14:24:51 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[JQuery]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[Source-code]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=4795</guid>
		<description><![CDATA[加载google的jquery库 &#60;script type=&#8221;text/javascript&#8221; src=&#8221;http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js&#8221;&#62;&#60;/script&#62; 有利于加快加载速度（已经得到验证）。 修改图片src更新图片 $(imageobj).attr(&#8216;src&#8217;, $(imageobj).attr(&#8216;src&#8217;) + &#8216;?&#8217; + Math.random() ); （这是很实用的技巧，曾经有人问明河，为什么他已经修改了图片的src，但图片没变化呢？原因在于缓存，给图片路径后加个随机数参数即可。 加载多张图片，判断加载完成状态 var totalimages = 10; var loadedimages = 0; $(&#8220;&#60;img/&#62;&#8221;).load(function() { ++loadedimages; if(loadedimages == totalimages){ //全部图片加载完成时&#8230;.. } }); 双击不选中文本 var clearSelection = function () { if(document.selection &#38;&#38; document.selection.empty) { document.selection.empty(); } else if(window.getSelection) { var sel = window.getSelection(); sel.removeAllRanges(); } } [...]]]></description>
			<content:encoded><![CDATA[<h5>加载google的jquery库</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>&lt;script type=&#8221;text/<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag" title="标签 JavaScript 下的日志">javascript</a>&#8221; src=&#8221;http://ajax.googleapis.com/ajax/libs/<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag" title="标签 JQuery 下的日志">jquery</a>/1.4.2/<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag" title="标签 JQuery 下的日志">jquery</a>.min.js&#8221;&gt;&lt;/script&gt;</li>
</ol>
<p>有利于加快加载速度（已经得到验证）。</p>
<h5>修改图片src更新图片</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$(imageobj).attr(&#8216;src&#8217;, $(imageobj).attr(&#8216;src&#8217;) + &#8216;?&#8217; + Math.random() );</li>
</ol>
<p><span id="more-4795"></span><br />
（这是很实用的技巧，曾经有人问明河，为什么他已经修改了图片的src，但图片没变化呢？原因在于缓存，给图片路径后加个随机数参数即可。</p>
<h5>加载多张图片，判断加载完成状态</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>var totalimages  = 10;</li>
<li>var loadedimages = 0;</li>
<li>$(&#8220;&lt;img/&gt;&#8221;).load(function() {</li>
<li> ++loadedimages;</li>
<li> if(loadedimages == totalimages){</li>
<li> //全部图片加载完成时&#8230;..</li>
<li> }</li>
<li> });</li>
</ol>
<h5>双击不选中文本</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>var clearSelection =  function () {</li>
<li> if(document.selection &amp;&amp; document.selection.empty) {</li>
<li> document.selection.empty();</li>
<li> } else if(window.getSelection) {</li>
<li> var sel = window.getSelection();</li>
<li> sel.removeAllRanges();</li>
<li> }</li>
<li> }</li>
<li></li>
<li> $(element).bind(&#8216;dblclick&#8217;,function(event){</li>
<li> clearSelection();</li>
<li> });</li>
</ol>
<h5>对一个列表进行排序</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>&lt;ul&gt;</li>
<li> &lt;li&gt;cloud&lt;/li&gt;</li>
<li> &lt;li&gt;sun&lt;/li&gt;</li>
<li> &lt;li&gt;rain&lt;/li&gt;</li>
<li> &lt;li&gt;snow&lt;/li&gt;</li>
<li>&lt;/ul</li>
</ol>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>var items = $(&#8216;.to_order  li&#8217;).get();</li>
<li></li>
<li> items.sort(function(a,b){</li>
<li> var keyA = $(a).text();</li>
<li> var keyB = $(b).text();</li>
<li> if (keyA &lt; keyB) return -1;</li>
<li> if (keyA &gt; keyB) return 1;</li>
<li> return 0;</li>
<li> });</li>
<li> var ul = $(&#8216;.to_order&#8217;);</li>
<li> $.each(items, function(i, li){</li>
<li> ul.append(li);</li>
<li> });</li>
</ol>
<p>（中文无效）</p>
<h5>绑定右击事件</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$(document).ready(function(){</li>
<li> $(document).bind(&#8220;contextmenu&#8221;,function(e){</li>
<li> return false;</li>
<li> });</li>
<li> });</li>
</ol>
<h5>扩展jquery的对象选择器</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$.extend($.expr[':'], {</li>
<li> //选择器名</li>
<li> moreThanAThousand : function (a){</li>
<li> return parseInt($(a).<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag" title="标签 HTML 下的日志">html</a>()) &gt; 1000;</li>
<li> }</li>
<li> });</li>
<li> $(document).ready(function() {</li>
<li> $(&#8216;td:moreThanAThousand&#8217;).<a href="http://www.iwanna.cn/tags/css/" class="st_tag internal_tag" rel="tag" title="标签 CSS 下的日志">css</a>(&#8216;background-color&#8217;, &#8216;#ff0000&#8242;);</li>
<li> });</li>
</ol>
<h5>检查对象是否存在</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>if ($(&#8220;#elementid&#8221;).length) {</li>
<li> //&#8230;&#8230;</li>
<li> }</li>
</ol>
<h5>取消一个ajax请求</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>var req = $.ajax({</li>
<li> type:     &#8220;POST&#8221;,</li>
<li> url:     &#8220;someurl&#8221;,</li>
<li> data:     &#8220;id=1&#8243;,</li>
<li> success: function(){</li>
<li></li>
<li> }</li>
<li> });</li>
<li> //取消ajax请求</li>
<li> req.abort()</li>
</ol>
<h5>检查cookies是否可用</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$(document).ready(function() {</li>
<li> var dt = new Date();</li>
<li> dt.setSeconds(dt.getSeconds() + 60);</li>
<li> document.cookie = &#8220;cookietest=1; expires=&#8221; + dt.toGMTString();</li>
<li> var cookiesEnabled = document.cookie.indexOf(&#8220;cookietest=&#8221;) != -1;</li>
<li> if(!cookiesEnabled){</li>
<li> //cookies不能用&#8230;&#8230;..</li>
<li> }</li>
<li> });</li>
</ol>
<h5>获取当前元素在元素集内的索引值</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$(&#8220;ul &gt; li&#8221;).click(function () {</li>
<li> var index = $(this).prevAll().length;</li>
<li> });</li>
</ol>
<p>如果你用的是jquery1.4，明河推荐使用以下方法：</p>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$(&#8220;ul &gt; li&#8221;).click(function () {</li>
<li> var index = $(this).index();</li>
<li> });</li>
</ol>
<h5>让一个元素相对于屏幕居中</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>jQuery.fn.center = function () {</li>
<li> this.css(&#8220;position&#8221;,&#8221;absolute&#8221;);</li>
<li> this.css(&#8220;top&#8221;, ( $(window).height() &#8211; this.height() ) / 2+$(window).scrollTop() + &#8220;px&#8221;);</li>
<li> this.css(&#8220;left&#8221;, ( $(window).width() &#8211;  this.width() ) / 2+$(window).scrollLeft() + &#8220;px&#8221;);</li>
<li> return this;</li>
<li> }</li>
<li> $(element).center();</li>
</ol>
<p>这个方法非常实用，明河严重推荐收藏</p>
<h5>获取当前页面的URL</h5>
<ol title="Double click  to hide line number." ondblclick="linenumber(this)">
<li>$(document).ready(function() {</li>
<li> var pathname = window.location.pathname;</li>
<li> });</li>
</ol>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/07/29/4795/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/07/29/4795/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/07/29/4795/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/07/29/4795/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/07/29/4795/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/07/29/4795/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

