<?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>燕之庐网站建设</title>
	<atom:link href="http://www.yanzhilu.com/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.yanzhilu.com/blog</link>
	<description>优质网站设计公司</description>
	<lastBuildDate>Fri, 03 Sep 2010 08:48:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PHP经典_解密_算法_加密_PHP加密解密内部算法</title>
		<link>http://www.yanzhilu.com/blog/archives/5685</link>
		<comments>http://www.yanzhilu.com/blog/archives/5685#comments</comments>
		<pubDate>Fri, 03 Sep 2010 08:47:51 +0000</pubDate>
		<dc:creator>changboter</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.yanzhilu.com/blog/?p=5685</guid>
		<description><![CDATA[PHP经典_解密_算法_加密_PHP加密解密内部算法]]></description>
			<content:encoded><![CDATA[<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">最近学习URL跳转的时候新进三个超好用的PHP加密解密函数,貌似是discuz里的…使用这些加密解密的原因是因为有时自己的URL地址被人获取以后想破解你里面传值的内容就必须知道你的key，没有key，他应该要破了一阵子才能知道你URL里面的内容吧&#8230;<br style="padding: 0px; margin: 0px;" />闲话少说,先将它们打包成一个文件就叫fun.php吧<br style="padding: 0px; margin: 0px;" />&lt;?php<br style="padding: 0px; margin: 0px;" />function passport_encrypt($txt, $key) {<br style="padding: 0px; margin: 0px;" />srand((double)microtime() * 1000000);<br style="padding: 0px; margin: 0px;" />$encrypt_key = md5(rand(0, 32000));<br style="padding: 0px; margin: 0px;" />$ctr = 0;<br style="padding: 0px; margin: 0px;" />$tmp = &#8221;;<br style="padding: 0px; margin: 0px;" />for($i = 0;$i &lt; strlen($txt); $i++) {<br style="padding: 0px; margin: 0px;" /> $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;<br style="padding: 0px; margin: 0px;" /> $tmp .= $encrypt_key[$ctr].($txt[$i] ^ $encrypt_key[$ctr++]);<br style="padding: 0px; margin: 0px;" />}<br style="padding: 0px; margin: 0px;" />return base64_encode(passport_key($tmp, $key));<br style="padding: 0px; margin: 0px;" />}</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">function passport_decrypt($txt, $key) {<br style="padding: 0px; margin: 0px;" />$txt = passport_key(base64_decode($txt), $key);<br style="padding: 0px; margin: 0px;" />$tmp = &#8221;;<br style="padding: 0px; margin: 0px;" />for($i = 0;$i &lt; strlen($txt); $i++) {<br style="padding: 0px; margin: 0px;" /> $md5 = $txt[$i];<br style="padding: 0px; margin: 0px;" /> $tmp .= $txt[++$i] ^ $md5;<br style="padding: 0px; margin: 0px;" />}<br style="padding: 0px; margin: 0px;" />return $tmp;<br style="padding: 0px; margin: 0px;" />}</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">function passport_key($txt, $encrypt_key) {<br style="padding: 0px; margin: 0px;" />$encrypt_key = md5($encrypt_key);<br style="padding: 0px; margin: 0px;" />$ctr = 0;<br style="padding: 0px; margin: 0px;" />$tmp = &#8221;;<br style="padding: 0px; margin: 0px;" />for($i = 0; $i &lt; strlen($txt); $i++) {<br style="padding: 0px; margin: 0px;" /> $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;<br style="padding: 0px; margin: 0px;" /> $tmp .= $txt[$i] ^ $encrypt_key[$ctr++];<br style="padding: 0px; margin: 0px;" />}<br style="padding: 0px; margin: 0px;" />return $tmp;<br style="padding: 0px; margin: 0px;" />}<br style="padding: 0px; margin: 0px;" />?&gt;<br style="padding: 0px; margin: 0px;" />以下是一些示例…加深对这三个加密解密函数的理解…<br style="padding: 0px; margin: 0px;" />//string.php<br style="padding: 0px; margin: 0px;" />&lt;?php<br style="padding: 0px; margin: 0px;" />include “fun.php”;</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">$txt = “This is a test”;<br style="padding: 0px; margin: 0px;" />$key = “testkey”;<br style="padding: 0px; margin: 0px;" />$encrypt = passport_encrypt($txt,$key);<br style="padding: 0px; margin: 0px;" />$decrypt = passport_decrypt($encrypt,$key);</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">echo $txt.”&lt;br&gt;&lt;hr&gt;”;<br style="padding: 0px; margin: 0px;" />echo $encrypt.”&lt;br&gt;&lt;hr&gt;”;<br style="padding: 0px; margin: 0px;" />echo $decrypt.”&lt;br&gt;&lt;hr&gt;”;<br style="padding: 0px; margin: 0px;" />?&gt;<br style="padding: 0px; margin: 0px;" />//array.php<br style="padding: 0px; margin: 0px;" />&lt;?php<br style="padding: 0px; margin: 0px;" />include “fun.php”;</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">$array = array(<br style="padding: 0px; margin: 0px;" />&#8220;a&#8221; =&gt; &#8220;1&#8243;,<br style="padding: 0px; margin: 0px;" />&#8220;b&#8221; =&gt; &#8220;2&#8243;,<br style="padding: 0px; margin: 0px;" />&#8220;c&#8221; =&gt; &#8220;3&#8243;,<br style="padding: 0px; margin: 0px;" />&#8220;d&#8221; =&gt; &#8220;4&#8243;<br style="padding: 0px; margin: 0px;" />);<br style="padding: 0px; margin: 0px;" />//serialize产生一个可存储的值,返回一个字符串,unserialize还原<br style="padding: 0px; margin: 0px;" />$txt = serialize($array);<br style="padding: 0px; margin: 0px;" />$key = “testkey”;<br style="padding: 0px; margin: 0px;" />$encrypt = passport_encrypt($txt,$key);<br style="padding: 0px; margin: 0px;" />$decrypt = passport_decrypt($encrypt,$key);<br style="padding: 0px; margin: 0px;" />$decryptArray = unserialize($decrypt);</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">echo $txt.”&lt;br&gt;&lt;hr&gt;”;<br style="padding: 0px; margin: 0px;" />echo $encrypt.”&lt;br&gt;&lt;hr&gt;”;<br style="padding: 0px; margin: 0px;" />echo $decrypt.”&lt;br&gt;&lt;hr&gt;”;<br style="padding: 0px; margin: 0px;" />echo $decryptArray.”&lt;br&gt;&lt;hr&gt;”;<br style="padding: 0px; margin: 0px;" />?&gt;<br style="padding: 0px; margin: 0px;" />关键的地方来了…当你要跳转到另外一个网址,但又要保证你的session无误的时候,你需要对session作一个处理.貌似一个公司有一个网站又有一个论坛,两个地方都有注册和登录,但又不想让用户在主页登录后跳转到论坛的时候session失效,即是登录一次跑完整间公司…<br style="padding: 0px; margin: 0px;" />那要怎样来处理用户的session呢…<br style="padding: 0px; margin: 0px;" />网页都是无状态的,如果要在新的网页中继续使用session,则需要把session从一个地方移到另一个地方,可能有些人已经想到了,我可以通过url传址的方式来调用它….而PHP有个处理session的变量,叫$_SESSION.于是….<br style="padding: 0px; margin: 0px;" />将需要注册的session转换成一个数组吧.那么,你可以这样写:<br style="padding: 0px; margin: 0px;" />//login.php<br style="padding: 0px; margin: 0px;" />&lt;?php<br style="padding: 0px; margin: 0px;" />session_start();<br style="padding: 0px; margin: 0px;" />include “fun.php”;<br style="padding: 0px; margin: 0px;" />….<br style="padding: 0px; margin: 0px;" />$_SESSION[“userid”];<br style="padding: 0px; margin: 0px;" />$_SESSION[“username”];<br style="padding: 0px; margin: 0px;" />$_SESSION[“userpwd”];<br style="padding: 0px; margin: 0px;" />…<br style="padding: 0px; margin: 0px;" />header(&#8221;Location: http://$domain/process.php?s=&#8221;.urlencode(passport_encrypt(serialize($_SESSION),&#8221;sessionkey&#8221;)));<br style="padding: 0px; margin: 0px;" />?&gt;<br style="padding: 0px; margin: 0px;" />上例中先用serialize将$_SESSION变成可存储的数据,然后通过passport_encrypt将这个数据加密,加urlencode的原因是因为$_SESSION加密时,有可能会产生像料想不到的编码,所以以防万一…(事实证明非常有效)<br style="padding: 0px; margin: 0px;" />处理下先<br style="padding: 0px; margin: 0px;" />//process.php<br style="padding: 0px; margin: 0px;" />&lt;?php<br style="padding: 0px; margin: 0px;" />session_start();<br style="padding: 0px; margin: 0px;" />include “fun.php”;<br style="padding: 0px; margin: 0px;" /> $_SESSION=unserialize(passport_decrypt($_GET["s"],&#8221;sessionkey&#8221;));<br style="padding: 0px; margin: 0px;" /> header(&#8221;Location: http://$domain/index.php&#8221;);<br style="padding: 0px; margin: 0px;" />?&gt;<br style="padding: 0px; margin: 0px;" />先用$_GET[“s”]获取URL的参数,然后用passport_decrypt将其解密,再用unserialize将其数据还原成原始数据<br style="padding: 0px; margin: 0px;" />到了这步处理,你的网页就可能通过header自由跳转啦….<br style="padding: 0px; margin: 0px;" />这种方法还涉及到安全性的问题,如果你的url地址在传址的过程中被人家获取的话,那就真的是不好意思了…人家虽然可能破解不了url里边的内容,但人家也可以直接用这个url地址来登录你的一些个人账户啊,邮箱帐户啊甚至银行帐户(当然很少人会这样写,我例外,哈哈)…听起来好怕….但其实你可以在跳转页面作取消session处理….<br style="padding: 0px; margin: 0px;" />以下是加强版的process.php<br style="padding: 0px; margin: 0px;" />&lt;?php<br style="padding: 0px; margin: 0px;" /> session_start();<br style="padding: 0px; margin: 0px;" /> include_once &#8220;fun.php&#8221;;<br style="padding: 0px; margin: 0px;" /> $_SESSION=unserialize(passport_decrypt($_GET["s"],&#8221;sessionkey&#8221;));<br style="padding: 0px; margin: 0px;" /> if((time()-$_SESSION["TIME"])&gt;30){<br style="padding: 0px; margin: 0px;" /> header(&#8221;Location: http://$domain/ login.php&#8221;);<br style="padding: 0px; margin: 0px;" /> unset($_SESSION["USERNAME"]);<br style="padding: 0px; margin: 0px;" /> unset($_SESSION["PASSWORD"]);<br style="padding: 0px; margin: 0px;" /> }<br style="padding: 0px; margin: 0px;" /> else<br style="padding: 0px; margin: 0px;" /> header(&#8221;Location: http://$domain/ index.php&#8221;);<br style="padding: 0px; margin: 0px;" />?&gt;<br style="padding: 0px; margin: 0px;" />写这个文件之前,你还要在登录那边设置<br style="padding: 0px; margin: 0px;" />$_SESSION["TIME"] = time();<br style="padding: 0px; margin: 0px;" />设置这个的原因主要是获取两边的时间,如果跳转的时候超过30秒的时候,你就可以让它跳转到login.php登录页面,网速慢的客户就不好意思啦…但这也预防了如果此url被人获取,而这个人又没有在30秒内登录的话,那就不好意思啊,超时重新登录.<br style="padding: 0px; margin: 0px;" />$_SESSION["USERNAME"]和$_SESSION["PASSWORD"] 这两个东东就是用户登录时需要输入的用户名和密码了….取消这两个session的原因就是因为如果你的url被人获取了,那个人虽然在超过30秒内跳转到loign.php的页面,但那些传过来的session依然有效,只要将url后缀login.php改为index.php….那他一样登录成功…<br style="padding: 0px; margin: 0px;" />感觉废话说了一大堆…不知让不让人明白一点&#8230;明白的就快去实践一下…<br style="padding: 0px; margin: 0px;" /></p>
<p align="center">
]]></content:encoded>
			<wfw:commentRss>http://www.yanzhilu.com/blog/archives/5685/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>百度自己做应用，就称不上真的开放</title>
		<link>http://www.yanzhilu.com/blog/archives/5683</link>
		<comments>http://www.yanzhilu.com/blog/archives/5683#comments</comments>
		<pubDate>Fri, 03 Sep 2010 08:45:48 +0000</pubDate>
		<dc:creator>changboter</dc:creator>
				<category><![CDATA[产业新闻]]></category>

		<guid isPermaLink="false">http://www.yanzhilu.com/blog/?p=5683</guid>
		<description><![CDATA[在百度世界2010大会上，百度正式推出应用开放平台。4399董事长蔡文胜，对百度的应用开放平台模式表示担忧，并对百度开放平台提出建议。
蔡文胜表示，“希望百度要真的开放，不要自己做应用，有所为有所不为”。他同时表示，4399拒绝与百度合作的原因就在担心用户最终留在百度，“4399虽然赢得了品牌，却失去了流量”。
蔡文胜称，百度开放平台推出可以给合作者带来用户、带来品牌，但也会令很多中小站长有所担心。“大家会担心百度会怎样选择合作伙伴，而中小站长们可能不会有与合作的空间”。同时，蔡文胜建议，百度应当推动中小站长提升收入。
对此，百度高级副总裁沈皓瑜回应，百度会本着开放的心态，选择开放平台的资源提供方，只要开发者提交的产品过硬、只要用户喜欢，百度都会把应用放到平台上。同时，他也表示，百度会集中精力做好搜索，而未来如何解决开放平台公平公正等问题也是百度正在思考的。
]]></description>
			<content:encoded><![CDATA[<p>在百度世界2010大会上，百度正式推出<a style="word-break: break-all; word-wrap: break-word; color: #617b85; text-decoration: none; padding: 0px; margin: 0px;" href="http://www.phpchina.com/?action-viewnews-itemid-37145" target="_self"><span style="word-break: break-all; word-wrap: break-word; text-decoration: underline; padding: 0px; margin: 0px;"><strong style="word-break: break-all; word-wrap: break-word; font-style: normal; font-weight: 700; padding: 0px; margin: 0px;">应用</strong></span></a>开放<a style="word-break: break-all; word-wrap: break-word; color: #617b85; text-decoration: none; padding: 0px; margin: 0px;" href="http://www.phpchina.com/?action-viewnews-itemid-37145" target="_self"><span style="word-break: break-all; word-wrap: break-word; text-decoration: underline; padding: 0px; margin: 0px;"><strong style="word-break: break-all; word-wrap: break-word; font-style: normal; font-weight: 700; padding: 0px; margin: 0px;">平台</strong></span></a>。4399董事长蔡文胜，对百度的应用开放平台模式表示担忧，并对百度开放平台提出建议。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px; word-break: break-all; word-wrap: break-word; text-indent: 2em;">蔡文胜表示，“希望百度要真的开放，不要自己做应用，有所为有所不为”。他同时表示，4399拒绝与百度合作的原因就在担心用户最终留在百度，“4399虽然赢得了品牌，却失去了流量”。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px; word-break: break-all; word-wrap: break-word; text-indent: 2em;">蔡文胜称，百度开放平台推出可以给合作者带来用户、带来品牌，但也会令很多中小站长有所担心。“大家会担心百度会怎样选择合作伙伴，而中小站长们可能不会有与合作的空间”。同时，蔡文胜建议，百度应当推动中小站长提升收入。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px; word-break: break-all; word-wrap: break-word; text-indent: 2em;">对此，百度高级副总裁沈皓瑜回应，百度会本着开放的心态，选择开放平台的资源提供方，只要<a style="word-break: break-all; word-wrap: break-word; color: #617b85; text-decoration: none; padding: 0px; margin: 0px;" href="http://www.phpchina.com/?action-viewnews-itemid-37145" target="_self"><span style="word-break: break-all; word-wrap: break-word; text-decoration: underline; padding: 0px; margin: 0px;"><strong style="word-break: break-all; word-wrap: break-word; font-style: normal; font-weight: 700; padding: 0px; margin: 0px;">开发</strong></span></a>者提交的产品过硬、只要用户喜欢，百度都会把应用放到平台上。同时，他也表示，百度会集中精力做好搜索，而未来如何解决开放平台公平公正等问题也是百度正在思考的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yanzhilu.com/blog/archives/5683/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>discuz 经典加密解密</title>
		<link>http://www.yanzhilu.com/blog/archives/5681</link>
		<comments>http://www.yanzhilu.com/blog/archives/5681#comments</comments>
		<pubDate>Fri, 03 Sep 2010 08:44:30 +0000</pubDate>
		<dc:creator>changboter</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.yanzhilu.com/blog/?p=5681</guid>
		<description><![CDATA[// 参数解释 // $string： 明文 或 密文 // $operation：DECODE表示解密,其它表示加密 // $key： 密匙 // $expiry：密文有效期 function authcode($string, $operation = &#8216;DECODE&#8217;, $key = &#8221;, $expiry = 0) { // 动态密匙长度，相同的明文会生成不同密文就是依靠动态密匙 $ckey_length = 4; // 密匙 $key = md5($key ? $key : $GLOBALS['discuz_auth_key']); // 密匙a会参与加解密 $keya = md5(substr($key, 0, 16)); // 密匙b会用来做数据完整性验证 $keyb = md5(substr($key, 16, 16)); // [...]]]></description>
			<content:encoded><![CDATA[<p>// 参数解释<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // $string： 明文 或 密文<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // $operation：DECODE表示解密,其它表示加密<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // $key： 密匙<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // $expiry：密文有效期<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> function authcode($string, $operation = &#8216;DECODE&#8217;, $key = &#8221;, $expiry = 0) {<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // 动态密匙长度，相同的明文会生成不同密文就是依靠动态密匙<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $ckey_length = 4;<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // 密匙<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $key = md5($key ? $key : $GLOBALS['discuz_auth_key']);<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // 密匙a会参与加解密<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $keya = md5(substr($key, 0, 16));<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // 密匙b会用来做数据完整性验证<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $keyb = md5(substr($key, 16, 16));<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // 密匙c用于变化生成的密文<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $keyc = $ckey_length ? ($operation == &#8216;DECODE&#8217; ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : &#8221;;<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // 参与运算的密匙<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $cryptkey = $keya.md5($keya.$keyc);<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $key_length = strlen($cryptkey);<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // 明文，前10位用来保存时间戳，解密时验证数据有效性，10到26位用来保存$keyb(密匙b)，解密时会通过这个密匙验证数据完整性<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // 如果是解码的话，会从第$ckey_length位开始，因为密文前$ckey_length位保存 动态密匙，以保证解密正确<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $string = $operation == &#8216;DECODE&#8217; ? base64_decode(substr($string, $ckey_length)) : sprintf(&#8217;%010d&#8217;, $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $string_length = strlen($string);<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $result = &#8221;;<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $box = range(0, 255);<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $rndkey = array();<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // 产生密匙簿<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> for($i = 0; $i &lt;= 255; $i++) {<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $rndkey[$i] = ord($cryptkey[$i % $key_length]);<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> }<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // 用固定的算法，打乱密匙簿，增加随机性，好像很复杂，实际上对并不会增加密文的强度<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> for($j = $i = 0; $i &lt; 256; $i++) {<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $j = ($j + $box[$i] + $rndkey[$i]) % 256;<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $tmp = $box[$i];<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $box[$i] = $box[$j];<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $box[$j] = $tmp;<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> }<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // 核心加解密部分<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> for($a = $j = $i = 0; $i &lt; $string_length; $i++) {<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $a = ($a + 1) % 256;<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $j = ($j + $box[$a]) % 256;<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $tmp = $box[$a];<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $box[$a] = $box[$j];<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $box[$j] = $tmp;<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // 从密匙簿得出密匙进行异或，再转成字符<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> }<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> if($operation == &#8216;DECODE&#8217;) {<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // substr($result, 0, 10) == 0 验证数据有效性<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // substr($result, 0, 10) &#8211; time() &gt; 0 验证数据有效性<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16) 验证数据完整性<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // 验证数据有效性，请看未加密明文的格式<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> if((substr($result, 0, 10) == 0 || substr($result, 0, 10) &#8211; time() &gt; 0) &amp;&amp; substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> return substr($result, 26);<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> } else {<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> return &#8221;;<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> }<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> } else {<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // 把动态密匙保存在密文里，这也是为什么同样的明文，生产不同密文后能解密的原因<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> // 因为加密后的密文可能是一些特殊字符，复制过程可能会丢失，所以用base64编码<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> return $keyc.str_replace(&#8217;=', &#8221;, base64_encode($result));<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> }<br style="font-size: 12px; font-family: Arial, Helvetica, 宋体; padding: 0px; margin: 0px;" /> }</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yanzhilu.com/blog/archives/5681/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysql最常用命令</title>
		<link>http://www.yanzhilu.com/blog/archives/5680</link>
		<comments>http://www.yanzhilu.com/blog/archives/5680#comments</comments>
		<pubDate>Fri, 03 Sep 2010 08:05:51 +0000</pubDate>
		<dc:creator>changboter</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.yanzhilu.com/blog/archives/5680</guid>
		<description><![CDATA[mysql最常用命令]]></description>
			<content:encoded><![CDATA[<p style="line-height: normal;">mysql&gt; select version();        查看MySQL的版本号<br style="line-height: normal;" />mysql&gt; select current_date();        查看MySQL的当前日期<br style="line-height: normal;" />mysql&gt; select version(),current_date(); 同时查看MySQL的版本号和当前日期<br style="line-height: normal;" />mysql&gt; show databases;            显示当前存在的数据库<br style="line-height: normal;" />mysql&gt; USE mysql            选择使用数据库(USE和QUIT命令不需要分号结束)<br style="line-height: normal;" />Database changed<br style="line-height: normal;" />mysql&gt; select database();        显示当前选择的数据库<br style="line-height: normal;" />mysql&gt; show tables;            显示当前数据库中存在的表<br style="line-height: normal;" />mysql&gt; select * from db;        显示表(db)的内容    <br style="line-height: normal;" />mysql&gt; describe mytable;        显示表的结构<br style="line-height: normal;" />或show columns from 表名；</p>
<p style="line-height: normal;">mysql&gt; select<br style="line-height: normal;" />-&gt; user()<br style="line-height: normal;" />-&gt; \c<br style="line-height: normal;" />mysql&gt;</p>
<p style="line-height: normal;">练习如下操作：<br style="line-height: normal;" /> mysql&gt; select<br style="line-height: normal;" /> -&gt; USER()<br style="line-height: normal;" /> -&gt; ,<br style="line-height: normal;" /> -&gt; now()<br style="line-height: normal;" /> -&gt;;<br style="line-height: normal;" />mysql&gt; Select (20+5)*4;<br style="line-height: normal;" />mysql&gt; Select (20+5)*4,sin(pi()/3);<br style="line-height: normal;" />mysql&gt; Select (20+5)*4 AS Result,sin(pi()/3); (AS: 指定假名为Result)</p>
<p style="line-height: normal;"><br style="line-height: normal;" />查看MySQL当前用户占用的连接数</p>
<p style="line-height: normal;">命令： show processlist;<br style="line-height: normal;" />如果是root帐号，你能看到所有用户的当前连接。如果是其它普通帐号，只能看到自己占用的连接。<br style="line-height: normal;" />show processlist;只列出前100条，如果想全列出请使用show full processlist;<br style="line-height: normal;" />mysql&gt; show processlist;</p>
<p style="line-height: normal;"><br style="line-height: normal;" />一。数据库：</p>
<p style="line-height: normal;">mysql&gt; CREATE DATABASE abccs;　        创建一个数据库　        <br style="line-height: normal;" /> mysql&gt; USE abccs            选择使用数据库<br style="line-height: normal;" /> mysql&gt; drop database 数据库名;        删除数据库</p>
<p style="line-height: normal;">二。表：</p>
<p style="line-height: normal;">1。创建一个表mytable:<br style="line-height: normal;" /> <br style="line-height: normal;" /> mysql&gt; CREATE TABLE mytable <br style="line-height: normal;" /> -&gt; (<br style="line-height: normal;" /> -&gt; name VARCHAR(20), <br style="line-height: normal;" /> -&gt; sex CHAR(1),<br style="line-height: normal;" /> -&gt; birth DATE, <br style="line-height: normal;" /> -&gt; birthaddr VARCHAR(20)<br style="line-height: normal;" /> -&gt; );<br style="line-height: normal;" /> 建立一个员工生日表，表的内容包含员工姓名、性别、出生日期、出生城市。<br style="line-height: normal;" /> 由于name、birthadd的列值是变化的，因此选择VARCHAR，其长度不一定是20。<br style="line-height: normal;" /> 可以选择从1到255的任何长度，如果以后需要改变它的字长，可以使用ALTER TABLE语句。<br style="line-height: normal;" /> 性别只需一个字符就可以表示：&#8221;m&#8221;或&#8221;f&#8221;，因此选用CHAR(1);<br style="line-height: normal;" /> birth列则使用DATE数据类型。</p>
<p style="line-height: normal;">2。查询刚添加的记录：<br style="line-height: normal;" /> mysql&gt; select * from mytable;<br style="line-height: normal;" /> Empty set (0.00 sec)　　    这说明刚才创建的表还没有记录。</p>
<p style="line-height: normal;">3。添加新记录：<br style="line-height: normal;" /> mysql&gt; insert into mytable                <br style="line-height: normal;" /> -&gt; values<br style="line-height: normal;" /> -&gt;(<br style="line-height: normal;" /> -&gt;&#8217;abccs&#8217;,<br style="line-height: normal;" /> -&gt;&#8217;f',<br style="line-height: normal;" /> -&gt;&#8217;1977-07-07&#8242;,<br style="line-height: normal;" /> -&gt;&#8217;china&#8217;<br style="line-height: normal;" /> -&gt;);</p>
<p style="line-height: normal;">4。用文本方式将数据装入一个数据库表：<br style="line-height: normal;" /> 一条一条地添加新记录，实在太麻烦。<br style="line-height: normal;" /> 创建一个文本文件“mysql.txt”，按表结构排好每行每条记录，用定位符(tab)把值分开。<br style="line-height: normal;" /> abccs f 1977-07-07 china 　<br style="line-height: normal;" /> mary f 1978-12-12 usa<br style="line-height: normal;" /> tom m 1970-09-02 usa<br style="line-height: normal;" /> 使用此命令将文本文件“mytable.txt”装载到表中:    <br style="line-height: normal;" /> mysql&gt; Load data local infile &#8220;mytable.txt&#8221; into table mytable;</p>
<p style="line-height: normal;">数据传入命令load data local infile &#8220;文件名&#8221; into table 表名;<br style="line-height: normal;" /> 注意：你最好将文件复制到mysql/bin目录下，并且要先用use命令选表所在的库。<br style="line-height: normal;" /> <br style="line-height: normal;" /> 5。更新记录：<br style="line-height: normal;" /> mysql&gt; update mytable set birth = &#8220;1973-09-02&#8243; where name = &#8220;tom&#8221;;<br style="line-height: normal;" /> <br style="line-height: normal;" /> 6。删除记录：<br style="line-height: normal;" /> mysql&gt; delete from mytable where id=10;         //删除掉所有id=10的记录;<br style="line-height: normal;" /> mysql&gt; delete from mytable where id=10 limit 1; //限制删除掉1条id=10的记录;<br style="line-height: normal;" /> mysql&gt; delete from mytable            //删除一个表的全部记录;<br style="line-height: normal;" /> mysql&gt; DELETE FROM t1 WHERE C&gt;10;<br style="line-height: normal;" /> mysql&gt; drop table tablename1,tablename2,…;    //删除整一个表或多个表，小心使用。</p>
<p style="line-height: normal;">7。重命名表：<br style="line-height: normal;" /> mysql&gt; alter table t1 rename t2;</p>
<p style="line-height: normal;">8。修改mysql的表结构：</p>
<p style="line-height: normal;">查看mysql的表结构：<br style="line-height: normal;" /> mysql&gt; describe mytable;   或用show columns from 表名；<br style="line-height: normal;" /> <br style="line-height: normal;" /> 修改字段属性<br style="line-height: normal;" /> mysql&gt; alter table tablename modify id int(10) unsigned auto_increment primary key not null</p>
<p style="line-height: normal;">修改默认值<br style="line-height: normal;" /> mysql&gt; alter table tablename alter id default 0</p>
<p style="line-height: normal;">给字段增加primary key<br style="line-height: normal;" /> mysql&gt; alter table tablename add primary key(id);</p>
<p style="line-height: normal;">删除primary key<br style="line-height: normal;" /> 1、alter table tablename drop primary key;<br style="line-height: normal;" /> 2、drop primary key on tablename;</p>
<p style="line-height: normal;">修改table表数据引擎<br style="line-height: normal;" /> mysql&gt; alter table tableName ENGINE = MyISAM (InnoDB);</p>
<p style="line-height: normal;">增加一新字段名：<br style="line-height: normal;" /> mysql&gt; alter table mytable add column single char(1);<br style="line-height: normal;" /> mysql&gt; ALTER TABLE table ADD field INT(11) UNSIGNED NOT NULL</p>
<p style="line-height: normal;">删除字段<br style="line-height: normal;" /> mysql&gt; alter table t2 drop column c;</p>
<p style="line-height: normal;">附：<br style="line-height: normal;" /> 为了改变列a，从INTEGER改为TINYINT NOT NULL(名字一样)，<br style="line-height: normal;" /> 并且改变列b，从CHAR(10)改为CHAR(20)，同时重命名它，从b改为c:<br style="line-height: normal;" /> ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);</p>
<p style="line-height: normal;">增加一个新TIMESTAMP列，名为d：<br style="line-height: normal;" /> ALTER TABLE t2 ADD d TIMESTAMP;</p>
<p style="line-height: normal;">在列d上增加一个索引，并且使列a为主键：<br style="line-height: normal;" /> ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);</p>
<p style="line-height: normal;">增加一个新的AUTO_INCREMENT整数列，命名为c：<br style="line-height: normal;" /> ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,ADD INDEX (c);<br style="line-height: normal;" /> <br style="line-height: normal;" /> 注意，我们索引了c，因为AUTO_INCREMENT柱必须被索引，<br style="line-height: normal;" /> 并且另外我们声明c为NOT NULL，因为索引了的列不能是NULL。</p>
<p style="line-height: normal;">使用name列的头10个字符创建一个索引:<br style="line-height: normal;" /> CREATE INDEX part_of_name ON customer (name(10));</p>
<p style="line-height: normal;">
<p style="line-height: normal;">三。数据的备份与恢复：</p>
<p style="line-height: normal;">导出和导入数据：(命令在DOS的mysql/bin目录下执行)<br style="line-height: normal;" />导出表<br style="line-height: normal;" />mysqldump &#8211;opt school &gt; school.sql<br style="line-height: normal;" />注释：将数据库school中的表全部备份到school.sql文件，school.sql是一个文本文件，<br style="line-height: normal;" />文件名任取，打开看看你会有新发现。<br style="line-height: normal;" />mysqldump &#8211;opt school teacher student &gt; school.teacher.student.sql<br style="line-height: normal;" />注释：将数据库school中的teacher表和student表备份到school.teacher.student.sql文<br style="line-height: normal;" />件，school.teacher.student.sql是一个文本文件，文件名任取，打开看看你会有新发现。</p>
<p style="line-height: normal;">导入表<br style="line-height: normal;" />mysql<br style="line-height: normal;" />mysql&gt;create database school;<br style="line-height: normal;" />mysql&gt;use school;<br style="line-height: normal;" />mysql&gt;source school.sql;<br style="line-height: normal;" />(或将school.sql换为school.teacher.sql / school.teacher.student.sql)</p>
<p style="line-height: normal;">导出数据库<br style="line-height: normal;" />mysqldump &#8211;databases db1 db2 &gt; db1.db2.sql<br style="line-height: normal;" />注释：将数据库dbl和db2备份到db1.db2.sql文件，db1.db2.sql是一个文本文件，文件名<br style="line-height: normal;" />任取，打开看看你会有新发现。<br style="line-height: normal;" />(举个例子：<br style="line-height: normal;" />mysqldump -h host -u user -p pass &#8211;databases dbname &gt; file.dump<br style="line-height: normal;" />就是把host上的以名字user，口令pass的数据库dbname导入到文件file.dump中。)</p>
<p style="line-height: normal;">导入数据库<br style="line-height: normal;" />mysql &lt; db1.db2.sql</p>
<p style="line-height: normal;">复制数据库mysqldump &#8211;all-databases &gt; all-databases.sql<br style="line-height: normal;" />注释：将所有数据库备份到all-databases.sql文件，all-databases.sql是一个文本文件，文件名任取。</p>
<p style="line-height: normal;">导入数据库<br style="line-height: normal;" />mysql<br style="line-height: normal;" />mysql&gt;drop database a;<br style="line-height: normal;" />mysql&gt;drop database b;<br style="line-height: normal;" />mysql&gt;drop database c;<br style="line-height: normal;" />&#8230;<br style="line-height: normal;" />mysql&gt;source all-databases.sql; (或exit退出mysql后 mysql &lt; all-databases.sql)<br style="line-height: normal;" />&lt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yanzhilu.com/blog/archives/5680/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5的28个特征、窍门和技术 &#8211; 12</title>
		<link>http://www.yanzhilu.com/blog/archives/5678</link>
		<comments>http://www.yanzhilu.com/blog/archives/5678#comments</comments>
		<pubDate>Thu, 02 Sep 2010 10:51:35 +0000</pubDate>
		<dc:creator>changboter</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.yanzhilu.com/blog/?p=5678</guid>
		<description><![CDATA[HTML5的28个特征、窍门和技术 - 12]]></description>
			<content:encoded><![CDATA[<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">第二步：CSS</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">下面，我们要使用一点点的样式。我们将使用:before和:after去告知用户我们制定的最大值和最小值。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">input { font-size: 14px; font-weight: bold;  }input[</span><span style="border-width: 0px; padding: 0px; margin: 0px;">type</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">range</span><span style="border-width: 0px; padding: 0px; margin: 0px;">]:before   </span></span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">{ content: attr(min); padding-right: 5px; }input[</span><span style="border-width: 0px; padding: 0px; margin: 0px;">type</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">range</span><span style="border-width: 0px; padding: 0px; margin: 0px;">]:after  </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">{ content: attr(max); padding-left: 5px;}output   </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">{    display: block;    font-size: 5.5em;    font-weight: bold;} </span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">第三步：JavaScript</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">最后，我们</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">检测我们的浏览器是否认识range input，如果不，显示提示。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">当用户移动滑块的时候，动态改变output的值。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">监听，当用户离开滑块，插入值，同时本地存储。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">然后，下次用户刷新页面的时候，选择的区域和值会自动地设置成他们最后一次选择。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">(function() {    var </span><span style="border-width: 0px; padding: 0px; margin: 0px;">f</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> = </span><span style="border-width: 0px; padding: 0px; margin: 0px;">document</span><span style="border-width: 0px; padding: 0px; margin: 0px;">.forms[0],        </span><span style="border-width: 0px; padding: 0px; margin: 0px;">range</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> = </span><span style="border-width: 0px; padding: 0px; margin: 0px;">f</span><span style="border-width: 0px; padding: 0px; margin: 0px;">['range'],        </span><span style="border-width: 0px; padding: 0px; margin: 0px;">result</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> = </span><span style="border-width: 0px; padding: 0px; margin: 0px;">f</span><span style="border-width: 0px; padding: 0px; margin: 0px;">['result'],        </span><span style="border-width: 0px; padding: 0px; margin: 0px;">cachedRangeValue</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> = </span><span style="border-width: 0px; padding: 0px; margin: 0px;">localStorage</span><span style="border-width: 0px; padding: 0px; margin: 0px;">.rangeValue ? localStorage.rangeValue : 5;      </span></span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">// 检测浏览器是否是足够酷   </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">// 识别range input.    var </span><span style="border-width: 0px; padding: 0px; margin: 0px;">o</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> = </span><span style="border-width: 0px; padding: 0px; margin: 0px;">document</span><span style="border-width: 0px; padding: 0px; margin: 0px;">.createElement('input');    </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">  </span><span style="border-width: 0px; padding: 0px; margin: 0px;">o.type</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> = </span><span style="border-width: 0px; padding: 0px; margin: 0px;">'range'</span><span style="border-width: 0px; padding: 0px; margin: 0px;">;    </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">  if   </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">( </span><span style="border-width: 0px; padding: 0px; margin: 0px;">o.type</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> === 'text' ) alert('不好意思，你的浏览器还不够酷，试试最新的Opera浏览器吧。');   </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">   // 设置初始值   </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">   // 无论是否本地存储了，都设置值为5    </span><span style="border-width: 0px; padding: 0px; margin: 0px;">range.value</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> = </span><span style="border-width: 0px; padding: 0px; margin: 0px;">cachedRangeValue</span><span style="border-width: 0px; padding: 0px; margin: 0px;">;    </span><span style="border-width: 0px; padding: 0px; margin: 0px;">result.value</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> = </span><span style="border-width: 0px; padding: 0px; margin: 0px;">cachedRangeValue</span><span style="border-width: 0px; padding: 0px; margin: 0px;">;     </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">// 当用户选择了个值，更新本地存储    range.addEventListener("mouseup", function() {        alert("你选择的值是：" + range.value + ". 我现在正在用本地存储保存此值。在现代浏览器上刷新并检测。");    </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">      localStorage ? (</span><span style="border-width: 0px; padding: 0px; margin: 0px;">localStorage.rangeValue</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> = range.value) : alert("数据保存到了数据库或是其他什么地方。");    </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">  }, false);    </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">  // 滑动时显示选择的值     </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">range.addEventListener("change", function() {        </span><span style="border-width: 0px; padding: 0px; margin: 0px;">result.value</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> = </span><span style="border-width: 0px; padding: 0px; margin: 0px;">range</span><span style="border-width: 0px; padding: 0px; margin: 0px;">.value;    }, false);})(); </span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">感谢您的阅读!我们已经讨论了很多，但可能只是触及到HTML5的皮毛，全当抛砖引玉，希望能对您的学习有所帮助!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yanzhilu.com/blog/archives/5678/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5的28个特征、窍门和技术 &#8211; 11</title>
		<link>http://www.yanzhilu.com/blog/archives/5676</link>
		<comments>http://www.yanzhilu.com/blog/archives/5676#comments</comments>
		<pubDate>Thu, 02 Sep 2010 10:51:05 +0000</pubDate>
		<dc:creator>changboter</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.yanzhilu.com/blog/?p=5676</guid>
		<description><![CDATA[HTML5的28个特征、窍门和技术 - 11]]></description>
			<content:encoded><![CDATA[<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">二十七、Output元素</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">正如你可能预料到的，output元素被用来显示部分计算，例如，如果你想显示一个鼠标的位置，或者是一系列数字的总和坐标，这个数据应被插入到output元素中。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">举个简单的例子，当提交按钮被按下，我们用JavaScript将两个数字相加值插入到空的output中。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">form</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">action</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">""</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">method</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"get"</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">    </span></span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">  </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">p</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">        10 + </span><span style="border-width: 0px; padding: 0px; margin: 0px;">5</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> = </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">output</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">name</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"sum"</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">output</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">    </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">p</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">    </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">  </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">button</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">type</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"submit"</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">计算</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">button</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">form</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">(function()   </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">{    var </span><span style="border-width: 0px; padding: 0px; margin: 0px;">f</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> = </span><span style="border-width: 0px; padding: 0px; margin: 0px;">document</span><span style="border-width: 0px; padding: 0px; margin: 0px;">.forms[0];    if ( typeof f['sum'] !== 'undefined' ) {        f.addEventListener('submit', function(e) {            f['sum']</span><span style="border-width: 0px; padding: 0px; margin: 0px;">.value</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> = </span><span style="border-width: 0px; padding: 0px; margin: 0px;">15</span><span style="border-width: 0px; padding: 0px; margin: 0px;">;            e.preventDefault();  </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">        }, false);     </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">}   </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">else  </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">{        alert('你的浏览器尚未准备好！');   </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">   }})(); </span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">自己测试了下，貌似现在只有在Opera浏览器下有上佳的效果：</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<p><img style="padding: 0px; margin: 0px; border: 0px none initial;" src="http://www.php100.com/cms/uploads/allimg/100901/092920N43-10.jpg" alt="1" width="228" height="120" /></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">如果您现在使用的是较新版本的Opera浏览器，您可以狠狠地点击这里：HTML5结果输出框demo</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">此元素也可以接受一个属性，它反映了输出相关元素的名称，类似label工作原理。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">二十八、使用区域input创建滑块(Create Sliders with the Range Input)</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">HTML5引进了range类型的input。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">input</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">type</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"range"</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span></span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">最值得注意的是，它可以接收 min, max, step,和value 属性，等等。虽然现在似乎只有Opera浏览器充分支持这种输入类型，但是当我们可以实际使用时，这将是美妙无比的!</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">参见下面的快速演示：</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">第一步：标签</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">首先，创建标签</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">form</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">method</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"post"</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">    </span></span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">  </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">h4</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">音量控制</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">h4</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">     </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">input</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">type</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"range"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">name</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"range"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">min</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"0"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">max</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"10"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">step</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"1"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">value</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">""</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">/&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">     </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">output</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">name</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"result"</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">    </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">output</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">form</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
]]></content:encoded>
			<wfw:commentRss>http://www.yanzhilu.com/blog/archives/5676/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5的28个特征、窍门和技术 &#8211; 10</title>
		<link>http://www.yanzhilu.com/blog/archives/5674</link>
		<comments>http://www.yanzhilu.com/blog/archives/5674#comments</comments>
		<pubDate>Thu, 02 Sep 2010 10:49:19 +0000</pubDate>
		<dc:creator>changboter</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.yanzhilu.com/blog/?p=5674</guid>
		<description><![CDATA[HTML5的28个特征、窍门和技术 - 10]]></description>
			<content:encoded><![CDATA[<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">二十六、data属性(The Data Attribute)</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">我们现在可以很正式地让所有的HTML元素支持自定义属性。然而，以前，我们可能会这样：</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">h1</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">id</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">someId</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">customAttribute</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">value</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> 小样，胆儿挺肥的呢 </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">h1</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span></span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">校验器会小题大做!但是现在，只要我们以”data”为前缀定义我们的自定义属性，盗版属性立马变成正牌的了。如果你发现你曾经把一个重要的数据附加在诸如class的属性上，可能为了JavaScript之用，那么，本属性将大有帮助啊。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">HTML片段</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">div</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">id</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"myDiv"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">data-custom-attr</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"My Value"</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> 巴拉巴拉，lady 嘎嘎 </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">div</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span></span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">检索自定义属性的价值</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">var </span><span style="border-width: 0px; padding: 0px; margin: 0px;">theDiv</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> = </span><span style="border-width: 0px; padding: 0px; margin: 0px;">document</span><span style="border-width: 0px; padding: 0px; margin: 0px;">.getElementById('myDiv');var </span><span style="border-width: 0px; padding: 0px; margin: 0px;">attr</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> = </span><span style="border-width: 0px; padding: 0px; margin: 0px;">theDiv</span><span style="border-width: 0px; padding: 0px; margin: 0px;">.getAttribute('data-custom-attr');alert(attr); // My Value </span></span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">此属性还可以用在CSS中，例如下面这个有些傻里傻气的CSS文字改变的例子：</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">CSS代码：.data_custom { display:inline-block; position: relative; }.data_custom:hover { color: transparent; }.data_custom:hover:after {    content: attr(data-hover-response);    color: black;    position: absolute;    left: 0;} </span></span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">HTML代码：</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">a</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">class</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"data_custom"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">data-hover-response</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"我说过不要碰我！"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">href</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"#"</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">不要碰我，雅蠛蝶~~</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">a</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span></span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">如果你的浏览器支持after伪类，以及content的attr属性，则可以看到类似下面的效果(IE8不一样)：</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<p><img style="padding: 0px; margin: 0px; border: 0px none initial;" src="http://www.php100.com/cms/uploads/allimg/100901/0929205914-9.jpg" alt="1" width="320" height="118" /></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">还有，content属性其实是一个非常强大的属性，由于低版本的IE不支持，所以此属性尚未流行，关于content内容生成技术，可以参见我之前的“CSS content内容生成技术以及应用”这篇文章。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yanzhilu.com/blog/archives/5674/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5的28个特征、窍门和技术 &#8211; 9</title>
		<link>http://www.yanzhilu.com/blog/archives/5672</link>
		<comments>http://www.yanzhilu.com/blog/archives/5672#comments</comments>
		<pubDate>Thu, 02 Sep 2010 10:48:44 +0000</pubDate>
		<dc:creator>changboter</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.yanzhilu.com/blog/?p=5672</guid>
		<description><![CDATA[HTML5的28个特征、窍门和技术 - 9]]></description>
			<content:encoded><![CDATA[<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">二十二、mark元素(Mark Element )</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">试想元素作为高亮。此标签包裹的字符串应该与用户当前的行动相关联。例如，我在一些博客上搜索“北川景子”，我就可以使用一些JavaScript将当前的每个结果字符串用mark标签包裹。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">h3</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> 搜索结果 </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">h3</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">p</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> 我很喜欢《零秒出手》里面那个拉小提琴的女孩，原来她叫做 </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">mark</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">北川景子</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">mark</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">。 </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">p</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span></span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">二十三、什么时候使用div</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">我们有些人开始质问到底何时该使用div。现在我们可以使用header, article, section,和footer，还有机会使用div…吗?当然可以。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">div应该用在没有更好的元素的时候。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">例如，如果你发现你需要包裹一段代码块在对内容定位处理的包装单元内。不过如果你是包裹一个博客文章，或者，可能是，底部的链接列表，则需考虑分别使用和元素，因为其更具语义。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">二十四、什么可以开始立即使用</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">一直谈论到现在的HTML5要到2022年才能全部完成，许多人完全忽视它，这是个巨大的错误。事实上，有少量的HTML5的功能，我们可以在我们所有的项目中使用!更简单，更干净的代码总是一件好事。在今天的视频快速展示的技巧中，我将告诉你一些可用的选项。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">//zxx:YouTuBe视频，需要翻墙</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">Subscribe to our YouTube page to watch all of the video tutorials!</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">二十五、哪些不是HTML5(What is Not HTML5)</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">那些仅凭自己的假设形象将JavaScript变少的过渡被全部归为HTML5的人是可以理解的，嘿，甚至苹果无意中推动这一想法。对于非开发人员，谁管这个呢，它是一个简单的方法适用于现代网页标准。不过，对于我们来说，尽管它可能只是语义，重要的是要准确理解什么不是HTML5。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">1. SVG:不是HTML5，至少5岁了。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">2. CSS3:不是HTML5，它是…CSS。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">3. Geolocation:不是HTML5.//zxx:Geolocation(地理位置)：通过HTML 5，您应该能够使Web应用程序可确定您的位置，并为您提供更多的相关信息。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">4. Client Storage(客户端存储):非HTML5，虽说有一点切合，但被排除在规范之外，原因在于，担忧其作为一个整体，会变得过于复杂。它现在有自己的规范。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">5. Web Sockets:不是HTML5，同样的，有着自己的一套准则。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">不管你需求有多大的区别，所有这些技术可以归为现代网络堆栈。事实上，不少这些分支规范的管理着还是同一人。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yanzhilu.com/blog/archives/5672/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5的28个特征、窍门和技术 &#8211; 8</title>
		<link>http://www.yanzhilu.com/blog/archives/5670</link>
		<comments>http://www.yanzhilu.com/blog/archives/5670#comments</comments>
		<pubDate>Thu, 02 Sep 2010 10:47:49 +0000</pubDate>
		<dc:creator>changboter</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.yanzhilu.com/blog/?p=5670</guid>
		<description><![CDATA[HTML5的28个特征、窍门和技术 - 8]]></description>
			<content:encoded><![CDATA[<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">十七、Video支持</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">与元素很类似，在新的浏览器中也存在Video!事实上，就在最近，YouTube宣告了新的HTML5视频嵌入，当然，是为支持此功能浏览器。因为HTML5的规范没有指定特定的视频编解码器，它留给了浏览器来决定。虽然Safari和Internet Explorer9可以预期支持H.264格式的视频(其中Flash播放器可以播放)，Firefox和Opera是坚持开源Theora 和Vorbis格式。因此，当显示HTML5的视频，您必须提供这两种格式。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">video</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> controls preload</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">   </span></span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">   </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">source</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">src</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"cohagenPhoneCall.ogv"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">type</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"video/ogg; codecs='vorbis, theora'"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">/&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">     </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">source</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">src</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"cohagenPhoneCall.mp4"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">type</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"video/mp4; 'codecs='avc1.42E01E, mp4a.40.2'"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">/&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">    </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">  </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">p</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> Your browser is old. </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">a</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">href</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"cohagenPhoneCall.mp4"</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">Download this video instead.</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">a</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">p</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">video</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">还有一个值得注意的一些事情：</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">1. 我们技术上不需要来设置type属性，但是，如果我们不这样做，浏览器不得不自己去寻找类型。节省一些带宽，还是你自己声明下吧。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">2. 不是所有的浏览器理解HTML5视频。在资源元素的下面，我们可以提供一个下载链接，或嵌入视频的Flash版本代替。这取决于你。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">3. controls和preload属性就会在下面提及。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">4. 有方法可以让所有的浏览器支持video标签，具体参见我前面的“让所有浏览器支持HTML5 video视频标签”一文。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">十八、视频预载(Preload Videos)</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">预载属性不完全是你想的那个样子，虽然，你应该先决定是否要在浏览器预装的视频。是否有必要?或许吧。如果访问者访问一个专门展示了一个视频的页面，你一定要预载的视频，节约参观者等待的一部分时间。影片可以通过设置 preload=”preload”或是简单地添加preload进行预载。我更喜欢后者的解决方案，它少了一点多余的东西。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">video</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> preload</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span></span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<p><img style="padding: 0px; margin: 0px; border: 0px none initial;" src="http://www.php100.com/cms/uploads/allimg/100901/092920E93-7.jpg" alt="1" width="505" height="251" /></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">请注意，不同浏览器渲染出来的进度条的模样都是不一样的。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">二十、正则表达式</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">你发现自己多久匆匆编写一些正则表达式验证一个特定的文本。多亏了新的pattern属性，我们可以在标签处直接插入一个正则表达式。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">form</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">action</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">""</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">method</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"get"</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">    </span></span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">  </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">label</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">for</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"username"</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">姓名:</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">label</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">    </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">  </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">input</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">id</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"username"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">name</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"username"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">type</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"text"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">placeholder</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"4-10个英文字母"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">pattern</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"[A-Za-z]{4,10}"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">required</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"required"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> autofocus </span><span style="border-width: 0px; padding: 0px; margin: 0px;">/&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">     </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">button</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">type</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"submit"</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">提交</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">button</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">form</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">如果你熟悉正则表达式，那么应该清楚[A-Za-z]{4,10}表示接受4-10位不区分大小写的英文字母。如果浏览器支持pattern属性，则提交表单时，如果文本框中的内容不符合其正则表达式，文本框会高亮显示。如下图所示。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<p><img style="padding: 0px; margin: 0px; border: 0px none initial;" src="http://www.php100.com/cms/uploads/allimg/100901/0929205601-8.jpg" alt="1" width="312" height="102" /></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">我自己小测了下，貌似目前只在Chrome下有效(win系统)</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">注意到，我们已经开始组合使用这些很棒的属性。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">如果您对正则表达式概念模糊了，可以参见这里。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">二十一、属性支持检测</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">如果我们没有方法检测浏览器是否支持这些属性，这些就不能称之为好的属性。恩，不错的观点，事实上我们是有几种方法的，这里我们讨论2个。第一个是利用优秀的Modernizr库，或者，我们可以创建和分析这些元素，以确定浏览器的能力。例如，在我们前面的例子，如果我们要确定浏览器是否能使用pattern的属性，我们可以添加一小段JavaScript到我们的页面上：</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">alert( 'pattern' in document.createElement('input') ); // boolean   </span></span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">事实上，这是一种确定浏览器兼容的常用方法。jQuery库了利用这种伎俩。在上面，我们创建了一个新的input元素，并确定了里面的pattern属性浏览器是否认得。如果是，浏览器则支持此功能。否则，当然就不支持了。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">script</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">if (!'pattern' in document.createElement('input') ) {    // do client/server side validation}  </span></span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">script</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">谨记此方法依赖于JavaScript。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yanzhilu.com/blog/archives/5670/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5的28个特征、窍门和技术-7</title>
		<link>http://www.yanzhilu.com/blog/archives/5668</link>
		<comments>http://www.yanzhilu.com/blog/archives/5668#comments</comments>
		<pubDate>Thu, 02 Sep 2010 10:46:56 +0000</pubDate>
		<dc:creator>changboter</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.yanzhilu.com/blog/?p=5668</guid>
		<description><![CDATA[HTML5的28个特征、窍门和技术-7]]></description>
			<content:encoded><![CDATA[<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">十四、必要的属性(Required Attribute )</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">表单允许新的必要属性，用来指定是否需要特殊的input。这取决于你的代码偏好，你可以以下面两种方式之一申明此属性。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">input</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">type</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"text"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">name</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"someInput"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> required</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span></span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">或者，使用更结构化的方法：</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">input</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">type</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"text"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">name</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"someInput"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">required</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"required"</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span></span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">两种方法都行。有了这个代码，并且浏览器支持此属性，如果“someInput”文本框是空白，则表单不会被提交。下面是一个简单的例子，我们还将添加占位符属性，因为没有理由不这样做。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">form</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">action</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">""</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">method</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"get"</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">    </span></span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">  </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">label</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">for</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"name"</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">姓名:</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">label</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">   </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">   </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">input</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">id</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"name"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">name</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"name"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">type</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"text"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">placeholder</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"zhangxinxu"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">required</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"required"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">/&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">      </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">button</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">type</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"submit"</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">提交</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">button</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">form</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">如果input里面内容是空白，则表单提交的时候，文本框会高亮显示。//zxx:貌似仅在Chrome浏览器下有点小效果</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<p><img style="padding: 0px; margin: 0px; border: 0px none initial;" src="http://www.php100.com/cms/uploads/allimg/100901/0929201C1-6.jpg" alt="1" width="331" height="118" /></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">十五、Autofocus属性</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">同样，HTML5的解决方案消除了对JavaScript的需要。如果一个特定的输入应该是“选择”，或有重点的，默认情况下，我们现在可以利用自动获取焦点属性。</p>
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">input</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">type</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"text"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">name</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"someInput"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">placeholder</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"zhangxinxu"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> required autofocus</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span></span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">有趣的是，虽然我个人更倾向于喜欢XHTML的方法(用引号，等等)，写作“autofocus=autofocus”让人感到有点怪。因此，我们将坚持使用单一关键字的方法。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">十六、Audio支持</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">我们无需再依赖第三方插件区渲染音频。HTML5提供了元素，嗯，至少，最终，我们将不必担心这些插件。就目前，只有最近期的的浏览器提供HTML5音频支持。在这个时候，它仍然是一个很好的做法提供一些向后兼容的形式。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">
<pre style="padding: 0px; margin: 0px;">
<ol style="border-width: 0px; padding: 0px; margin: 0px;">
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">audio</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">autoplay</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"autoplay"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">controls</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"controls"</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">    </span></span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">  </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">source</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">src</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"file.ogg"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">/&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">    </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">  </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">source</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">src</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"file.mp3"</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">/&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">   </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">   </span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">a</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span><span style="border-width: 0px; padding: 0px; margin: 0px;">href</span><span style="border-width: 0px; padding: 0px; margin: 0px;">=</span><span style="border-width: 0px; padding: 0px; margin: 0px;">"file.mp3"</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;">Download this file.</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">a</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span></li>
<li style="list-style-position: outside; list-style-type: none; border-width: 0px; padding: 0px; margin: 0px;"><span style="border-width: 0px; padding: 0px; margin: 0px;">&lt;/</span><span style="border-width: 0px; padding: 0px; margin: 0px;">audio</span><span style="border-width: 0px; padding: 0px; margin: 0px;">&gt;</span><span style="border-width: 0px; padding: 0px; margin: 0px;"> </span></li>
</ol>
</pre>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">Mozilla和WebKit的还没有完全相处，当涉及到音频格式， Firefox会希望看到一个.ogg文件，而WebKit的浏览器支持.mp3扩展。这意味着，至少在现在，你应该创建两个版本的音频。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 22px; margin-left: 0px; padding: 0px;">当Safari加载页面时，它不会承认.ogg格式，会跳过它并移动到的MP3版本，因此。请注意IE，每往常一样，不支持这些格式，Opera 10和以及以下版本只能使用.wav文件。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yanzhilu.com/blog/archives/5668/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
