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

<channel>
	<title>生活点滴 &#187; HTML客户端</title>
	<atom:link href="http://www.storyday.com/cat/web-tech/html/feed" rel="self" type="application/rss+xml" />
	<link>http://www.storyday.com</link>
	<description>生活点滴、旅游、web技术、虚拟主机、电子信息</description>
	<lastBuildDate>Tue, 31 Aug 2010 02:55:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>fckeditor 的php调用和自定义文件上传</title>
		<link>http://www.storyday.com/html/y2010/2603_fckeditor-of-php-calls-and-custom-file-upload.html</link>
		<comments>http://www.storyday.com/html/y2010/2603_fckeditor-of-php-calls-and-custom-file-upload.html#comments</comments>
		<pubDate>Fri, 22 Jan 2010 09:14:25 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.storyday.com/?p=2603</guid>
		<description><![CDATA[相比tiny TinyMCE 我还是更喜欢  fckeditor （不是fuck editor），原因有三：

最早接触的是fckeditor，那个时候tinyMCE好像是收费的（不知道有没有记错），而且fckeditor一直都比较丰富；
fckeditor的文档似乎更加完善；
不喜欢tinyMCE的弹出窗口的体验，更喜欢fckeditor的div浮动方式，特别是查看源代码的时候。

于是，最近自己在做自己公司的站点，后台就采用了fckeditor，在此期间也遇到一些问题，特此记录。

ajax提交的时候，使用jquery serialize()无法获取rft文本编辑框中的内容。仔细看了看原理才知道，fckeditor采用的是iframe方式，所以js提交的时候没有触发form.submit，当然也就获取不到内容，处理的方式很简单，在提交之前，用js获取一下iframe中的内容，代码如下:
 $('#hotel_description').val( getEditorTextContents('hotel_description') );假设 hotel_description是RTF文本编辑器的ID
getEditorTextContents的函数代码如下：
function getEditorTextContents(EditorName) {
var oEditor = FCKeditorAPI.GetInstance(EditorName);
return(oEditor.EditorDocument.body.innerHTML);
}
如何自定义上传图片程序。fckeditor本身自带有图片上传，但是有的时候并不一定能满足我们的需求，所以这个时候您可能需要fckeditor能直接调用第三方图片管理程序。假设图片程序路径是 http://www.huichuan365.com/media/
那么php调用fckeditor的代码如下：
BasePath = HOME_URL.'/lib/fckeditor/' ;
$oFCKeditor-&#62;Config['ImageBrowserURL'] = 'http://www.huichuan365.com/media/' ;//第三方图片程序的地址$oFCKeditor-&#62;Config['ImageBrowserWindowWidth'] =800;//第三方图片程序弹出窗口的宽度，同样的也可以定义高度
$oFCKeditor-&#62;Width = '100%' ;
$oFCKeditor-&#62;Height = '450' ;
$oFCKeditor-&#62;Create() ;
?&#62; 
上面的的步骤可以让你在编辑器中点击图片上传的时候，自动引导上传程序到第三方网址。
接下来的问题就是，在第三方网页中添加一个功能：当点击图片的时候， 网页自动关闭，同时图片的路径传递回当前的编辑器中，在第三方网页中的代码如下：
function SelectFile( fileUrl )
{
// window.opener.SetUrl( url, width, height, alt);
window.opener.SetUrl( fileUrl ) ;
window.close() ;
}这段代码，官方网站也有

好了，特此记录。
]]></description>
			<content:encoded><![CDATA[<p>相比tiny<a href="http://tinymce.moxiecode.com/" target="_blank"> TinyMCE </a>我还是更喜欢 <a href="http://www.fckeditor.net/" target="_blank"> fckeditor </a>（不是fuck editor），原因有三：</p>
<ol>
<li>最早接触的是fckeditor，那个时候tinyMCE好像是收费的（不知道有没有记错），而且fckeditor一直都比较丰富；</li>
<li>fckeditor的文档似乎更加完善；</li>
<li>不喜欢tinyMCE的弹出窗口的体验，更喜欢<a href="http://www.fckeditor.net/" target="_blank">fckeditor</a>的div浮动方式，特别是查看源代码的时候。</li>
</ol>
<p>于是，最近自己在做自己公司的站点，后台就采用了<a href="http://www.fckeditor.net/" target="_blank">fckeditor</a>，在此期间也遇到一些问题，特此记录。<span id="more-2603"></span></p>
<ol>
<li><strong>ajax提交的时候，使用jquery serialize()无法获取rft文本编辑框中的内容。</strong>仔细看了看原理才知道，fckeditor采用的是iframe方式，所以js提交的时候没有触发form.submit，当然也就获取不到内容，处理的方式很简单，在提交之前，用js获取一下iframe中的内容，代码如下:<br />
<code> $('#hotel_description').val( getEditorTextContents('hotel_description') );</code>假设 hotel_description是RTF文本编辑器的ID<br />
getEditorTextContents的函数代码如下：<br />
<code>function getEditorTextContents(EditorName) {<br />
var oEditor = FCKeditorAPI.GetInstance(EditorName);<br />
return(oEditor.EditorDocument.body.innerHTML);<br />
}</code></li>
<li><strong>如何自定义上传图片程序</strong>。fckeditor本身自带有图片上传，但是有的时候并不一定能满足我们的需求，所以这个时候您可能需要fckeditor能直接调用第三方图片管理程序。假设图片程序路径是 <a href="http://www.huichuan365.com/">http://www.huichuan365.com/media/</a><br />
那么php调用fckeditor的代码如下：<br />
<code>BasePath = HOME_URL.'/lib/fckeditor/' ;<br />
$oFCKeditor-&gt;Config['ImageBrowserURL'] = 'http://www.huichuan365.com/media/' ;//第三方图片程序的地址$oFCKeditor-&gt;Config['ImageBrowserWindowWidth'] =800;//第三方图片程序弹出窗口的宽度，同样的也可以定义高度<br />
$oFCKeditor-&gt;Width = '100%' ;<br />
$oFCKeditor-&gt;Height = '450' ;<br />
$oFCKeditor-&gt;Create() ;<br />
?&gt; </code><br />
上面的的步骤可以让你在编辑器中点击图片上传的时候，自动引导上传程序到第三方网址。<br />
接下来的问题就是，在第三方网页中添加一个功能：当点击图片的时候， 网页自动关闭，同时图片的路径传递回当前的编辑器中，在第三方网页中的代码如下：<br />
<code>function SelectFile( fileUrl )<br />
{<br />
// window.opener.SetUrl( url, width, height, alt);<br />
window.opener.SetUrl( fileUrl ) ;<br />
window.close() ;<br />
}</code>这段代码，官方网站也有</li>
</ol>
<p>好了，特此记录。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2010/2603_fckeditor-of-php-calls-and-custom-file-upload.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>你有多久没有用可视化编辑器写html了</title>
		<link>http://www.storyday.com/html/y2009/2407_how-long-do-you-have-no-visual-editor-used-to-write-the-html.html</link>
		<comments>http://www.storyday.com/html/y2009/2407_how-long-do-you-have-no-visual-editor-used-to-write-the-html.html#comments</comments>
		<pubDate>Sat, 13 Jun 2009 09:19:53 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.storyday.com/?p=2407</guid>
		<description><![CDATA[大一的时候，学微波通信的我选了一门选修课，叫做网页设计，从那之后就对动态web编程感兴趣了。
在学习web相关的东西的过程中，frontpage用过几次，随后就用了dreamweaver。当年在水木清华BBS上听闻高手用文本编辑器写网页，并且宣称用存文本编辑器效率更高。当年感觉不可思议，用文本编辑器确实可以，但是不可能效率更高，那人简直就是装深沉，有现在的话说是装“13”！
今天突然想到这个事情，发现自己电脑中多年没有dw，甚至连安装程序都找不到了。原来，业余web编程的我，也早在4、5年前就放弃了可视化编辑软件了！
其实这并不是水平高的体现，引用《买油翁》的文字：“无他，唯手熟尔”！
实话实说，现在确实用纯文本编辑器速度快多了，在打开DW的时间内，可能我要做的小部分修改已经完成。web发展到现在，设计越来越简洁，用css可以随心所欲将希望的div摆在自己认为合适的地方。
各位朋友，你呢，是不是也放弃了DW这根拐杖！
预报一下：今天上午开始，在写一个简约的单用户图片管理程序，现在大约完成50%，整个程序就一个php文件，想去体验未完成版本的，请去这里0bad.com
]]></description>
			<content:encoded><![CDATA[<p>大一的时候，学微波通信的我选了一门选修课，叫做网页设计，从那之后就对动态web编程感兴趣了。</p>
<p>在学习web相关的东西的过程中，frontpage用过几次，随后就用了dreamweaver。当年在水木清华BBS上听闻高手用文本编辑器写网页，并且宣称用存文本编辑器效率更高。当年感觉不可思议，用文本编辑器确实可以，但是不可能效率更高，那人简直就是装深沉，有现在的话说是装“13”！</p>
<p>今天突然想到这个事情，发现自己电脑中多年没有dw，甚至连安装程序都找不到了。原来，业余web编程的我，也早在4、5年前就放弃了可视化编辑软件了！</p>
<p>其实这并不是水平高的体现，引用《买油翁》的文字：“无他，唯手熟尔”！</p>
<p>实话实说，现在确实用纯文本编辑器速度快多了，在打开DW的时间内，可能我要做的小部分修改已经完成。web发展到现在，设计越来越简洁，用css可以随心所欲将希望的div摆在自己认为合适的地方。</p>
<p>各位朋友，你呢，是不是也放弃了DW这根拐杖！</p>
<p>预报一下：今天上午开始，在写一个简约的单用户图片管理程序，现在大约完成50%，整个程序就一个php文件，想去体验未完成版本的，请去这里<a href="http://0bad.com">0bad.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2009/2407_how-long-do-you-have-no-visual-editor-used-to-write-the-html.html/feed</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>分享一段基于jQuery的表单验证的javascript</title>
		<link>http://www.storyday.com/html/y2009/2272_share-section-of-jquery-based-form-validation-javascript.html</link>
		<comments>http://www.storyday.com/html/y2009/2272_share-section-of-jquery-based-form-validation-javascript.html#comments</comments>
		<pubDate>Wed, 18 Mar 2009 06:32:13 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.storyday.com/html/y2009/2272_%e5%88%86%e4%ba%ab%e4%b8%80%e6%ae%b5%e5%9f%ba%e4%ba%8ejquery%e7%9a%84%e8%a1%a8%e5%8d%95%e9%aa%8c%e8%af%81%e7%9a%84javascript.html</guid>
		<description><![CDATA[有jQuery，一切都好办了，因为用它可以方便的定位到html中的任何一个节点，下面一段代码是cosbeta用于表单验证的javascript脚本：
首先引入jQuery库
&#60;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"&#62;&#60;/script&#62;
然后编写验证表单的函数

function valid(s){
var e=s.split('&#38;');var i=0;
while( i&#60;e.length ){
var tmp=e[i].split('=');
var el = "#"+tmp[0];
var fv =$(el).val();
var tp = tmp[1];
$(el).next().hide();//将表单域后面的出错提示隐藏掉
if( tp == "text" ){
if( fv == "" ) {
$(el).next().show(); //若表单域为空，则显示出错提示
return false; //返回false，以下相同
}
}
if( tp == "int" ){
if( isNaN( fv ) ) {
$(el).next().show();
return false;
}
}
if( tp == "email" ){
var res = new RegExp("^([A-Za-z0-9_&#124;-]+[.]*[A-Za-z0-9_&#124;-]+)+@[A-Za-z0-9&#124;-]+([.][A-Za-z0-9&#124;-]+)*[.][A-Za-z0-9]+$","ig");
if (!res.test(fv)){
$(el).next().show();
return false;
}
}
i++;
}
}
使用方法距离：
&#60;input size="20" type="text" name="email" id="email"  /&#62;
&#60;span class="errormsg"&#62;E-mail [...]]]></description>
			<content:encoded><![CDATA[<p>有jQuery，一切都好办了，因为用它可以方便的定位到html中的任何一个节点，下面一段代码是cosbeta用于表单验证的javascript脚本：</p>
<p>首先引入jQuery库</p>
<p><code>&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"&gt;&lt;/script&gt;</code></p>
<p>然后编写验证表单的函数</p>
<p><span id="more-2272"></span></p>
<p><code>function valid(s){<br />
var e=s.split('&amp;');var i=0;<br />
while( i&lt;e.length ){<br />
var tmp=e[i].split('=');<br />
var el = "#"+tmp[0];<br />
var fv =$(el).val();<br />
var tp = tmp[1];<br />
$(el).next().hide();//将表单域后面的出错提示隐藏掉<br />
if( tp == "text" ){<br />
if( fv == "" ) {<br />
$(el).next().show(); //若表单域为空，则显示出错提示<br />
return false; //返回false，以下相同<br />
}<br />
}<br />
if( tp == "int" ){<br />
if( isNaN( fv ) ) {<br />
$(el).next().show();<br />
return false;<br />
}<br />
}<br />
if( tp == "email" ){<br />
var res = new RegExp("^([A-Za-z0-9_|-]+[.]*[A-Za-z0-9_|-]+)+@[A-Za-z0-9|-]+([.][A-Za-z0-9|-]+)*[.][A-Za-z0-9]+$","ig");<br />
if (!res.test(fv)){<br />
$(el).next().show();<br />
return false;<br />
}<br />
}<br />
i++;<br />
}<br />
}</code></p>
<p>使用方法距离：</p>
<p><code>&lt;input size="20" type="text" name="email" id="email"  /&gt;<br />
&lt;span class="errormsg"&gt;E-mail is not valid&lt;/span&gt;<br />
&lt;input type="password" name="password" id="password"    /&gt;<br />
&lt;span class="errormsg"&gt;password is required&lt;/span&gt;<br />
&lt;input type="submit" value="Login" onClick="return valid('email=email&amp;password=text')"/&gt;</code></p>
<p>valid的参数说明，若表单域中的input或者select等等需要是email格式，则参数为xxx=email,数字格式为xxx=int,其他非空文本格式则为xxx=text,验证多个表单域用&amp;将其连接起来，如name=text&amp;mail=email&amp;age=int</p>
<p>案例可以参见<a href="http://host.storyday.com" target="_blank">生活点滴虚拟主机</a>的注册表单案例，当然，这个案例更加智能，但是不如本文的代码效率高和灵活，所以才有了这篇日志。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2009/2272_share-section-of-jquery-based-form-validation-javascript.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>如何设计一个能用google翻译多语言的站点</title>
		<link>http://www.storyday.com/html/y2009/2235_can-google-how-to-design-a-multi-language-translation-of-the-site.html</link>
		<comments>http://www.storyday.com/html/y2009/2235_can-google-how-to-design-a-multi-language-translation-of-the-site.html#comments</comments>
		<pubDate>Mon, 02 Mar 2009 04:55:34 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.storyday.com/?p=2235</guid>
		<description><![CDATA[很多时候，我们需要做一个多语言的站点，cosbeta认为目前多语言网站的解决方案比较多，比如：

做几个不同的分站，通过用户第一次的选择将用户定位到相应语言的分站；
编辑网站内容的时候，添加多种语言，然后通过用户的选择从数据库中获取对应的语言；
添加一个google翻译按钮，用户自行选择google翻译查看不同语言的版本；
利用google 翻译接口，通过js实时翻译网页文字，cosbeta今天打算要介绍的就是这种方法；

上面4种方法的优缺点我这里就不多描述了，相信大家都很清楚了。应客户的要求，再加上翻译方便和翻译的通用性的需求，cosbeta决定用第4种方法为客户解决多语言的问题。
最开始cosbeta的解决办法是想通过程序模拟客户端去直接读取google对当前页面翻译的内容，从而实现页面的多语言版本。比如用户访问http://storyday.com?p=1，当用户需要访问日语版时，cosbeta就将此页面通过php发送给google的网页翻译接口，然后将翻译的结果读取出来，显示在当前的页面上。然而后来cosbeta发现这种方式是不可取的，一方面google对客户端的限制比较严格，用php模拟客户端可能会导致数据获取的失败，另外一方面，google并没有推荐这种方式，所以很容易导致翻译失效。
后来cosbeta就转向了google的翻译API，配上jquery对Dom灵活的操作，很容易就解决了这个问题。
首先制作页面的时候，我将所有需要翻译的tag都添加了一个css，名为multilang,比如&#60;a href=&#8221;#&#8221; class=&#8221;multilang&#8221;&#62;关于我们&#60;/a&#62;，在网页的末尾用jquery遍历dom，逐一翻译然后替代原来的文本，按照下面的步骤操作，展示一个例子给大家：

添加google ajax api到网页的顶端,
&#60;script src="http://www.google.com/jsapi?key=GOOGLEAPI" type="text/javascript"&#62;&#60;/script&#62;
&#60;script language="Javascript" type="text/javascript"&#62;
//&#60;![CDATA[
google.load("jquery", "1.2.6");
google.load("language", "1");
//]]&#62;
&#60;/script&#62;这段代码同时将google的翻译接口和jquery js库引入了网页当中。代码中的GOOGLEAPI需要在这里申请。
给所有需要翻译的标签添加class=&#8221;multilang&#8221;，若是标签里面已经有class=&#8221;xxx&#8221;只需要变成 class=&#8221;xxx multilang&#8221;即可;
添加读写cookie的JS代码，目的是为了记住当前用户语言的选择：
var aCookie = document.cookie.split("; ");
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(CookieEleName)
{
var cookieValue = "";
if( aCookie ==null ) return cookieValue;
for (var i=0; i &#60; aCookie.length; i++){
var CookieArray = [...]]]></description>
			<content:encoded><![CDATA[<p>很多时候，我们需要做一个多语言的站点，<a href="http://www.storyday.com">cosbeta</a>认为目前多语言网站的解决方案比较多，比如：</p>
<ol>
<li>做几个不同的分站，通过用户第一次的选择将用户定位到相应语言的分站；</li>
<li>编辑网站内容的时候，添加多种语言，然后通过用户的选择从数据库中获取对应的语言；</li>
<li>添加一个google翻译按钮，用户自行选择google翻译查看不同语言的版本；</li>
<li>利用google 翻译接口，通过js实时翻译网页文字，<a href="http://www.storyday.com">cosbeta</a>今天打算要介绍的就是这种方法；</li>
</ol>
<p>上面4种方法的优缺点我这里就不多描述了，相信大家都很清楚了。应客户的要求，再加上翻译方便和翻译的通用性的需求，<a href="http://www.storyday.com">cosbeta</a>决定用第4种方法为客户解决多语言的问题。</p>
<p>最开始<a href="http://www.storyday.com">cosbeta</a>的解决办法是想通过程序模拟客户端去直接读取google对当前页面翻译的内容，从而实现页面的多语言版本。比如用户访问http://storyday.com?p=1，当用户需要访问日语版时，cosbeta就将此页面通过php发送给google的网页翻译接口，然后将翻译的结果读取出来，显示在当前的页面上。然而后来<a href="http://www.storyday.com">cosbeta</a>发现这种方式是不可取的，一方面google对客户端的限制比较严格，用php模拟客户端可能会导致数据获取的失败，另外一方面，google并没有推荐这种方式，所以很容易导致翻译失效。</p>
<p>后来cosbeta就转向了google的<a href="http://code.google.com/intl/zh-CN/apis/ajaxlanguage/documentation/">翻译API</a>，配上jquery对Dom灵活的操作，很容易就解决了这个问题。<span id="more-2235"></span></p>
<p>首先制作页面的时候，我将所有需要翻译的tag都添加了一个css，名为multilang,比如&lt;a href=&#8221;#&#8221; class=&#8221;multilang&#8221;&gt;关于我们&lt;/a&gt;，在网页的末尾用jquery遍历dom，逐一翻译然后替代原来的文本，按照下面的步骤操作，展示一个例子给大家：</p>
<ol>
<li>添加google ajax api到网页的顶端,<br />
<code>&lt;script src="http://www.google.com/jsapi?key=GOOGLEAPI" type="text/javascript"&gt;&lt;/script&gt;<br />
&lt;script language="Javascript" type="text/javascript"&gt;<br />
//&lt;![CDATA[<br />
google.load("jquery", "1.2.6");<br />
google.load("language", "1");<br />
//]]&gt;<br />
&lt;/script&gt;</code>这段代码同时将google的翻译接口和jquery js库引入了网页当中。代码中的GOOGLEAPI需要在<a href="http://code.google.com/intl/zh-CN/apis/ajaxsearch/signup.html" target="_blank">这里</a>申请。</li>
<li>给所有需要翻译的标签添加class=&#8221;multilang&#8221;，若是标签里面已经有class=&#8221;xxx&#8221;只需要变成 class=&#8221;xxx multilang&#8221;即可;</li>
<li>添加读写cookie的JS代码，目的是为了记住当前用户语言的选择：<br />
<code>var aCookie = document.cookie.split("; ");<br />
function createCookie(name,value,days) {<br />
if (days) {<br />
var date = new Date();<br />
date.setTime(date.getTime()+(days*24*60*60*1000));<br />
var expires = "; expires="+date.toGMTString();<br />
}<br />
else var expires = "";<br />
document.cookie = name+"="+value+expires+"; path=/";<br />
}<br />
function readCookie(CookieEleName)<br />
{<br />
var cookieValue = "";<br />
if( aCookie ==null ) return cookieValue;<br />
for (var i=0; i &lt; aCookie.length; i++){<br />
var CookieArray = aCookie[i].split("=");<br />
if (CookieEleName == CookieArray[0]){<br />
cookieValue = unescape(decodeURI(CookieArray[1]));<br />
}<br />
}<br />
return cookieValue;<br />
}<br />
</code></li>
<li>撰写google翻译函数<br />
<code>function trans(obj,lang){//调用google 翻译<br />
google.language.translate(obj.html(), "", lang, function(result) {<br />
if (!result.error) {<br />
var container = document.getElementById("translation");<br />
obj.html( result.translation );<br />
}<br />
});<br />
}<br />
function transMe(lang){//遍历dom，翻译整个页面<br />
$(".multilang").each(function(i){<br />
trans($(this),lang);    });<br />
}<br />
function initLang(){//定义初始化翻译，在页面调用的时候翻译<br />
var lang=readCookie('lang');<br />
if( lang.length &gt; 1){<br />
transMe(lang);<br />
}}<br />
function Sl(l){createCookie('lang',l,1000);transMe(l);}//定义函数sl=switchlanguage翻译本页，在需要翻译的地方调用这个js函数即可<br />
</code></li>
<li>引入上面的js，在页面最顶端<code>&lt;script&gt;window.onload=initLang;&lt;/script&gt;</code></li>
<li>至此，便可以随心所欲翻译页面了。其实原理很简单：1.引入jquery和google 翻译库 2.编写翻译函数，用户点击对应语言的时候翻译当前页，并且记录当前的lang到cookie 3.初始化页面的时候根据cookie选择性的翻译当前页面。</li>
</ol>
<p>下面的iframe是案例：<iframe src="http://www.storyday.com/wp-content/uploads/2009/03/lang.html" width="400" height="200"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2009/2235_can-google-how-to-design-a-multi-language-translation-of-the-site.html/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>广州电信ADSL继续抽风</title>
		<link>http://www.storyday.com/html/y2009/2146_guangzhou-telecom-adsl-continue-ventilation.html</link>
		<comments>http://www.storyday.com/html/y2009/2146_guangzhou-telecom-adsl-continue-ventilation.html#comments</comments>
		<pubDate>Sun, 04 Jan 2009 12:48:15 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[互联网事]]></category>
		<category><![CDATA[adsl]]></category>
		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://www.storyday.com/?p=2146</guid>
		<description><![CDATA[还是记录一下吧，看看电信什么时候才能正常
以前的记录如下

 广州电信封路由-ADSL老是断网  2008-01-26
Bluehost这两天奇慢无比2008-04-10
广州电信ADSL的3月经又来了2008-06-28
广州电信ADSL继续抽风 2009-01-04

Reply from 220.181.31.8: bytes=32 time=42ms TTL=245
Reply from 220.181.31.8: bytes=32 time=42ms TTL=245
Reply from 220.181.31.8: bytes=32 time=41ms TTL=245
Reply from 220.181.31.8: bytes=32 time=42ms TTL=245
Reply from 220.181.31.8: bytes=32 time=41ms TTL=245
Reply from 220.181.31.8: bytes=32 time=43ms TTL=245
Reply from 220.181.31.8: bytes=32 time=41ms TTL=245
Reply from 220.181.31.8: bytes=32 time=44ms TTL=245
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Reply [...]]]></description>
			<content:encoded><![CDATA[<p>还是记录一下吧，看看电信什么时候才能正常<br />
以前的记录如下</p>
<ol>
<li><a href="../html/html/y2008/1418_guangzhou-always-broken-adsl-network.html"> 广州电信封路由-ADSL老是断网 </a> 2008-01-26</li>
<li><a href="../html/html/y2008/1494_bluehost-slow-down.html">Bluehost这两天奇慢无比</a>2008-04-10</li>
<li><a href="../html/html/y2008/1580_adsl-three-menstrual-came-again.html">广州电信ADSL的3月经又来了</a>2008-06-28</li>
<li><a href="http://www.storyday.com/html/y2009/2146_guangzhou-telecom-adsl-continue-ventilation.html">广州电信ADSL继续抽风</a> 2009-01-04</li>
</ol>
<p>Reply from 220.181.31.8: bytes=32 time=42ms TTL=245<br />
Reply from 220.181.31.8: bytes=32 time=42ms TTL=245<br />
Reply from 220.181.31.8: bytes=32 time=41ms TTL=245<br />
Reply from 220.181.31.8: bytes=32 time=42ms TTL=245<br />
Reply from 220.181.31.8: bytes=32 time=41ms TTL=245<br />
Reply from 220.181.31.8: bytes=32 time=43ms TTL=245<br />
Reply from 220.181.31.8: bytes=32 time=41ms TTL=245<br />
Reply from 220.181.31.8: bytes=32 time=44ms TTL=245<br />
Request timed out.<br />
Request timed out.<br />
Request timed out.<br />
Request timed out.<br />
Request timed out.<br />
Reply from 220.181.31.8: bytes=32 time=42ms TTL=245<br />
Request timed out.<br />
Reply from 220.181.31.8: bytes=32 time=60ms TTL=245<br />
Reply from 220.181.31.8: bytes=32 time=42ms TTL=245<br />
Request timed out.<br />
Reply from 220.181.31.8: bytes=32 time=92ms TTL=245<br />
Request timed out.<br />
Reply from 220.181.31.8: bytes=32 time=48ms TTL=245<br />
Request timed out.<br />
Reply from 220.181.31.8: bytes=32 time=240ms TTL=245<br />
Request timed out.</p>
<p>Ping statistics for 220.181.31.8:<br />
Packets: Sent = 302, Received = 227, Lost = 75 (24% loss),<br />
Approximate round trip times in milli-seconds:<br />
Minimum = 41ms, Maximum = 628ms, Average = 52ms<br />
Control-C</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2009/2146_guangzhou-telecom-adsl-continue-ventilation.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>javascript and HttpOnly cookies</title>
		<link>http://www.storyday.com/html/y2008/2120_javascript-and-httponly-cookies.html</link>
		<comments>http://www.storyday.com/html/y2008/2120_javascript-and-httponly-cookies.html#comments</comments>
		<pubDate>Sat, 20 Dec 2008 08:42:41 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.storyday.com/?p=2120</guid>
		<description><![CDATA[对于很多只依赖于cookie验证的网站来说，HttpOnly cookies是一个很好的解决方案，在支持HttpOnly cookies的浏览器中（IE6以上，FF3.0以上），javascript是无法读取和修改HttpOnly cookies，或许这样可让网站用户验证更加安全。
wikipedia中对于httpOnly的描述如下：
`HttpOnly&#8217;:
Set-Cookie: RMID=732423sdfs73242; expires=Fri, 31-Dec-2010 23:59:59 GMT; path=/; domain=.example.net; HttpOnly
When the browser receives such a cookie, it is supposed to use it as usual in the following HTTP exchanges, but not to make it visible to client-side scripts.[21] The `HttpOnly` flag is not part of any standard, and is not implemented in all [...]]]></description>
			<content:encoded><![CDATA[<p>对于很多只依赖于cookie验证的网站来说，HttpOnly cookies是一个很好的解决方案，在支持HttpOnly cookies的浏览器中（IE6以上，FF3.0以上），javascript是无法读取和修改HttpOnly cookies，或许这样可让网站用户验证更加安全。</p>
<p>wikipedia中对于httpOnly的描述如下：</p>
<blockquote><p>`HttpOnly&#8217;:</p>
<p>Set-Cookie: RMID=732423sdfs73242; expires=Fri, 31-Dec-2010 23:59:59 GMT; path=/; domain=.example.net; HttpOnly</p>
<p>When the browser receives such a cookie, it is supposed to use it as usual in the following HTTP exchanges, but not to make it visible to client-side scripts.[21] The `HttpOnly` flag is not part of any standard, and is not implemented in all browsers. Note that there is currently no prevention of reading or writing the session cookie via a XMLHTTPRequest.[36]</p></blockquote>
<p>所以，若是网站基于cookie而非服务器端的验证，请最好加上HttpOnly，当然，目前这个属性还不属于任何一个标准，也不是所有的浏览器支持，另外知名的wordpress程序也已经更改了cookie的属性为httpOnly。</p>
<p>javascript无法读取HttpOnly cookies，若想在js中获取cookie的属性该如何处理呢？</p>
<p><a href="http://www.storyday.com">cosbeta</a>也没有什么比较好的办法，所以只有告诉大家都绝招：还得动用服务器端脚本读出cookie，然后用输出js代码，或者用ajax去获取服务器端程序读出的cookie值。</p>
<p>于是<a href="http://wordpress.org/extend/plugins/cos-html-cache/">cos-html-cache</a>因此升级了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2008/2120_javascript-and-httponly-cookies.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>该优化一下这个blog了</title>
		<link>http://www.storyday.com/html/y2008/1944_the-optimization-of-this-blog.html</link>
		<comments>http://www.storyday.com/html/y2008/1944_the-optimization-of-this-blog.html#comments</comments>
		<pubDate>Fri, 26 Sep 2008 01:32:31 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://www.storyday.com/?p=1944</guid>
		<description><![CDATA[朋友在gtalk提醒我，说我的blog搜索引擎不太友好，需要改善了，并且建议我site:storyday.com看看。果不其然，不看不知道，一看吓一跳，列出来的内容居然全部是本blog的导航内容，看来确实一点都不友好。那么就对症下药吧，既然google显示的全部是导航的内容，那么我把导航的html移动到底部应该就可以了吧，于是开始动刀，将header上的导航代码移动到 footer中，然后在footer中加上一句
 $("#menu-ct").html( $("#cos-wp-menu").html()  );
这样导航依旧显示在原来的位置，但是html代码确在最后了，希望这样能有点作用 ，马上进入google website管理员工具，把蜘蛛的抓取时间设为最快，看看多久能有效果
]]></description>
			<content:encoded><![CDATA[<p>朋友在gtalk提醒我，说我的blog搜索引擎不太友好，需要改善了，并且建议我<a href="http://www.google.cn/search?complete=1&amp;hl=zh-CN&amp;newwindow=1&amp;rlz=1B3GGGL_zh-CNUS280US280&amp;q=site:storyday.com&amp;start=10&amp;sa=N">site:storyday.com</a>看看。果不其然，不看不知道，一看吓一跳，列出来的内容居然全部是本blog的导航内容，看来确实一点都不友好。那么就对症下药吧，既然google显示的全部是导航的内容，那么我把导航的html移动到底部应该就可以了吧，于是开始动刀，将header上的导航代码移动到 footer中，然后在footer中加上一句<br />
<code> $("#menu-ct").html( $("#cos-wp-menu").html()  );</code><br />
这样导航依旧显示在原来的位置，但是html代码确在最后了，希望这样能有点作用 ，马上进入google website管理员工具，把蜘蛛的抓取时间设为最快，看看多久能有效果</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2008/1944_the-optimization-of-this-blog.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Jquery树形菜单的实现</title>
		<link>http://www.storyday.com/html/y2008/1812_jquery-tree-menu.html</link>
		<comments>http://www.storyday.com/html/y2008/1812_jquery-tree-menu.html#comments</comments>
		<pubDate>Wed, 03 Sep 2008 12:01:16 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.storyday.com/?p=1812</guid>
		<description><![CDATA[jQuey这个东西很好很强大，用jQuery操作DOM简直是易如反掌。这不，刚才icemapro小弟给我留言，希望我能写一个jQuery的树形菜单，在强大的就Query的帮助下，仅仅花了大约10分钟就完成了，其中还有大约7分钟在考虑css的问题，所以熟悉jquery可是对你很有帮助的哦，废话不多说，下面发布代码，讲解方式依然在注释中体现：
菜单的html代码如下，你可以根据需要进行扩展：


storyday.com
第一级目录

iceman
第2级目录
第2级目录

第3级目录
第3级目录




cosbeta
生活点滴
江东


我想上面的html代码应该不用解释了吧，否则这篇文章你也没有看得必要了哈，下面是css的实现，其实css是最难搞的，目前搞定是实现目录式树形，其他树状也是很简单的，无非就是改变一下css

 a:link,a:visited{font-size:12px;
color:#094477;text-decoration:none;
}
a:link:hover,a:visited:hover{
color:#000cf;text-decoration:underline;
}
ul.folder{padding:0;margin:0;list-style:none;/*重置ul的margin和padding，否则打死都无法兼容FF和IE*/}
li.folder{
background:#fff url(folderbg.png) no-repeat 0 0;padding:0px 0 0px 14px;
margin:0 2px;
text-indent:20px;
/*folder背景，目前放到是windows目录背景，如果是其他树形，用其他背景图片替代即可*/
}
li.folder-op{background:#fff url(folderbg-op.png) no-repeat 0 0;}
.disnone{
display:none;
}/*这是一个公共的css class，表示隐藏该元素*/

下面开始介绍重点，那就是js的实现，可能这个重点会让你失望，毕竟代码才那么简单的几行，当然在运用jquery之前肯定是要引入jquery库文件的，本例子中直接引用的本blog（生活点滴）中的jquery库：
  
下面是js代码，解释依然在注释中：
function Exp(obj){
		var html_element = $(obj).parent('.folder');/*获取当前点击的父dom，在本例子中获取的dom节点将是 “第一级目录所在的li.folder”*/
		var sub_element =  $(html_element).children(".folder"); ;/*根据当前的父dom，获取本级的子dom*/
		if( html_element.attr('class').indexOf('folder-op') != -1 ){
/*css class .folder-op表示当前已经展开的类，如果展开，则前面的+背景变成-背景，具体可以在后面的例子中看到
如果class中含有该类，则表示当前已经展开，所以下面的两行的任务是：1.隐藏该目录，2.remove掉此css class
*/
			html_element.removeClass('folder-op');
			sub_element.hide();
			}
			else{
/*否则，添加表示目录已经展开的类，展示该目录*/
			html_element.addClass('folder-op');
			sub_element.show(500);
			}
		}
对，对于js就只需要上面的几行，太简单了，对吧,下面是例子：

上面例子中包含文件有：tree-jquery！
有些细节是在css中控制的，所以如果你需要其他样式请自行修改css，如下面的另外一个例子：（例子中的虚线不完美，特别没个分支最后的那一行, 所以，在css的运用上发挥你的聪明才智吧）：

&#8212;&#8212;&#8212;&#8212;end&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
]]></description>
			<content:encoded><![CDATA[<p>jQuey这个东西很好很强大，用jQuery操作DOM简直是易如反掌。这不，刚才icemapro小弟给我留言，希望我能写一个jQuery的树形菜单，在强大的就Query的帮助下，仅仅花了大约10分钟就完成了，其中还有大约7分钟在考虑css的问题，所以熟悉jquery可是对你很有帮助的哦，废话不多说，下面发布代码，讲解方式依然在注释中体现：<br />
菜单的html代码如下，你可以根据需要进行扩展：<br />
<code>
<ul class="folder">
<li class="folder"><a href="#root">storyday.com</a></li>
<li class="folder"><a href="#root" onClick="Exp(this)">第一级目录</a>
<ul class="folder disnone" >
<li class="folder" ><a href="#">iceman</a></li>
<li class="folder" ><a href="#">第2级目录</a></li>
<li class="folder" ><a href="#root" onClick="Exp(this)">第2级目录</a>
<ul class="folder disnone">
<li class="folder" ><a href="#">第3级目录</a></li>
<li class="folder" ><a href="#">第3级目录</a></li>
</ul>
</li>
</ul>
</li>
<li class="folder"><a href="#root" >cosbeta</a></li>
<li class="folder"><a href="#root" >生活点滴</a></li>
<li class="folder"><a href="#root" >江东</a></li>
</ul>
<p></code><br />
我想上面的html代码应该不用解释了吧，否则这篇文章你也没有看得必要了哈，下面是css的实现，其实css是最难搞的，目前搞定是实现目录式树形，其他树状也是很简单的，无非就是改变一下css<br />
<code><br />
 a:link,a:visited{font-size:12px;<br />
color:#094477;text-decoration:none;<br />
}<br />
a:link:hover,a:visited:hover{<br />
color:#000cf;text-decoration:underline;<br />
}<br />
ul.folder{padding:0;margin:0;list-style:none;/*重置ul的margin和padding，否则打死都无法兼容FF和IE*/}<br />
li.folder{<br />
background:#fff url(folderbg.png) no-repeat 0 0;padding:0px 0 0px 14px;<br />
margin:0 2px;<br />
text-indent:20px;<br />
/*folder背景，目前放到是windows目录背景，如果是其他树形，用其他背景图片替代即可*/<br />
}<br />
li.folder-op{background:#fff url(folderbg-op.png) no-repeat 0 0;}<br />
.disnone{<br />
display:none;<br />
}/*这是一个公共的css class，表示隐藏该元素*/<br />
</code><br />
下面开始介绍重点，那就是js的实现，可能这个重点会让你失望，毕竟代码才那么简单的几行，当然在运用jquery之前肯定是要引入jquery库文件的，本例子中直接引用的本blog（生活点滴）中的jquery库：<br />
<code> <script type="text/javascript"  src="http://www.storyday.com/wp-content/themes/cosxp/common.js.php"></script> </code><br />
下面是js代码，解释依然在注释中：<br />
<code>function Exp(obj){<br />
		var html_element = $(obj).parent('.folder');/*获取当前点击的父dom，在本例子中获取的dom节点将是 “第一级目录所在的li.folder”*/<br />
		var sub_element =  $(html_element).children(".folder"); ;/*根据当前的父dom，获取本级的子dom*/<br />
		if( html_element.attr('class').indexOf('folder-op') != -1 ){<br />
/*css class .folder-op表示当前已经展开的类，如果展开，则前面的+背景变成-背景，具体可以在后面的例子中看到<br />
如果class中含有该类，则表示当前已经展开，所以下面的两行的任务是：1.隐藏该目录，2.remove掉此css class<br />
*/<br />
			html_element.removeClass('folder-op');<br />
			sub_element.hide();<br />
			}<br />
			else{<br />
/*否则，添加表示目录已经展开的类，展示该目录*/<br />
			html_element.addClass('folder-op');<br />
			sub_element.show(500);<br />
			}<br />
		}</code><br />
对，对于js就只需要上面的几行，太简单了，对吧,下面是例子：<span id="more-1812"></span><br />
<iframe src="http://www.storyday.com/wp-content/uploads/2008/09/tree-jquery.html" frameborder="0" width="400" height="150"></iframe><br />
上面例子中包含文件有：<a href="http://www.storyday.com/wp-content/uploads/2008/09/folderbg-op.png"><img src="http://www.storyday.com/wp-content/uploads/2008/09/folderbg-op.png" alt="" title="folderbg-op" width="31" height="14" class="alignnone size-medium wp-image-1815" /></a><a href="http://www.storyday.com/wp-content/uploads/2008/09/folderbg.png"><img src="http://www.storyday.com/wp-content/uploads/2008/09/folderbg.png" alt="" title="folderbg" width="31" height="14" class="alignnone size-medium wp-image-1814" /></a><a href='http://www.storyday.com/wp-content/uploads/2008/09/tree-jquery.html'>tree-jquery</a>！<br />
有些细节是在css中控制的，所以如果你需要其他样式请自行修改css，如下面的另外一个例子：（例子中的虚线不完美，特别没个分支最后的那一行, 所以，在css的运用上发挥你的聪明才智吧）：<br />
<iframe src="http://www.storyday.com/wp-content/uploads/2008/09/tree-jquery-2.html"    frameborder="0" width="400" height="150"></iframe><br />
&#8212;&#8212;&#8212;&#8212;end&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2008/1812_jquery-tree-menu.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>javascript初级教程2：操作文档对象</title>
		<link>http://www.storyday.com/html/y2008/1616_js-course-2.html</link>
		<comments>http://www.storyday.com/html/y2008/1616_js-course-2.html#comments</comments>
		<pubDate>Thu, 17 Jul 2008 12:22:05 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tutor]]></category>

		<guid isPermaLink="false">http://www.storyday.com/?p=1616</guid>
		<description><![CDATA[传说在很久很久以前，我打算写一下javascript入门到文章，结果仅仅在开了一个头之后便忘记续写了。今天晚上，忘记把电池带回家了，做不了其他事情，于是乎抓紧时间补上后续的教程。
在上次的日志中，我谈到这样一个看法：服务器端程序是负责输出文本，也包括输出javascript，而javascript则是负责操作浏览器。今天我就大致的说一说javascript是如何操作浏览器的。在javascript中，我们可以将一切都看作对象（各位看官，别看见对象就害怕，其实js的这个对象没有那么恐怖）。首先我们来举一个通俗的例子，比如我们想叫一个小妹妹把一个饭碗举起来，用javascript可以这样表达：
人.女人.小妹妹.右手.捧起(饭碗)。
我们看看这代代码，首先找到对象人.然后引用人的成员.女人，最后定位到右手，引用函数“捧起”，参数就是饭碗了。
好了，所以，你知道了一些常见的对象表述，便可以灵活的运用js来操作了。下面介绍一下常用的操作：
alert('hi');//警示消息，内容是"hi"，当然hi也可以是其他变量
window.close();//关闭窗口
document.getElementById("my-id").value = "123";//给id="my-id"这个元素赋值 .value只对表单有效
document.getElementById("my-id").innerHTML = "123";//如果 id元素是html区域，如div span li等等
document.getElementById("my-id").innerHTML = "这里也可以是html代码";
是不是很简单呢，注意上面代码中大小写不能错误！
今天就写这么简单的几行，因为电池快用尽了，其实知道对象操作的基本思想之后，你甚至可以直接用javascript框架了。
]]></description>
			<content:encoded><![CDATA[<p>传说在很久很久以前，我打算写一下javascript入门到文章，结果仅仅在<a href="http://www.storyday.com/html/y2007/826_js-course-1.html">开了一个头</a>之后便忘记续写了。今天晚上，忘记把电池带回家了，做不了其他事情，于是乎抓紧时间补上后续的教程。</p>
<p>在上次的日志中，我谈到这样一个看法：服务器端程序是负责输出文本，也包括输出javascript，而javascript则是负责操作浏览器。今天我就大致的说一说javascript是如何操作浏览器的。在javascript中，我们可以将一切都看作对象（各位看官，别看见对象就害怕，其实js的这个对象没有那么恐怖）。首先我们来举一个通俗的例子，比如我们想叫一个小妹妹把一个饭碗举起来，用javascript可以这样表达：</p>
<p><code>人.女人.小妹妹.右手.捧起(饭碗)。</code></p>
<p>我们看看这代代码，首先找到对象人.然后引用人的成员.女人，最后定位到右手，引用函数“捧起”，参数就是饭碗了。</p>
<p>好了，所以，你知道了一些常见的对象表述，便可以灵活的运用js来操作了。下面介绍一下常用的操作：<br />
<code>alert('hi');//警示消息，内容是"hi"，当然hi也可以是其他变量<br />
window.close();//关闭窗口<br />
document.getElementById("my-id").value = "123";//给id="my-id"这个元素赋值 .value只对表单有效<br />
document.getElementById("my-id").innerHTML = "123";//如果 id元素是html区域，如div span li等等<br />
document.getElementById("my-id").innerHTML = "<strong>这里也可以是html代码</strong>";</code><br />
是不是很简单呢，注意上面代码中大小写不能错误！</p>
<p>今天就写这么简单的几行，因为电池快用尽了，其实知道对象操作的基本思想之后，你甚至可以直接用javascript框架了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2008/1616_js-course-2.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>一个简单的画面切换例子</title>
		<link>http://www.storyday.com/html/y2008/1595_a-simple-example-of-the-screen-switch.html</link>
		<comments>http://www.storyday.com/html/y2008/1595_a-simple-example-of-the-screen-switch.html#comments</comments>
		<pubDate>Sun, 06 Jul 2008 10:06:31 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[网站技术]]></category>

		<guid isPermaLink="false">http://www.storyday.com/?p=1595</guid>
		<description><![CDATA[有了jQuery，一切都变得那么简单；
web编程难煞人，一只红杏出墙来；
切换不用flash，一只红杏出墙来；
上面的文不对题，不合逻辑，不过，不合逻辑是当今的主旋律，所以在写这个日志之前，我吟诗几首，做了几个俯卧撑，这才正二八经的开始。
下面这个效果大家都见过吧，比如迅雷的影片介绍，但是有很多是用flash来完成的，当然，也可以用html+css来完成
，下面是代码，具体的解释请看代码中的注释：


ul.option{list-style:none;margin:0;padding:0;
}
div.banner,div.link-area{z-index:0;
width:150px;height:100px;
background:url(001.jpg);/*给banner的一个默认的背景*/
}
#link-area{
/*用一个div专门负责链接指向*/
cursor:pointer;height:95px;
}
.opbar{
float:right;
}
/*下面是 1 2 3 的css样式表*/
ul.option li{display:block;width:16px;height:16px;background:#000;float:left;margin:1px;}
ul.option li a,ul.option li a:visited{display:block;margin:1px;background:#000;text-align:center;
text-decoration:none;
color:#fff;
font-size:12px;
}
ul.option li a:hover,a.current{font-weight:bold}




1
2
3







当然，整个切换过程比较生硬，不过利用jQuery的fade in fade out效果就可以轻松的实现柔和切换
thanks to pantao.name 发现了一个bug，已经修正，见注释部分。
]]></description>
			<content:encoded><![CDATA[<p>有了jQuery，一切都变得那么简单；</p>
<p>web编程难煞人，一只红杏出墙来；</p>
<p>切换不用flash，一只红杏出墙来；</p>
<p>上面的文不对题，不合逻辑，不过，不合逻辑是当今的主旋律，所以在写这个日志之前，我吟诗几首，做了几个俯卧撑，这才正二八经的开始。</p>
<p>下面这个效果大家都见过吧，比如迅雷的影片介绍，但是有很多是用flash来完成的，当然，也可以用html+css来完成<br />
<iframe src="http://www.storyday.com/wp-content/uploads/switch/demo.html?ok<br />
" width="250" height="160" frameborder="0"></iframe>，下面是代码，具体的解释请看代码中的注释：<span id="more-1595"></span><br />
<code><br />
<style>
ul.option{list-style:none;margin:0;padding:0;
}
div.banner,div.link-area{z-index:0;
width:150px;height:100px;
background:url(001.jpg);/*给banner的一个默认的背景*/
}
#link-area{
/*用一个div专门负责链接指向*/
cursor:pointer;height:95px;
}
.opbar{
float:right;
}
/*下面是 1 2 3 的css样式表*/
ul.option li{display:block;width:16px;height:16px;background:#000;float:left;margin:1px;}
ul.option li a,ul.option li a:visited{display:block;margin:1px;background:#000;text-align:center;
text-decoration:none;
color:#fff;
font-size:12px;
}
ul.option li a:hover,a.current{font-weight:bold}
</style>
<div class="banner" id="banner">
<div class="opbar">
<ul class="option">
<li><a href="#" onClick="swift(0)" id="a-0">1</a></li>
<li><a href="#" onClick="swift(1)" id="a-1">2</a></li>
<li><a href="#" onClick="swift(2)" id="a-2">3</a></li>
</ul></div>
<div id="link-area"></div>
</div>
<p><script language="javascript" src="http://www.storyday.com/wp-content/themes/cosxp/common.js.php"></script><br />
<script LANGUAGE="JavaScript">
<!--
var url = new Array("http://storyday.com","http://5bird.com","http:bloggermap.org");
//这些数组你可以用php从后台动态产生
var img = new Array("001.jpg","002.jpg","003.jpg");
//这个图片数组也同样可以通过php从后台产生
//上面才用的是全局变量</p>
<p>	function swift(op){		
		$("#banner").css("background","url("+img[op]+")");//更换背景
		$("a").removeClass("current");//将所有的a标签的 当前css去掉
		$("#a-" + op ).addClass("current");//将当前的css样式表添加到当前的点击的a标签中
                $("#link-area").unbind( "click" );//删除以前的绑定，防止一次点击弹出多个窗口
		$("#link-area").bind("click", function(){
			window.open( url[op] );
		});//绑定点击banner时打开的url</p>
<p>	}
$("#banner").css("background","url("+img[0]+")");//设置默认背景</p>
<p>var init_num = 0;//循环最初的值为0
//下面是循环函数
function autoSwicth(){
	init_num ++;
	if ( init_num > (url.length - 1 ))	{
		init_num = 0;
	}
	swift( init_num );
}</p>
<p>setInterval("autoSwicth()", 3000);//开启循环，程序每3秒执行一次
//-->
</script></code><br />
当然，整个切换过程比较生硬，不过利用jQuery的fade in fade out效果就可以轻松的实现柔和切换</p>
<p>thanks to <a href="pantao.name">pantao.name</a> 发现了一个bug，已经修正，见注释部分。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2008/1595_a-simple-example-of-the-screen-switch.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
