<?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>第8音 Design Evering &#187; javascript</title>
	<atom:link href="http://blog.d8in.com/posts/tag/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.d8in.com</link>
	<description>成功的产品=故事化设计+逻辑化思维+高效地执行</description>
	<lastBuildDate>Sat, 18 Jun 2011 08:46:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>为什么jquery如此简单易学</title>
		<link>http://blog.d8in.com/posts/284.html</link>
		<comments>http://blog.d8in.com/posts/284.html#comments</comments>
		<pubDate>Fri, 17 Apr 2009 02:15:01 +0000</pubDate>
		<dc:creator>xw</dc:creator>
				<category><![CDATA[产品设计]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://blog.d8in.com/posts/284.html</guid>
		<description><![CDATA[前段时间研究了一下jquery,发现jquery要其他类型的库要容易学习的多，而且比较实用。有一天和一个朋友聊天，他也在学jquery，学习的感受也是和我一样。然后我就仔细的比较了一下jquery和其它的库，发现jquery在实用和易学使用上确实有自己的特点。 一、封装的恰到好处 封装一个库最难的就是一个尺度问题，就是说封装的层次过于底的话，那么应用到项目的时候就会发现很多东西需要自己再写，还是很麻烦。但是封装的过于高层，做项目的时候又不是很灵活。而jquery正好是取得了一个中间点，把一般项目中最最常用的函数封装进去，同时不是过于底层，也不是过于高层。正合适的位置上。所以一般用jquery有一种特别舒服的感觉。 看过《精通javascript》书的人可能会发现，其实那本书就是写jquery是怎么构建起来的。我们通过那本书可以发现，作者完全就是从实际工作中总结经验，最终慢慢形成了一个jquery。 二、像写css一样写javascript 我一直都有做页面重构工作，当我开始学习jquery的时候有种倍感亲切的感觉，写着写着突然发现，jquery的书写方式和css的书写方式十分类似，有些时候就有一种写css的感觉。再看看yui的的书写方式，十分的java，命名空间，声明变量~~~这些在jquery里面通通部不用。你只需要告诉一个dom对象该做什么即可，就和css告诉一个dom对象该怎么显示一样。 三、天生就是为设计师设计的 web设计师对于javascript一直都是比较头痛的，但是有些时候又不得不做javascript的工作，那么赶快去学jquery吧，jquery貌似就是为web设计师设计的，不需要懂什么循环，什么变量，只需要简单的写几行类似于css的代码，酷炫的效果马上就会展现在眼前，我相信你之需要花几个小时仔细研究研究jquery就会有意想不到的收获。甚至大呼我也会javascript了。 说了这么多，虽然jquery很容易学，但是如果想彻底的精通也不是一件容易的事情，而且虽然jquery的书写方式很简单，但是javascript毕竟还是一门程序语言，所以要想用好还是要学习一些基础的javascript语法和规范，但是jquery起码它会给你一个好的开始，所以为了这个好的开始，那些依然困惑于javascript的设计师们赶快行动吧。]]></description>
			<content:encoded><![CDATA[<p><img src="http://farm4.static.flickr.com/3412/3437956368_bcee42b4c8.jpg" style="DISPLAY: inline" height="276" width="500"/></p>
<p>前段时间研究了一下jquery,发现jquery要其他类型的库要容易学习的多，而且比较实用。有一天和一个朋友聊天，他也在学jquery，学习的感受也是和我一样。然后我就仔细的比较了一下jquery和其它的库，发现jquery在实用和易学使用上确实有自己的特点。</p>
<p><strong>一、封装的恰到好处</strong> <br/>封装一个库最难的就是一个尺度问题，就是说封装的层次过于底的话，那么应用到项目的时候就会发现很多东西需要自己再写，还是很麻烦。但是封装的过于高层，做项目的时候又不是很灵活。而jquery正好是取得了一个中间点，把一般项目中最最常用的函数封装进去，同时不是过于底层，也不是过于高层。正合适的位置上。所以一般用jquery有一种特别舒服的感觉。 <br/>看过《精通javascript》书的人可能会发现，其实那本书就是写jquery是怎么构建起来的。我们通过那本书可以发现，作者完全就是从实际工作中总结经验，最终慢慢形成了一个jquery。</p>
<p> <span id="more-284"></span>
<p><strong>二、像写css一样写javascript <br/></strong> 我一直都有做页面重构工作，当我开始学习jquery的时候有种倍感亲切的感觉，写着写着突然发现，jquery的书写方式和css的书写方式十分类似，有些时候就有一种写css的感觉。再看看yui的的书写方式，十分的java，命名空间，声明变量~~~这些在jquery里面通通部不用。你只需要告诉一个dom对象该做什么即可，就和css告诉一个dom对象该怎么显示一样。 <br/><br/><strong>三、天生就是为设计师设计的</strong> <br/>web设计师对于javascript一直都是比较头痛的，但是有些时候又不得不做javascript的工作，那么赶快去学jquery吧，jquery貌似就是为web设计师设计的，不需要懂什么循环，什么变量，只需要简单的写几行类似于css的代码，酷炫的效果马上就会展现在眼前，我相信你之需要花几个小时仔细研究研究jquery就会有意想不到的收获。甚至大呼我也会javascript了。</p>
<p>说了这么多，虽然jquery很容易学，但是如果想彻底的精通也不是一件容易的事情，而且虽然jquery的书写方式很简单，但是javascript毕竟还是一门程序语言，所以要想用好还是要学习一些基础的javascript语法和规范，但是jquery起码它会给你一个好的开始，所以为了这个好的开始，那些依然困惑于javascript的设计师们赶快行动吧。 <br/></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.d8in.com/posts/284.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Aptana Jaxer</title>
		<link>http://blog.d8in.com/posts/181.html</link>
		<comments>http://blog.d8in.com/posts/181.html#comments</comments>
		<pubDate>Thu, 24 Jan 2008 09:43:37 +0000</pubDate>
		<dc:creator>xw</dc:creator>
				<category><![CDATA[产品设计]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[Aptana]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Jaxer]]></category>

		<guid isPermaLink="false">http://blog.d8in.com/posts/181.html</guid>
		<description><![CDATA[今天用Aptana 有了新的更新，软件版本更新到了1.1同时推出一个重要的功能就是Aptana自创的Jaxer，号称是世界上第一个Ajax服务端，虽然是1.0版本，但是发现网站上的资料库已经相当健全，而且还有不少的视频演示。 引用一段官方的对Jaxer的说明翻译： Jaxer改变了这一切，它是世界上第一个真正的Ajax服务器。在Jaxer里面, HMTL, CSS,Javascript都是它的其中一个对象，就象XMLHttpRequests, JSON, DOM一样。并且作为服务器，它提供了进入数据库、档案和网站建设，以及服务器日志、进程管理、安全性、可扩展性和整合了API。 其实javascript本身是具有服务端运行的属性的，譬如下面这段代码： 客户端运行 &#60;script type=&#34;text/javascript&#34;&#62; &#160; &#160; document.write(&#34;hello word&#34;); &#60;/script&#62; 服务端运行 &#60;script type=&#34;text/javascript&#34; runat=&#34;server&#34;&#62; &#160; &#160; document.write(&#34;hello word&#34;); &#60;/script&#62; 只要 script声明的时候是runat=&#8221;server&#8221;，就表示在服务端运行，这样的写法其实稍微喝.net类似。而且javascript本身也是可以调用数据库做一些稍微复杂的操作的。但是代码十分繁琐，Jaxer通过再次封装同时加入一些新的功能在里面，就是javascript语言在服务端的功能大大增强。 看下面一段示例代码: Enter and number between 5 and 50:&#60;input id=&#34;number&#34; size=&#34;10&#34; type=&#34;text&#34; /&#62; &#60;input&#160;type=&#34;button&#34; value=&#34;submit&#34; onclick=&#34;SubmitNumber()&#34; /&#62; &#160; &#60;script&#160;type=&#34;text/javascript&#34; runat=&#34;server&#34;&#62; &#160; &#160; var count =Jaxer.File.read(&#34;count.txt&#34;); &#160; &#160; document.getElementById(&#34;number&#34;).value=count; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/xwxw/2215682109/" title="jaxer by xwgemini, on Flickr"><img src="http://farm3.static.flickr.com/2350/2215682109_91df01d3bc_o.jpg" width="380" height="90" alt="jaxer" /></a></p>
<p>今天用Aptana 有了新的更新，软件版本更新到了1.1同时推出一个重要的功能就是Aptana自创的Jaxer，号称是世界上第一个Ajax服务端，虽然是1.0版本，但是发现网站上的资料库已经相当健全，而且还有不少的视频演示。<br />
引用一段官方的对Jaxer的说明翻译：</p>
<blockquote><p>Jaxer改变了这一切，它是世界上第一个真正的Ajax服务器。在Jaxer里面, HMTL, CSS,Javascript都是它的其中一个对象，就象XMLHttpRequests, JSON, DOM一样。并且作为服务器，它提供了进入数据库、档案和网站建设，以及服务器日志、进程管理、安全性、可扩展性和整合了API。</p></blockquote>
<p>其实javascript本身是具有服务端运行的属性的，譬如下面这段代码：<br />
<strong>客户端运行</strong></p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; document.write(&quot;hello word&quot;);</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p><strong>服务端运行</strong></p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">runat</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">server</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; document.write(&quot;hello word&quot;);</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p><span id="more-181"></span><br />
只要 script声明的时候是runat=&#8221;server&#8221;，就表示在服务端运行，这样的写法其实稍微喝.net类似。而且javascript本身也是可以调用数据库做一些稍微复杂的操作的。但是代码十分繁琐，Jaxer通过再次封装同时加入一些新的功能在里面，就是javascript语言在服务端的功能大大增强。</p>
<p>看下面一段示例代码:</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Gray;">Enter and number between 5 and 50:</span><span style="color: Olive;">&lt;</span><span style="color: Green;">input</span><span style="color: Gray;"> </span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">number</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">size</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">10</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">input</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">button</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">submit</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">onclick</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">SubmitNumber()</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">runat</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">server</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; var count =Jaxer.File.read(&quot;count.txt&quot;);</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; document.getElementById(&quot;number&quot;).value=count;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; function saveNumber(number){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; if (validateNumber(parseInt(number))) {</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Jaxer.File.write(&quot;count.txt&quot;,number);</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; saveNumber.proxy=true;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; function SubmitNumber(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; var currentValue=document.getElementById(&quot;number&quot;).value;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; if(validateNumber(parseInt(currentValue))){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; saveNumber(currentValue);</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alert(&quot;Your number is save&quot;)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; else{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alert(&quot;Your number is out of range&quot;)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">runat</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">both</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; function validateNumber(number){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; if(number</span><span style="color: Olive;">&lt;</span><span style="color: Green;">5</span><span style="color: Gray;">||</span><span style="color: #00008b;">number</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">50){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return false;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; else{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return true;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; }</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>从代码中可以看出，客户端和服务端的数据通信无阻隔，想必是最大的优势。用一门语言可以写服务端也写客户端，可以随意设定语句是在服务端运行还是客户端运行，还是服务和客户端都运行。虽然现在Jaxer刚刚发布，功能还不是很强大，不过确实试验一下还是蛮有意思的东西。</p>
<p><a href="http://www.flickr.com/photos/xwxw/2216450522/" title="page_flow_diagram by xwgemini, on Flickr"><img src="http://farm3.static.flickr.com/2102/2216450522_ee519caa86_o.png" width="380" alt="page_flow_diagram" /></a></p>
<ul>
<li>Write entire applications or presentation layers in Ajax </li>
<li>Full DOM and JavaScript on the server</li>
<li>Seamless communications between browser and server</li>
<li>Access existing pages written in other languages like PHP, Java, or Ruby on Rails</li>
<li>Share validation code on the browser and server</li>
<li>Database, file, and socket access from JavaScript</li>
<li>Open-source, standards-based, and uses the APIs you already know</li>
</ul>
<p><strong>相关资料：</strong><br />
<a href="http://aptana.com/jaxer/">Jaxer 官方网站</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.d8in.com/posts/181.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DOMtab的基本使用方法以及下载地址和完整演示</title>
		<link>http://blog.d8in.com/posts/38.html</link>
		<comments>http://blog.d8in.com/posts/38.html#comments</comments>
		<pubDate>Mon, 26 Feb 2007 09:44:20 +0000</pubDate>
		<dc:creator>xw</dc:creator>
				<category><![CDATA[产品设计]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[前端]]></category>

		<guid isPermaLink="false">http://blog.d8in.com/posts/38.html</guid>
		<description><![CDATA[一.什么是DOMtab DOMtab是一个用javascipt制作的通用可扩展的tab切换显示隐藏内容快的web控件。 二.怎么使用DOMtab 1.在页面的 &#60;head&#62;&#60;/head&#62; 区域加上 &#60;script type=&#34;text/javascript&#34; src=&#34;domtab.js&#34;&#62;&#60;/script&#62; 2.在页面主体的 &#60;body&#62;&#60;/body&#62; 部分加上 &#60;div class=&#34;domtab&#34;&#62; &#160;&#60;ul class=&#34;domtabs&#34;&#62; &#160;&#60;li&#62;&#60;a href=&#34;#t1&#34;&#62;Test 1&#60;/a&#62;&#60;/li&#62; &#160;&#60;li&#62;&#60;a href=&#34;#t2&#34;&#62;Test 2&#60;/a&#62;&#60;/li&#62; [idea] [idea] [... and so on ...] &#160;&#60;/ul&#62; &#160;&#60;div&#62; &#160;&#60;h2&#62;&#60;a name=&#34;t1&#34; id=&#34;t1&#34;&#62;Proof 1&#60;/a&#62;&#60;/h2&#62; &#160;&#60;p&#62;Test to prove that more than one menu is possible&#60;/p&#62; &#160;&#60;p&#62;&#60;a href=&#34;#top&#34;&#62;back to menu&#60;/a&#62;&#60;/p&#62; &#160;&#60;/div&#62; &#160;&#60;div&#62; &#160;&#60;h2&#62;&#60;a name=&#34;t2&#34; id=&#34;t2&#34;&#62;Proof 2&#60;/a&#62;&#60;/h2&#62; [...]]]></description>
			<content:encoded><![CDATA[<p><strong>一.什么是DOMtab</strong><br />
DOMtab是一个用javascipt制作的通用可扩展的tab切换显示隐藏内容快的web控件。</p>
<p><strong>二.怎么使用DOMtab</strong><br />
1.在页面的
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">&lt;head&gt;&lt;/head&gt;</li></ol></div>
<p>区域加上</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">&lt;script type=&quot;text/javascript&quot; src=&quot;domtab.js&quot;&gt;&lt;/script&gt;</li></ol></div>
<p>2.在页面主体的
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">&lt;body&gt;&lt;/body&gt;</li></ol></div>
<p>部分加上</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">&lt;div class=&quot;domtab&quot;&gt;</li>
<li>&nbsp;&lt;ul class=&quot;domtabs&quot;&gt;</li>
<li>&nbsp;&lt;li&gt;&lt;a href=&quot;#t1&quot;&gt;Test 1&lt;/a&gt;&lt;/li&gt;</li>
<li>&nbsp;&lt;li&gt;&lt;a href=&quot;#t2&quot;&gt;Test 2&lt;/a&gt;&lt;/li&gt; [idea] [idea] </li>
<li>[... and so on ...]</li>
<li>&nbsp;&lt;/ul&gt;</li>
<li>&nbsp;&lt;div&gt;</li>
<li>&nbsp;&lt;h2&gt;&lt;a name=&quot;t1&quot; id=&quot;t1&quot;&gt;Proof 1&lt;/a&gt;&lt;/h2&gt;</li>
<li>&nbsp;&lt;p&gt;Test to prove that more than one menu is possible&lt;/p&gt;</li>
<li>&nbsp;&lt;p&gt;&lt;a href=&quot;#top&quot;&gt;back to menu&lt;/a&gt;&lt;/p&gt;</li>
<li>&nbsp;&lt;/div&gt;</li>
<li>&nbsp;&lt;div&gt;</li>
<li>&nbsp;&lt;h2&gt;&lt;a name=&quot;t2&quot; id=&quot;t2&quot;&gt;Proof 2&lt;/a&gt;&lt;/h2&gt;</li>
<li>&nbsp;&lt;p&gt;Test to prove that more than one menu is possible&lt;/p&gt;</li>
<li>&nbsp;&lt;p&gt;&lt;a href=&quot;#top&quot;&gt;back to menu&lt;/a&gt;&lt;/p&gt;</li>
<li>&nbsp;&lt;/div&gt;</li>
<li>[... and so on ...]</li>
<li>&lt;/div&gt;</li></ol></div>
<p><span id="more-38"></span><br />
然后定义各个class的样式就可以了，你也可以加class定义样式，但是代码的结构不能变化<br />
3.更改javascript中控件的属性<br />
tabClass:&#8217;domtab&#8217;, //目标区域的class名称<br />
listClass:&#8217;domtabs&#8217;, // 列表菜单的class名称<br />
activeClass:&#8217;active&#8217;, // 菜单激活状态下的class名称<br />
contentElements:&#8217;div&#8217;, // 循环内容区域的元素名称<br />
backToLinks:/#top/, // 设置返回顶部的参数<br />
printID:&#8217;domtabprintview&#8217;, // 显示所有区域内容的id名称<br />
showAllLinkText:&#8217;show all content&#8217;, // 显示所有区域的文字名称</p>
<p><strong>三.增加向前向后按钮</strong></p>
<p>1.在区域的起始class上多增加一个doprevnext</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">&lt;div class=&quot;domtab doprevnext&quot;&gt;</li>
<li>&nbsp;&lt;ul class=&quot;domtabs&quot;&gt;</li>
<li>&nbsp;&lt;li&gt;&lt;a href=&quot;#t1&quot;&gt;Test 1&lt;/a&gt;&lt;/li&gt;</li>
<li>&nbsp;&lt;li&gt;&lt;a href=&quot;#t2&quot;&gt;Test 2&lt;/a&gt;&lt;/li&gt;</li>
<li>&nbsp;&lt;li&gt;&lt;a href=&quot;#t3&quot;&gt;Test 3&lt;/a&gt;&lt;/li&gt;</li>
<li>&nbsp;&lt;li&gt;&lt;a href=&quot;#t4&quot;&gt;Test 4&lt;/a&gt;&lt;/li&gt;</li>
<li>&nbsp;&lt;/ul&gt;</li>
<li>&nbsp;[... ad nauseam...]</li>
<li>&lt;/div&gt;</li></ol></div>
<p>2.在页面里面加上下列代码</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">&lt;ul class=&quot;prevnext&quot;&gt;</li>
<li>&nbsp;&lt;li class=&quot;prev&quot;&gt;&lt;a href=&quot;#&quot;&gt;previous&lt;/a&gt;&lt;/li&gt;</li>
<li>&nbsp;&lt;li class=&quot;next&quot;&gt;&lt;a href=&quot;#&quot;&gt;next&lt;/a&gt;&lt;/li&gt;</li>
<li>&nbsp;&lt;/ul&gt;</li></ol></div>
<p>3.javascript里面的属性定义</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">prevNextIndicator:'doprevnext', // 目标容器的class名称</li>
<li>prevNextClass:'prevnext', // class名称</li>
<li>prevLabel:'previous', // 上一页的文字</li>
<li>nextLabel:'next', // 下一页的文字</li>
<li>prevClass:'prev', // 上一页的class</li>
<li>nextClass:'next', // 下一页的class</li></ol></div>
<p><strong>四.DOMtab中的样式控制</strong><br />
你可以强制的控制某一个元素的样式譬如显示和隐藏等等</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">&lt;script type=&quot;text/javascript&quot;&gt;</li>
<li>&nbsp;document.write('&lt;style type=&quot;text/css&quot;&gt;'); </li>
<li>&nbsp;document.write('div.domtab div{display:none;}&lt;');</li>
<li>&nbsp;document.write('/s'+'tyle&gt;'); </li>
<li>&lt;/script&gt;</li></ol></div>
<p><strong>五.下载以及演示</strong><br /><a href="http://onlinetools.org/tools/domtabdata/domtab.zip" title="http://onlinetools.org/tools/domtabdata/domtab.zip" target="_blank">下载DOMtab version 3.1415927</a><br /><a href="http://onlinetools.org/tools/domtabdata/" title="http://onlinetools.org/tools/domtabdata/" target="_blank">DOMtab演示</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.d8in.com/posts/38.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Javascript的IE和Firefox兼容性汇编</title>
		<link>http://blog.d8in.com/posts/37.html</link>
		<comments>http://blog.d8in.com/posts/37.html#comments</comments>
		<pubDate>Mon, 26 Feb 2007 09:33:30 +0000</pubDate>
		<dc:creator>xw</dc:creator>
				<category><![CDATA[产品设计]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[前端]]></category>

		<guid isPermaLink="false">http://blog.d8in.com/posts/37.html</guid>
		<description><![CDATA[以下以 IE 代替 Internet Explorer，以 MF 代替 Mozzila Firefox 1. document.form.item 问题 (1)现有问题： 现有代码中存在许多 document.formName.item(&#8220;itemName&#8221;) 这样的语句，不能在 MF 下运行 (2)解决方法： 改用 document.formName.elements["elementName"] (3)其它 参见 2 2. 集合类对象问题 (1)现有问题： 现有代码中许多集合类对象取用时使用 ()，IE 能接受，MF 不能。 (2)解决方法： 改用 [] 作为下标运算。如：document.forms(&#8220;formName&#8221;) 改为 document.forms["formName"]。 又如：document.getElementsByName(&#8220;inputName&#8221;)(1) 改为 document.getElementsByName(&#8220;inputName&#8221;)[1] 3. window.event (1)现有问题： 使用 window.event 无法在 MF 上运行 (2)解决方法： MF 的 event 只能在事件发生的现场使用，此问题暂无法解决。可以这样变通： 原代码(可在IE中运行)： &#60;input [...]]]></description>
			<content:encoded><![CDATA[<p>以下以 IE 代替 Internet Explorer，以 MF 代替 Mozzila Firefox</p>
<p><strong>1. document.form.item 问题</strong><br />
(1)现有问题：<br />
现有代码中存在许多 document.formName.item(&#8220;itemName&#8221;) 这样的语句，不能在 MF 下运行<br />
(2)解决方法：<br />
改用 document.formName.elements["elementName"]<br />
(3)其它<br />
参见 2</p>
<p><strong>2. 集合类对象问题</strong><br />
(1)现有问题：<br />
现有代码中许多集合类对象取用时使用 ()，IE 能接受，MF 不能。<br />
(2)解决方法：<br />
改用 [] 作为下标运算。如：document.forms(&#8220;formName&#8221;) 改为 document.forms["formName"]。<br />
又如：document.getElementsByName(&#8220;inputName&#8221;)(1) 改为 document.getElementsByName(&#8220;inputName&#8221;)[1]<br />
<span id="more-37"></span><br />
<strong>3. window.event</strong><br />
(1)现有问题：<br />
使用 window.event 无法在 MF 上运行<br />
(2)解决方法：<br />
MF 的 event 只能在事件发生的现场使用，此问题暂无法解决。可以这样变通：<br />
原代码(可在IE中运行)：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">&lt;input type=&quot;button&quot; name=&quot;someButton&quot; value=&quot;提交&quot; onclick=&quot;javascript:gotoSubmit()&quot;/&gt;</li>
<li>...</li>
<li>&lt;script language=&quot;javascript&quot;&gt;</li>
<li>function gotoSubmit() {</li>
<li>...</li>
<li>alert(window.event); // use window.event</li>
<li>...</li>
<li>}</li>
<li>&lt;/script&gt;</li></ol></div>
<p>新代码(可在IE和MF中运行)：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">&lt;input type=&quot;button&quot; name=&quot;someButton&quot; value=&quot;提交&quot; onclick=&quot;javascript:gotoSubmit(event)&quot;/&gt;</li>
<li>...</li>
<li>&lt;script language=&quot;javascript&quot;&gt;</li>
<li>function gotoSubmit(evt) {</li>
<li>evt = evt ? evt : (window.event ? window.event : null);</li>
<li>...</li>
<li>alert(evt); // use evt</li>
<li>...</li>
<li>}</li>
<li>&lt;/script&gt;</li></ol></div>
<p>此外，如果新代码中第一行不改，与老代码一样的话(即 gotoSubmit 调用没有给参数)，则仍然只能在IE中运行，但不会出错。所以，这种方案 tpl 部分仍与老代码兼容。</p>
<p><strong>4. HTML 对象的 id 作为对象名的问题</strong><br />
(1)现有问题<br />
在 IE 中，HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在 MF 中不能。<br />
(2)解决方法<br />
用 getElementById(&#8220;idName&#8221;) 代替 idName 作为对象变量使用。</p>
<p><strong>5. 用idName字符串取得对象的问题</strong><br />
(1)现有问题<br />
在IE中，利用 eval(idName) 可以取得 id 为 idName 的 HTML 对象，在MF 中不能。<br />
(2)解决方法<br />
用 getElementById(idName) 代替 eval(idName)。</p>
<p><strong>6. 变量名与某 HTML 对象 id 相同的问题</strong><br />
(1)现有问题<br />
在 MF 中，因为对象 id 不作为 HTML 对象的名称，所以可以使用与 HTML 对象 id 相同的变量名，IE 中不能。<br />
(2)解决方法<br />
在声明变量时，一律加上 var ，以避免歧义，这样在 IE 中亦可正常运行。<br />
此外，最好不要取与 HTML 对象 id 相同的变量名，以减少错误。<br />
(3)其它<br />
参见 问题4</p>
<p><strong>7. event.x 与 event.y 问题</strong><br />
(1)现有问题<br />
在IE 中，event 对象有 x, y 属性，MF中没有。<br />
(2)解决方法<br />
在MF中，与event.x 等效的是 event.pageX。但event.pageX IE中没有。<br />
故采用 event.clientX 代替 event.x。在IE 中也有这个变量。<br />
event.clientX 与 event.pageX 有微妙的差别（当整个页面有滚动条的时候），不过大多数时候是等效的。</p>
<p>如果要完全一样，可以稍麻烦些：<br />
mX = event.x ? event.x : event.pageX;<br />
然后用 mX 代替 event.x<br />
(3)其它<br />
event.layerX 在 IE 与 MF 中都有，具体意义有无差别尚未试验。</p>
<p><strong>8. 关于frame</strong><br />
(1)现有问题<br />
在 IE中 可以用window.testFrame取得该frame，mf中不行<br />
(2)解决方法<br />
在frame的使用方面mf和ie的最主要的区别是：<br />
如果在frame标签中书写了以下属性：<br />
<frame src="xx.htm" id="frameId" name="frameName" /><br />
那么ie可以通过id或者name访问这个frame对应的window对象<br />
而mf只可以通过name来访问这个frame对应的window对象<br />
例如如果上述frame标签写在最上层的window里面的htm里面，那么可以这样访问<br />
ie： window.top.frameId或者window.top.frameName来访问这个window对象<br />
mf： 只能这样window.top.frameName来访问这个window对象</p>
<p>另外，在mf和ie中都可以使用window.top.document.getElementById(&#8220;frameId&#8221;)来访问frame标签<br />
并且可以通过window.top.document.getElementById(&#8220;testFrame&#8221;).src = ‘xx.htm’来切换frame的内容<br />
也都可以通过window.top.frameName.location = ‘xx.htm’来切换frame的内容<br />
关于frame和window的描述可以参见bbs的‘window与frame’文章<br />
以及/test/js/test_frame/目录下面的测试<br />
&#8212;-adun 2004.12.09修改</p>
<p><strong>9. 在mf中，自己定义的属性必须getAttribute()取得</strong></p>
<p><strong>10.在mf中没有 parentElement parement.children</strong><br />
 而用parentNode parentNode.childNodes<br />
childNodes的下标的含义在IE和MF中不同，MF使用DOM规范，childNodes中会插入空白文本节点。<br />
一般可以通过node.getElementsByTagName()来回避这个问题。<br />
当html中节点缺失时，IE和MF对parentNode的解释不同，例如</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">&lt;form&gt;</li>
<li>&lt;table&gt;</li>
<li>&lt;input/&gt;</li>
<li>&lt;/table&gt;</li>
<li>&lt;/form&gt;</li></ol></div>
<p>MF中input.parentNode的值为form, 而IE中input.parentNode的值为空节点</p>
<p>MF中节点没有removeNode方法，必须使用如下方法 node.parentNode.removeChild(node)</p>
<p><strong>11.const 问题</strong>(1)现有问题:<br />
在 IE 中不能使用 const 关键字。如 const constVar = 32; 在IE中这是语法错误。<br />
(2)解决方法:<br />
不使用 const ，以 var 代替。</p>
<p><strong>12. body 对象</strong><br />
MF的body在body标签没有被浏览器完全读入之前就存在，而IE则必须在body完全被读入之后才存在</p>
<p>13. url encoding<br />
在js中如果书写url就直接写&#038;不要写&amp;例如var url = ‘xx.jsp?objectName=xx&amp;objectEvent=xxx’;<br />
frm.action = url那么很有可能url不会被正常显示以至于参数没有正确的传到服务器<br />
一般会服务器报错参数没有找到<br />
当然如果是在tpl中例外，因为tpl中符合xml规范，要求&#038;书写为&amp;<br />
一般MF无法识别js中的&amp;</p>
<p><strong>14. nodeName 和 tagName 问题</strong><br />
(1)现有问题：<br />
在MF中，所有节点均有 nodeName 值，但 textNode 没有 tagName 值。在 IE 中，nodeName 的使用好象<br />
有问题（具体情况没有测试，但我的IE已经死了好几次）。<br />
(2)解决方法：<br />
使用 tagName，但应检测其是否为空。</p>
<p><strong>15. 元素属性</strong><br />
IE下 input.type属性为只读，但是MF下可以修改</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.d8in.com/posts/37.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ajax的基本概念</title>
		<link>http://blog.d8in.com/posts/36.html</link>
		<comments>http://blog.d8in.com/posts/36.html#comments</comments>
		<pubDate>Mon, 26 Feb 2007 09:26:58 +0000</pubDate>
		<dc:creator>xw</dc:creator>
				<category><![CDATA[产品设计]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[前端]]></category>

		<guid isPermaLink="false">http://blog.d8in.com/posts/36.html</guid>
		<description><![CDATA[一、使用Ajax的主要原因 1、通过适当的Ajax应用达到更好的用户体验; 2、把以前的一些服务器负担的工作转嫁到客户端，利于客户端闲置的处理能力来处理，减轻服务器和带宽的负担，从而达到节约ISP的空间及带宽租用成本的目的。 二、引用 Ajax这个概念的最早提出者Jesse James Garrett认为:Ajax是Asynchronous JavaScript and XML的缩写。Ajax并不是一门新的语言或技术,它实际上是几项技术按一定的方式组合在一在同共的协作中发挥各自的作用,它包括: ·使用XHTML和CSS标准化呈现; ·使用DOM实现动态显示和交互; ·使用XML和XSLT进行数据交换与处理; ·使用XMLHttpRequest进行异步数据读取; ·最后用JavaScript绑定和处理所有数据; Ajax的工作原理相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给Ajax引擎自己来做,只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求。]]></description>
			<content:encoded><![CDATA[<p><strong>一、使用Ajax的主要原因 </strong></p>
<p>1、通过适当的Ajax应用达到更好的用户体验;</p>
<p>2、把以前的一些服务器负担的工作转嫁到客户端，利于客户端闲置的处理能力来处理，减轻服务器和带宽的负担，从而达到节约ISP的空间及带宽租用成本的目的。</p>
<p><strong>二、引用</strong></p>
<p>Ajax这个概念的最早提出者Jesse James Garrett认为:Ajax是Asynchronous JavaScript and XML的缩写。Ajax并不是一门新的语言或技术,它实际上是几项技术按一定的方式组合在一在同共的协作中发挥各自的作用,它包括:</p>
<p>·使用XHTML和CSS标准化呈现;</p>
<p>·使用DOM实现动态显示和交互;</p>
<p>·使用XML和XSLT进行数据交换与处理;</p>
<p>·使用XMLHttpRequest进行异步数据读取;</p>
<p>·最后用JavaScript绑定和处理所有数据;</p>
<p>Ajax的工作原理相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给Ajax引擎自己来做,只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.d8in.com/posts/36.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

