﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-SIMONE-随笔分类-JavaScript</title><link>http://www.blogjava.net/wangxinsh55/category/9541.html</link><description>www.likeuu.com</description><language>zh-cn</language><lastBuildDate>Sun, 31 Jan 2010 09:31:02 GMT</lastBuildDate><pubDate>Sun, 31 Jan 2010 09:31:02 GMT</pubDate><ttl>60</ttl><item><title>CKeditor 配置使用</title><link>http://www.blogjava.net/wangxinsh55/archive/2010/01/31/311396.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Sun, 31 Jan 2010 08:59:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2010/01/31/311396.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/311396.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2010/01/31/311396.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/311396.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/311396.html</trackback:ping><description><![CDATA[<div>
<div g_c_pdin="" g_p_center="" c07="" content="" id="blogtext_fks_083070085081083074081082087095085086083064081081081065">
<div>
<p><font color="#999999">ckeditor 的官方网站是 </font><a href="http://ckeditor.com/"><font color="#999999">http://ckeditor.com/</font></a><font color="#999999"> ，我当前使用的版本是v3.0.1。</font> </p>
<p><font color="#0000ff"><strong>一、使用方法：</strong></font> </p>
<p><font color="#993300">1、在页面&lt;head&gt;中引入ckeditor核心文件ckeditor.js</font>
</p>
<p><font color="#999999">&lt;script type="text/javas<wbr>cript"
src="ckeditor/ckeditor.js"&gt;&lt;/script&gt; </font></p>
<p><font color="#993300">2、在使用编辑器的地方插入HTML控件&lt;textarea&gt;</font> </p>
<p><font color="#999999">&lt;textarea id="TextArea1" cols="20" rows="2"
class="ckeditor"&gt;&lt;/textarea&gt; </font></p>
<p><font color="#999999">如果是ASP.NET环境，也可用服务器端控件&lt;TextBox&gt; </font></p>
<p><font color="#999999">&lt;asp:TextBox ID="tbContent" runat="server"
TextMode="MultiLine" class="ckeditor"&gt;&lt;/asp:TextBox&gt; </font></p>
<p><font color="#999999">注意在控件中加上 class="ckeditor" 。 </font></p>
<p><font color="#993300">3、将相应的控件替换成编辑器代码</font> </p>
<p><font color="#999999">&lt;script type="text/javas<wbr>cript"&gt;<br />
&nbsp;&nbsp;&nbsp;
CKEDITOR.replace('TextArea1');<br />
//如果是在ASP.NET环境下用的服务器端控
件&lt;TextBox&gt;<br />
&nbsp;&nbsp;&nbsp; CKEDITOR.replace('tbContent');<br />
//如
果&lt;TextBox&gt;控件在母版页中，要这样写<br />
&nbsp;&nbsp;&nbsp;
CKEDITOR.replace('&lt;%=tbContent.ClientID.Replace("_","$") %&gt;');<br />
&lt;/script&gt;</font>
</p>
<p><font color="#993300">4、配置编辑器</font> </p>
<p>&nbsp;&nbsp;&nbsp; <font color="#999999">ckeditor的配置都集中在 ckeditor/config.js
文件中，下面是一些常用的配置参数： </font></p>
<p><font color="#999999">// 界面语言，默认为 'en' </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; config.language = 'zh-cn'; </font></p>
<p><font color="#999999">// 设置宽高 </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; config.width = 400; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; config.height = 400; </font></p>
<p><font color="#999999">// 编辑器样式，有三种：'kama'（默认）、'office2003'、'v2' </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; config.skin = 'v2'; </font></p>
<p><font color="#999999">// 背景颜色 </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; config.uiColor = '#FFF'; </font></p>
<p><font color="#999999">//
工具栏（基础'Basic'、全能'Full'、自定义）plugins/toolbar/plugin.js </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; config.toolbar = 'Basic'; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; config.toolbar = 'Full'; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; 这将配合：<br />
&nbsp;&nbsp;&nbsp; config.toolbar_Full = [<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
['Source','-','Save','NewPage','Preview','-','Templates'],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print',
'SpellChecker', 'Scayt'],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select',
'Button', 'ImageButton', 'HiddenField'],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '/',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
['Link','Unlink','Anchor'],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
'/',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ['Styles','Format','Font','FontSize'],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
['TextColor','BGColor']<br />
&nbsp;&nbsp;&nbsp; ]; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //工具栏是否可以被收缩<br />
&nbsp;&nbsp;&nbsp;
config.toolbarCanCollapse = true; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //工具栏的位置<br />
&nbsp;&nbsp;&nbsp; config.toolbarLocation =
'top';//可选：bottom </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //工具栏默认是否展开<br />
&nbsp;&nbsp;&nbsp;
config.toolbarStartupExpanded = true; </font></p>
<p><font color="#999999">// 取消 &#8220;拖拽以改变尺寸&#8221;功能 plugins/resize/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.resize_enabled = false; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //改变大小的最大高度 </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; config.resize_maxHeight = 3000; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //改变大小的最大宽度<br />
&nbsp;&nbsp;&nbsp; config.resize_maxWidth =
3000; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //改变大小的最小高度<br />
&nbsp;&nbsp;&nbsp; config.resize_minHeight =
250; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //改变大小的最小宽度<br />
&nbsp;&nbsp;&nbsp; config.resize_minWidth =
750;<br />
// 当提交包含有此编辑器的表单时，是否自动更新元素内的数据<br />
&nbsp;&nbsp;&nbsp; config.autoUpdateElement =
true; </font></p>
<p><font color="#999999">// 设置是使用绝对目录还是相对目录，为空为相对目录<br />
&nbsp;&nbsp;&nbsp;
config.baseHref = '' </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; // 编辑器的z-index值<br />
&nbsp;&nbsp;&nbsp;
config.baseFloatZIndex = 10000; </font></p>
<p><font color="#999999">//设置快捷键<br />
&nbsp;&nbsp;&nbsp; config.keystrokes = [<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [
CKEDITOR.ALT + 121 /*F10*/, 'toolbarFocus' ],&nbsp; //获取焦点<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [
CKEDITOR.ALT + 122 /*F11*/, 'elementsPathFocus' ],&nbsp; //元素焦点 </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ CKEDITOR.SHIFT + 121 /*F10*/,
'contextMenu' ],&nbsp; //文本菜单 </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ CKEDITOR.CTRL + 90 /*Z*/, 'undo' ],&nbsp;
//撤销<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ CKEDITOR.CTRL + 89 /*Y*/, 'redo' ],&nbsp; //重做<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [
CKEDITOR.CTRL + CKEDITOR.SHIFT + 90 /*Z*/, 'redo' ],&nbsp; // </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ CKEDITOR.CTRL + 76 /*L*/, 'link' ],&nbsp;
//链接 </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ CKEDITOR.CTRL + 66 /*B*/, 'bold' ],&nbsp;
//粗体<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ CKEDITOR.CTRL + 73 /*I*/, 'italic' ],&nbsp; //斜体<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
[ CKEDITOR.CTRL + 85 /*U*/, 'underline' ],&nbsp; //下划线 </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ CKEDITOR.ALT + 109 /*-*/,
'toolbarCollapse' ]<br />
&nbsp;&nbsp;&nbsp; ] </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //设置快捷键 可能与浏览器快捷键冲突
plugins/keystrokes/plugin.js.<br />
&nbsp;&nbsp;&nbsp; config.blockedKeystrokes = [<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CKEDITOR.CTRL + 66 /*B*/,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CKEDITOR.CTRL + 73 /*I*/,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CKEDITOR.CTRL + 85 /*U*/<br />
&nbsp;&nbsp;&nbsp; ] </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //设置编辑内元素的背景色的取值
plugins/colorbutton/plugin.js.<br />
&nbsp;&nbsp;&nbsp; config.colorButton_backStyle = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
element : 'span',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; styles : { 'background-color' : '#(color)'
}<br />
&nbsp;&nbsp;&nbsp; } </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //设置前景色的取值 plugins/colorbutton/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.colorButton_colors =&nbsp;
'000,800000,8B4513,2F4F4F,008080,000080,4B0082,696969,B22222,A52A2A,DAA520,
</font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
006400,40E0D0,0000CD,800080,808080,F00,FF8C00,FFD700,008000,0FF,00F,EE82EE,
</font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
A9A9A9,FFA07A,FFA500,FFFF00,00FF00,AFEEEE,ADD8E6,DDA0DD,D3D3D3,FFF0F5, </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
FAEBD7,FFFFE0,F0FFF0,F0FFFF,F0F8FF,E6E6FA,FFF&#8217; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //是否在选择颜色时显示&#8220;其它颜色&#8221;选项
plugins/colorbutton/plugin.js<br />
&nbsp;&nbsp;&nbsp; config.colorButton_enableMore =
false </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //区块的前景色默认值设置 plugins/colorbutton/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.colorButton_foreStyle = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; element : 'span',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
styles : { 'color' : '#(color)' }<br />
&nbsp;&nbsp;&nbsp; }; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //所需要添加的CSS文件 在此添加 可使用相对路径和网站的绝对路径<br />
&nbsp;&nbsp;&nbsp;
config.contentsCss = './contents.css'; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //文字方向<br />
&nbsp;&nbsp;&nbsp; config.contentsLangDirection =
'rtl'; //从左到右 </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //CKeditor的配置文件 若不想配置 留空即可<br />
&nbsp;&nbsp;&nbsp;
CKEDITOR.replace( 'myfiled', { customConfig : './config.js' } ); </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //界面编辑框的背景色 plugins/dialog/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.dialog_backgroundCoverColor = '#fffefd'; //可设置参考<br />
&nbsp;&nbsp;&nbsp;
config.dialog_backgroundCoverColor = 'white' //默认 </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //背景的不透明度 数值应该在：0.0～1.0 之间
plugins/dialog/plugin.js<br />
&nbsp;&nbsp;&nbsp; config.dialog_backgroundCoverOpacity =
0.5 </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //移动或者改变元素时 边框的吸附距离 单位：像素
plugins/dialog/plugin.js<br />
&nbsp;&nbsp;&nbsp; config.dialog_magnetDistance = 20; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //是否拒绝本地拼写检查和提示 默认为拒绝 目前仅firefox和safari支持
plugins/wysiwygarea/plugin.js.<br />
&nbsp;&nbsp;&nbsp; config.disableNativeSpellChecker =
true </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //进行表格编辑功能 如：添加行或列 目前仅firefox支持
plugins/wysiwygarea/plugin.js<br />
&nbsp;&nbsp;&nbsp; config.disableNativeTableHandles =
true; //默认为不开启 </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //是否开启 图片和表格 的改变大小的功能
config.disableObjectResizing = true;<br />
&nbsp;&nbsp;&nbsp; config.disableObjectResizing
= false //默认为开启 </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //设置HTML文档类型<br />
&nbsp;&nbsp;&nbsp; config.docType =
'&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "</font><a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd%22%27"><font color="#999999">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd%22'</font></a><font color="#999999"> ; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //是否对编辑区域进行渲染
plugins/editingblock/plugin.js<br />
&nbsp;&nbsp;&nbsp; config.editingBlock = true; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //编辑器中回车产生的标签<br />
&nbsp;&nbsp;&nbsp; config.enterMode =
CKEDITOR.ENTER_P; //可选：CKEDITOR.ENTER_BR或CKEDITOR.ENTER_DIV </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //是否使用HTML实体进行输出 plugins/entities/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.entities = true; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //定义更多的实体 plugins/entities/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.entities_additional = '#39'; //其中#代替了&amp; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //是否转换一些难以显示的字符为相应的HTML字符
plugins/entities/plugin.js<br />
&nbsp;&nbsp;&nbsp; config.entities_greek = true; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //是否转换一些拉丁字符为HTML
plugins/entities/plugin.js<br />
&nbsp;&nbsp;&nbsp; config.entities_latin = true; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //是否转换一些特殊字符为ASCII字符 如"This is Chinese:
汉语."转换为"This is Chinese: &#27721;&#35821;."
plugins/entities/plugin.js<br />
&nbsp;&nbsp;&nbsp; config.entities_processNumerical =
false; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //添加新组件<br />
&nbsp;&nbsp;&nbsp; config.extraPlugins =
'myplugin'; //非默认 仅示例 </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //使用搜索时的高亮色 plugins/find/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.find_highlight = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; element : 'span',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; styles
: { 'background-color' : '#ff0', 'color' : '#00f' }<br />
&nbsp;&nbsp;&nbsp; }; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //默认的字体名 plugins/font/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.font_defaultLabel = 'Arial'; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //字体编辑时的字符集 可以添加常用的中文字符：宋体、楷体、黑体等
plugins/font/plugin.js<br />
&nbsp;&nbsp;&nbsp; config.font_names = 'Arial;Times New
Roman;Verdana'; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //文字的默认式样 plugins/font/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.font_style = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; element&nbsp;&nbsp; : 'span',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; styles&nbsp;&nbsp;
: { 'font-family' : '#(family)' },<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; overrides : [ { element :
'font', attributes : { 'face' : null } } ]<br />
&nbsp;&nbsp;&nbsp; }; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //字体默认大小 plugins/font/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.fontSize_defaultLabel = '12px'; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //字体编辑时可选的字体大小 plugins/font/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.fontSize_sizes
='8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px'
</font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //设置字体大小时 使用的式样 plugins/font/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.fontSize_style = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; element&nbsp;&nbsp; : 'span',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
styles&nbsp;&nbsp; : { 'font-size' : '#(size)' },<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; overrides : [ {
element : 'font', attributes : { 'size' : null } } ]<br />
&nbsp;&nbsp;&nbsp; }; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //是否强制复制来的内容去除格式
plugins/pastetext/plugin.js<br />
&nbsp;&nbsp;&nbsp; config.forcePasteAsPlainText =false
//不去除 </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp;
//是否强制用&#8220;&amp;&#8221;来代替&#8220;&amp;amp;&#8221;plugins/htmldataprocessor/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.forceSimpleAmpersand = false; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //对address标签进行格式化 plugins/format/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.format_address = { element : 'address', attributes : { class :
'styledAddress' } }; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //对DIV标签自动进行格式化 plugins/format/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.format_div = { element : 'div', attributes : { class :
'normalDiv' } }; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //对H1标签自动进行格式化 plugins/format/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.format_h1 = { element : 'h1', attributes : { class :
'contentTitle1' } }; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //对H2标签自动进行格式化 plugins/format/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.format_h2 = { element : 'h2', attributes : { class :
'contentTitle2' } }; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //对H3标签自动进行格式化 plugins/format/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.format_h1 = { element : 'h3', attributes : { class :
'contentTitle3' } }; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //对H4标签自动进行格式化 plugins/format/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.format_h1 = { element : 'h4', attributes : { class :
'contentTitle4' } }; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //对H5标签自动进行格式化 plugins/format/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.format_h1 = { element : 'h5', attributes : { class :
'contentTitle5' } }; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //对H6标签自动进行格式化 plugins/format/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.format_h1 = { element : 'h6', attributes : { class :
'contentTitle6' } }; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //对P标签自动进行格式化 plugins/format/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.format_p = { element : 'p', attributes : { class : 'normalPara' }
}; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //对PRE标签自动进行格式化 plugins/format/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.format_pre = { element : 'pre', attributes : { class : 'co<wbr>de'
} }; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //用分号分隔的标签名字 在工具栏上显示
plugins/format/plugin.js<br />
&nbsp;&nbsp;&nbsp; config.format_tags =
'p;h1;h2;h3;h4;h5;h6;pre;address;div'; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //是否使用完整的html编辑模式
如使用，其源码将包含：&lt;html&gt;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;等标签<br />
&nbsp;&nbsp;&nbsp;
config.fullPage = false; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //是否忽略段落中的空字符 若不忽略 则字符将以&#8220;&#8221;表示
plugins/wysiwygarea/plugin.js<br />
&nbsp;&nbsp;&nbsp; config.ignoreEmptyParagraph = true;
</font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //在清除图片属性框中的链接属性时 是否同时清除两边的&lt;a&gt;标签
plugins/image/plugin.js<br />
&nbsp;&nbsp;&nbsp; config.image_removeLinkByEmptyURL = true;
</font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //一组用逗号分隔的标签名称，显示在左下角的层次嵌套中
plugins/menu/plugin.js.<br />
&nbsp;&nbsp;&nbsp; config.menu_groups
='clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea';
</font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //显示子菜单时的延迟，单位：ms plugins/menu/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.menu_subMenuDelay = 400; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //当执行&#8220;新建&#8221;命令时，编辑器中的内容
plugins/newpage/plugin.js<br />
&nbsp;&nbsp;&nbsp; config.newpage_html = ''; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //当从word里复制文字进来时，是否进行文字的格式化去除
plugins/pastefromword/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.pasteFromWordIgnoreFontFace = true; //默认为忽略格式 </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp;
//是否使用&lt;h1&gt;&lt;h2&gt;等标签修饰或者代替从word文档中粘贴过来的内容
plugins/pastefromword/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.pasteFromWordKeepsStructure = false; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //从word中粘贴内容时是否移除格式
plugins/pastefromword/plugin.js<br />
&nbsp;&nbsp;&nbsp; config.pasteFromWordRemoveStyle =
false; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //对应后台语言的类型来对输出的HTML内容进行格式化，默认为空<br />
&nbsp;&nbsp;&nbsp;
config.protectedSource.push( /&lt;"?["s"S]*?"?&gt;/g );&nbsp;&nbsp; // PHP Co<wbr>de<br />
&nbsp;&nbsp;&nbsp;
config.protectedSource.push( //g );&nbsp;&nbsp; // ASP Co<wbr>de<br />
&nbsp;&nbsp;&nbsp;
config.protectedSource.push(
/(]+&gt;["s|"S]*?&lt;"/asp:[^"&gt;]+&gt;)|(]+"/&gt;)/gi );&nbsp;&nbsp; // ASP.Net
Co<wbr>de </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //当输入：shift+Enter时插入的标签<br />
&nbsp;&nbsp;&nbsp;
config.shiftEnterMode = CKEDITOR.ENTER_P;&nbsp;
//可选：CKEDITOR.ENTER_BR或CKEDITOR.ENTER_DIV </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //可选的表情替代字符 plugins/smiley/plugin.js.<br />
&nbsp;&nbsp;&nbsp;
config.smiley_descriptions = [<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ':)', ':(', ';)', ':D', ':/',
':P',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '', '', '', '', '', '',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '', ';(', '', '',
'', '',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '', ':kiss', '' ]; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //对应的表情图片 plugins/smiley/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.smiley_images = [<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
'regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','confused_smile.gif','tounge_smile.gif',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
'embaressed_smile.gif','omg_smile.gif','whatchutalkingabout_smile.gif','angry_smile.gif','angel_smile.gif','shades_smile.gif',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
'devil_smile.gif','cry_smile.gif','lightbulb.gif','thumbs_down.gif','thumbs_up.gif','heart.gif',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
'broken_heart.gif','kiss.gif','envelope.gif']; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //表情的地址 plugins/smiley/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.smiley_path = 'plugins/smiley/images/'; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //页面载入时，编辑框是否立即获得焦点
plugins/editingblock/plugin.js plugins/editingblock/plugin.js.<br />
&nbsp;&nbsp;&nbsp;
config.startupFocus = false; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //载入时，以何种方式编辑 源码和所见即所得 "source"和"wysiwyg"
plugins/editingblock/plugin.js.<br />
&nbsp;&nbsp;&nbsp; config.startupMode ='wysiwyg'; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //载入时，是否显示框体的边框
plugins/showblocks/plugin.js<br />
&nbsp;&nbsp;&nbsp; config.startupOutlineBlocks = false;
</font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //是否载入样式文件 plugins/stylescombo/plugin.js.<br />
&nbsp;&nbsp;&nbsp;
config.stylesCombo_stylesSet = 'default';<br />
&nbsp;&nbsp;&nbsp; //以下为可选<br />
&nbsp;&nbsp;&nbsp;
config.stylesCombo_stylesSet = 'mystyles';<br />
&nbsp;&nbsp;&nbsp;
config.stylesCombo_stylesSet = 'mystyles:/editorstyles/styles.js';<br />
&nbsp;&nbsp;&nbsp;
config.stylesCombo_stylesSet =
'mystyles:http://www.example.com/editorstyles/styles.js'; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //起始的索引值<br />
&nbsp;&nbsp;&nbsp; config.tabIndex = 0; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //当用户键入TAB时，编辑器走过的空格数，(&amp;nbsp;)
当值为0时，焦点将移出编辑框 plugins/tab/plugin.js<br />
&nbsp;&nbsp;&nbsp; config.tabSpaces = 0; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //默认使用的模板 plugins/templates/plugin.js.<br />
&nbsp;&nbsp;&nbsp;
config.templates = 'default'; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //用逗号分隔的模板文件plugins/templates/plugin.js.<br />
&nbsp;&nbsp;&nbsp;
config.templates_files = [ 'plugins/templates/templates/default.js' ] </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //当使用模板时，&#8220;编辑内容将被替换&#8221;框是否选中
plugins/templates/plugin.js<br />
&nbsp;&nbsp;&nbsp; config.templates_replaceContent =
true; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //主题<br />
&nbsp;&nbsp;&nbsp; config.theme = 'default'; </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; //撤销的记录步数 plugins/undo/plugin.js<br />
&nbsp;&nbsp;&nbsp;
config.undoStackSize =20; </font></p>
<p><font color="#999999">// 在 CKEditor 中集成 CKFinder，注意 ckfinder
的路径选择要正确。<br />
//CKFinder.SetupCKEditor(null, '/ckfinder/'); </font></p>
<p><font color="#0000ff"><strong>二、 一些使用技巧</strong></font> </p>
<p><font color="#993300">1、在页面中即时设置编辑器</font> </p>
<p><font color="#999999">&lt;script type="text/javas<wbr>cript"&gt;<br />
//
示例1：设置工具栏为基本工具栏，高度为70<br />
&nbsp;&nbsp;&nbsp;
CKEDITOR.replace('&lt;%=tbLink.ClientID.Replace("_","$") %&gt;',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{ toolbar:'Basic', height:70 });<br />
//示例2：工具栏为自定义类型<br />
&nbsp;&nbsp;&nbsp;
CKEDITOR.replace( 'editor1',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; toolbar :<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
[<br />
//加粗&nbsp;&nbsp;&nbsp;&nbsp; 斜体，&nbsp;&nbsp;&nbsp;&nbsp; 下划线&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 穿过线&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下标字&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上标字<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
['Bold','Italic','Underline','Strike','Subscript','Superscript'],<br />
//
数字列表&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 实体列表&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 减小缩进&nbsp;&nbsp;&nbsp; 增大缩进<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
['NumberedList','BulletedList','-','Outdent','Indent'],<br />
//左对
齐&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 居中对齐&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 右对齐&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 两端对齐<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],<br />
//超链接&nbsp;
取消超链接 锚点<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ['Link','Unlink','Anchor'],<br />
//图片&nbsp;&nbsp;&nbsp;
flash&nbsp;&nbsp;&nbsp; 表格&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 水平线&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表情&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 特殊字符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 分页符<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],<br />
'/',<br />
//
样式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 格式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字体&nbsp;&nbsp;&nbsp; 字体大小<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
['Styles','Format','Font','FontSize'],<br />
//文本颜色&nbsp;&nbsp;&nbsp;&nbsp; 背景颜色<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
['TextColor','BGColor'],<br />
//全屏&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示区块<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
['Maximize', 'ShowBlocks','-']<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; );<br />
&lt;/script&gt;
</font></p>
<p><font color="#0000ff"><strong>三、精简ckeditor</strong></font> </p>
<p>&nbsp;&nbsp;&nbsp;<font color="#999999"> 在部署到Web服务器上时，下列文件夹和文件都可以删除： </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; /_samples ：示例文件夹； </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; /_source ：未压缩源程序； </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; /lang文件夹下除 zh-cn.js、en.js
以外的文件（也可以根据需要保留其他语言文件）； </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; 根目录下的
changes.html(更新列表)，install.html(安装指向)，license.html(使用许可)； </font></p>
<p><font color="#999999">&nbsp;&nbsp;&nbsp; /skins 目录下不需要的皮肤，一般用V2(简单，朴素)
，如果只保留V2则必须在config.js中指定皮肤。</font></p>
</div>
</div>
</div>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/311396.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2010-01-31 16:59 <a href="http://www.blogjava.net/wangxinsh55/archive/2010/01/31/311396.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我写的javascript常用静态方法类，分享大家</title><link>http://www.blogjava.net/wangxinsh55/archive/2009/06/10/281143.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Wed, 10 Jun 2009 06:17:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2009/06/10/281143.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/281143.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2009/06/10/281143.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/281143.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/281143.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">util</span><span style="color: #000000;">=</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$:</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(id){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;document.getElementById(id);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trim:</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(str){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;str.replace(</span><span style="color: #000000;">/</span><span style="color: #000000;">(</span><span style="color: #000000;">^</span><span style="color: #000000;">\s</span><span style="color: #000000;">+</span><span style="color: #000000;">)</span><span style="color: #000000;">|</span><span style="color: #000000;">(\s</span><span style="color: #000000;">+</span><span style="color: #000000;">$)</span><span style="color: #000000;">/</span><span style="color: #000000;">g,&nbsp;</span><span style="color: #000000;">""</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len:</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(str){&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;str.replace(</span><span style="color: #000000;">/</span><span style="color: #000000;">[</span><span style="color: #000000;">^</span><span style="color: #000000;">\x00</span><span style="color: #000000;">-</span><span style="color: #000000;">\xff]</span><span style="color: #000000;">/</span><span style="color: #000000;">g,'</span><span style="color: #000000;">**</span><span style="color: #000000;">').length;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;format:</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(str){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;arg&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;arguments;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;str.replace(</span><span style="color: #000000;">/</span><span style="color: #000000;">\{(\d</span><span style="color: #000000;">+</span><span style="color: #000000;">)\}</span><span style="color: #000000;">/</span><span style="color: #000000;">g,&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(m,&nbsp;i){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;arg[parseInt(i)</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;each:</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(object,&nbsp;callback,&nbsp;args){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;name,&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;length&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;object.length;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;args&nbsp;)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;length&nbsp;</span><span style="color: #000000;">===</span><span style="color: #000000;">&nbsp;undefined&nbsp;)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(&nbsp;name&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;object&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;callback.apply(&nbsp;object[&nbsp;name&nbsp;],&nbsp;args&nbsp;)&nbsp;</span><span style="color: #000000;">===</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(&nbsp;;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;length;&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;callback.apply(&nbsp;object[&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">&nbsp;],&nbsp;args&nbsp;)&nbsp;</span><span style="color: #000000;">===</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;length&nbsp;</span><span style="color: #000000;">===</span><span style="color: #000000;">&nbsp;undefined&nbsp;)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(&nbsp;name&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;object&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;callback.call(&nbsp;object[&nbsp;name&nbsp;],&nbsp;name,&nbsp;object[&nbsp;name&nbsp;]&nbsp;)&nbsp;</span><span style="color: #000000;">===</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;value&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;object[</span><span style="color: #000000;">0</span><span style="color: #000000;">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;length&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;callback.call(&nbsp;value,&nbsp;i,&nbsp;value&nbsp;)&nbsp;</span><span style="color: #000000;">!==</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;&nbsp;value&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;object[</span><span style="color: #000000;">++</span><span style="color: #000000;">i]&nbsp;){}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setCookie:</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(name,value,hours,path,domain){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;str</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;String();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;nextTime</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Date();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nextTime.setHours(nextTime.getHours()</span><span style="color: #000000;">+</span><span style="color: #000000;">hours);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str</span><span style="color: #000000;">=</span><span style="color: #000000;">name</span><span style="color: #000000;">+</span><span style="color: #000000;">"</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">+</span><span style="color: #000000;">escape(value);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(hours)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str</span><span style="color: #000000;">+=</span><span style="color: #000000;">"</span><span style="color: #000000;">;expires=</span><span style="color: #000000;">"</span><span style="color: #000000;">+</span><span style="color: #000000;">nextTime.toGMTString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(path)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str</span><span style="color: #000000;">+=</span><span style="color: #000000;">"</span><span style="color: #000000;">;path=</span><span style="color: #000000;">"</span><span style="color: #000000;">+</span><span style="color: #000000;">path;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(domain)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str</span><span style="color: #000000;">+=</span><span style="color: #000000;">"</span><span style="color: #000000;">;domain=</span><span style="color: #000000;">"</span><span style="color: #000000;">+</span><span style="color: #000000;">domain;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.cookie</span><span style="color: #000000;">=</span><span style="color: #000000;">str;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getCookie:</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(name){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;rs</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;RegExp(</span><span style="color: #000000;">"</span><span style="color: #000000;">(^|)</span><span style="color: #000000;">"</span><span style="color: #000000;">+</span><span style="color: #000000;">name</span><span style="color: #000000;">+</span><span style="color: #000000;">"</span><span style="color: #000000;">=([^;]*)(;|$)</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">gi</span><span style="color: #000000;">"</span><span style="color: #000000;">).exec(document.cookie),tmp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(tmp</span><span style="color: #000000;">=</span><span style="color: #000000;">rs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;unescape(tmp[</span><span style="color: #000000;">2</span><span style="color: #000000;">]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delCookie:</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(name){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.cookie&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;name&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">=-1</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">;&nbsp;expires=Fri,&nbsp;31&nbsp;Dec&nbsp;1999&nbsp;23:59:59&nbsp;GMT;</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*url&nbsp;String<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*parms&nbsp;String<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*method&nbsp;String&nbsp;default&nbsp;value&nbsp;"get"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*asy&nbsp;Boolean&nbsp;defalut&nbsp;value&nbsp;true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*success&nbsp;Function(http_request.responseText)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ajax:</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(config){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;url</span><span style="color: #000000;">=</span><span style="color: #000000;">config.url,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parms</span><span style="color: #000000;">=</span><span style="color: #000000;">(config.parms</span><span style="color: #000000;">?</span><span style="color: #000000;">config.parms:</span><span style="color: #000000;">""</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&amp;t=</span><span style="color: #000000;">"</span><span style="color: #000000;">+</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Date().getTime(),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method</span><span style="color: #000000;">=</span><span style="color: #000000;">config.method</span><span style="color: #000000;">||</span><span style="color: #000000;">"</span><span style="color: #000000;">get</span><span style="color: #000000;">"</span><span style="color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asy</span><span style="color: #000000;">=</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;http_request</span><span style="color: #000000;">=</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(method.toLowerCase()</span><span style="color: #000000;">==</span><span style="color: #000000;">"</span><span style="color: #000000;">get</span><span style="color: #000000;">"</span><span style="color: #000000;">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url</span><span style="color: #000000;">=</span><span style="color: #000000;">url</span><span style="color: #000000;">+</span><span style="color: #000000;">"</span><span style="color: #000000;">?</span><span style="color: #000000;">"</span><span style="color: #000000;">+</span><span style="color: #000000;">parms;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parms</span><span style="color: #000000;">=</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">开始初始化XMLHttpRequest对象</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(window.XMLHttpRequest)&nbsp;{&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">Mozilla&nbsp;浏览器</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http_request&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;XMLHttpRequest();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(http_request.overrideMimeType)&nbsp;{</span><span style="color: #008000;">//</span><span style="color: #008000;">设置MiME类别</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http_request.overrideMimeType(</span><span style="color: #000000;">"</span><span style="color: #000000;">text/xml</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(window.ActiveXObject)&nbsp;{&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;IE浏览器</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http_request&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ActiveXObject(</span><span style="color: #000000;">"</span><span style="color: #000000;">Msxml2.XMLHTTP</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http_request&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ActiveXObject(</span><span style="color: #000000;">"</span><span style="color: #000000;">Microsoft.XMLHTTP</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(e)&nbsp;{}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">http_request)&nbsp;{&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;异常，创建对象实例失败</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">throw</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Error(</span><span style="color: #000000;">"</span><span style="color: #000000;">不能创建XMLHttpRequest对象实例.</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http_request.open(method,url,asy);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http_request.onreadystatechange</span><span style="color: #000000;">=</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(http_request.readyState&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(http_request.status&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">200</span><span style="color: #000000;">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;config.success(http_request.responseText);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">(e){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">throw</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Error(</span><span style="color: #000000;">"</span><span style="color: #000000;">数据读取失败.</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(method.toLowerCase()</span><span style="color: #000000;">==</span><span style="color: #000000;">"</span><span style="color: #000000;">post</span><span style="color: #000000;">"</span><span style="color: #000000;">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http_request.setRequestHeader(</span><span style="color: #000000;">"</span><span style="color: #000000;">Content-Type</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">application/x-www-form-urlencoded</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http_request.send(parms);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;};<br />
}();</span></div>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/281143.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2009-06-10 14:17 <a href="http://www.blogjava.net/wangxinsh55/archive/2009/06/10/281143.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>带参数绑定事件</title><link>http://www.blogjava.net/wangxinsh55/archive/2008/11/30/243513.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Sun, 30 Nov 2008 03:50:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2008/11/30/243513.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/243513.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2008/11/30/243513.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/243513.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/243513.html</trackback:ping><description><![CDATA[<pre><span style="color: #000000;">&lt;!</span><span style="color: #000000;">doctype html </span><span style="color: #0000ff;">public</span><span style="color: #000000;">"</span><span style="color: #000000;">-//w3c//dtd html 4.0 transitional//en</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">html</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">meta http</span><span style="color: #000000;">-</span><span style="color: #000000;">equiv</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">Content-Type</span><span style="color: #000000;">"</span><span style="color: #000000;"> content</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">text/html; charset=gbk</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">title</span><span style="color: #000000;">&gt;</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> document </span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">title</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">script type</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">text/javascript</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
window.$ </span><span style="color: #000000;">=</span><span style="color: #000000;"> function(id) {<br />
</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(typeof id </span><span style="color: #000000;">==</span><span style="color: #000000;">'</span><span style="color: #000000;">string</span><span style="color: #000000;">'</span><span style="color: #000000;">) {<br />
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> document.getElementById(id);<br />
}<br />
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> id;<br />
}<br />
<br />
</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
* 事件处理工具类<br />
</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
var Event </span><span style="color: #000000;">=</span><span style="color: #000000;"> {}<br />
<br />
Event </span><span style="color: #000000;">=</span><span style="color: #000000;"> {<br />
<br />
</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
* 为 element 使用 handler 处理程序添加至 event 事件<br />
* 兼容 IE 及 Firefox 等浏览器<br />
*<br />
* 例如为 botton 对象添加 onclick 事件，使用 clickEvent<br />
* 方法作为处理程序：<br />
*   Event.addEvent(botton, 'click', clickEvent);<br />
*<br />
* </span><span style="color: #808080;">@param</span><span style="color: #008000;"> element  需要添加事件的对象（Object）<br />
* </span><span style="color: #808080;">@param</span><span style="color: #008000;"> event    需要添加的事件名称（String），不加&#8220;on&#8221;<br />
* </span><span style="color: #808080;">@param</span><span style="color: #008000;"> handler  需要添加的方法引用（Function）<br />
</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
addEvent : function(element, event, handler) {<br />
</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(element.attachEvent) {<br />
element.attachEvent(</span><span style="color: #000000;">'</span><span style="color: #000000;">on</span><span style="color: #000000;">'</span><span style="color: #000000;">+</span><span style="color: #000000;"> event, handler);<br />
} </span><span style="color: #0000ff;">else</span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (element.addEventListener) {<br />
element.addEventListener(event, handler, </span><span style="color: #0000ff;">false</span><span style="color: #000000;">);<br />
} </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> {<br />
element[</span><span style="color: #000000;">'</span><span style="color: #000000;">on</span><span style="color: #000000;">'</span><span style="color: #000000;">+</span><span style="color: #000000;"> event] </span><span style="color: #000000;">=</span><span style="color: #000000;"> handler;<br />
}<br />
},<br />
<br />
</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
* 添加事件处理程序时，只能添加一个方法的引用，并不能给<br />
* 方法加上参数。比如定义了 clickEvent(str) 这个方法，现<br />
* 在要将其作为 obj 的 onclick 的事件处理程序，就可以用：<br />
* obj.onclick = Event.getFuntion(null, clickEvent, str);<br />
*<br />
* </span><span style="color: #808080;">@param</span><span style="color: #008000;"> obj      需要绑定事件处理函数的所有者，null 表示 window 对象<br />
* </span><span style="color: #808080;">@param</span><span style="color: #008000;"> fun      需要绑定的事件处理函数名<br />
* </span><span style="color: #808080;">@param</span><span style="color: #008000;"> ...      第三个参数开始为绑定事件处理函数的参数，由 0 到多个构成<br />
</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
getEventHandler : function(obj, fun) {<br />
var args </span><span style="color: #000000;">=</span><span style="color: #000000;"> [];<br />
obj </span><span style="color: #000000;">=</span><span style="color: #000000;"> obj </span><span style="color: #000000;">||</span><span style="color: #000000;"> window;<br />
</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(var i </span><span style="color: #000000;">=</span><span style="color: #000000;">2</span><span style="color: #000000;">; i </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> arguments.length; i</span><span style="color: #000000;">++</span><span style="color: #000000;">) {<br />
args.push(arguments[i]);<br />
}<br />
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> function() {<br />
fun.apply(obj, args);<br />
};<br />
}<br />
}<br />
<br />
function show(txtObj) {<br />
alert(txtObj.value);<br />
txtObj.focus();<br />
txtObj.select();<br />
}<br />
<br />
window.onload </span><span style="color: #000000;">=</span><span style="color: #000000;"> function() {<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;"> var fun = Event.getEventHandler(window, show, $('txt'));<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;"> Event.addEvent($('btn'), 'click', fun);</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">  $(</span><span style="color: #000000;">'</span><span style="color: #000000;">btn</span><span style="color: #000000;">'</span><span style="color: #000000;">).onclick </span><span style="color: #000000;">=</span><span style="color: #000000;"> Event.getEventHandler(</span><span style="color: #0000ff;">null</span><span style="color: #000000;">, show, $(</span><span style="color: #000000;">'</span><span style="color: #000000;">txt</span><span style="color: #000000;">'</span><span style="color: #000000;">));<br />
}<br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">script</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">body</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">div id</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">content</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">form</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">input type</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">text</span><span style="color: #000000;">"</span><span style="color: #000000;"> name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">txt</span><span style="color: #000000;">"</span><span style="color: #000000;"> id</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">txt</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;&lt;</span><span style="color: #000000;">br </span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">input type</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">button</span><span style="color: #000000;">"</span><span style="color: #000000;"> name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">btn</span><span style="color: #000000;">"</span><span style="color: #000000;"> id</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">btn</span><span style="color: #000000;">"</span><span style="color: #000000;"> value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">click</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">form</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">div</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">body</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">html</span><span style="color: #000000;">&gt;</span></pre>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/243513.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2008-11-30 11:50 <a href="http://www.blogjava.net/wangxinsh55/archive/2008/11/30/243513.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JQuery-Dialog(弹出窗口，遮蔽窗口)</title><link>http://www.blogjava.net/wangxinsh55/archive/2008/11/24/242295.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Mon, 24 Nov 2008 08:32:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2008/11/24/242295.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/242295.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2008/11/24/242295.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/242295.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/242295.html</trackback:ping><description><![CDATA[<div>
<p>在Ajax中经常用到的弹出窗口和遮蔽窗口。自己写肯定是一个最佳方案，但时间和成本上，还是决定了寻找现成的吧。大概罗列一下。需要我满足我几个条件</p>
<ul>
    <li>一定要简洁方便</li>
    <li>拥有遮蔽功能，Model Dialog ，所谓的模态窗口</li>
    <li>可以根据HTML弹出窗口</li>
    <li>可以定义弹出窗口的位置，大小</li>
</ul>
<p>其实我只需要一个框，我更希望框的内容我自己控制，这样通用性就强了。而且一定要简洁，不能弹个框也要配置复杂。</p>
<p>最后挑选下来最满意的Boxy<br />
http://onehackoranother.com/projects/jquery/boxy/<br />
<br />
<img src="http://farm4.static.flickr.com/3190/3018221888_3ab47d2d22_o.png" alt="" /></p>
<p>Boxy生产的HTML代码也是很乱的。但Boxy的设置最简单，所以上手很容易（关注ing，发现CUP有些偏高）。</p>
<p>&#8211;=Other Links=&#8211;<br />
http://www.ericmmartin.com/projects/simplemodal/<br />
http://dev.iceburg.net/jquery/jqModal/#examples<br />
<strong>simplemodal、jqModal</strong> 。这两个是最简单的，灵活性很好，但需要自己配制的多，而且官方的DEMO和我要的需求不是很相同。需要配置的多，学习成本高了。<br />
如果你希望定制自己的Dialog，这两个插件，可以作为基础包，在基础包在封装一下。就可以很方便的满足你的要求。</p>
<p>http://www.malsup.com/jquery/block/<br />
<strong>BlockUI</strong>效果很好。而且官方的帮助也很详细，如果只是简单的使用遮蔽，推荐使用，上手也容易。</p>
<p>http://jquery.com/demo/thickbox/<br />
貌似很复杂，而且偏向于图片，直接就否决了</p>
<p>http://docs.jquery.com/UI/Dialog<br />
官方的要，还要引几个扩展的JS,支持窗口缩放什么的，但生产的代码也太复杂了，不推荐。</p>
<p><strong>网络上整理的一些Dialog列表</strong><br />
http://hi.baidu.com/freezesoul/blog/item/2889b44580e2fd23cffca3fb.html<br />
http://vision-media.ca/resources/jquery/jquery-popup-plugin-review</p>
<p><strong>Custom JavaScript Dialog Boxes </strong><br />
http://hi.baidu.com/freezesoul/blog/item/63a10bfa6e54109259ee90d8.html</p>
</div>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/242295.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2008-11-24 16:32 <a href="http://www.blogjava.net/wangxinsh55/archive/2008/11/24/242295.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>yuicompressor 批处理 压缩js和css</title><link>http://www.blogjava.net/wangxinsh55/archive/2008/11/24/242215.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Mon, 24 Nov 2008 02:47:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2008/11/24/242215.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/242215.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2008/11/24/242215.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/242215.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/242215.html</trackback:ping><description><![CDATA[现在的系统为了得到更好的用户体验，都加入了ajax的特效，只要用到了ajax的代码，就会引来一大堆js代码，这些代码其实也挺占用带宽的，为了使网
页加载得更快，决定在项目中才用网上流行的js压缩器来压缩代码。压缩后的代码基本可以抽掉40%左右的脂肪。<br />
<br />
找到几个压缩器，发现很多压缩器压缩后的js代码都出现这样或那样的问题<br />
<br />
ESC 1.14   http://www.saltstorm.net/depo/esc/?pod=js   压缩后有些中文会出现问号（我的js代码是用utf-8格式）<br />
jsmin http://www.crockford.com/javascript/jsmin.html   压缩后有些中文会出现问号<br />
dean edwards的packer http://dean.edwards.name/packer/ 压缩后的js代码会出现部分分号或大括号丢失，导致语法错误<br />
<br />
最
后找到了yuicompressor-2.3.4 http://developer.yahoo.com/yui/compressor/
感觉很好用，压缩后无损代码，而且连css也可以压缩，压缩的时候很多参数可以设置，可以制定js代码的编码格式等，java运行，本人写了一个bat批
处理遍历制定文件夹里面的所有js和css文件进行压缩。<br />
<br />
我自己写的bat遍历文件压缩代码<br />
<br />
<br />
<br />
(dir %1 /aa /b /s  | findstr /e /c:"js") &gt;tmp.txt<br />
for
/f %%i in (tmp.txt) do java -jar yuicompressor-2.3.4.jar --type js
--charset utf-8 -o %%i.tmp %%i &amp; copy %%i".tmp" %%i &amp; del
%%i".tmp"<br />
<br />
<br />
(dir %1 /aa /b /s  | findstr /e /c:"css") &gt;tmp.txt<br />
for
/f %%i in (tmp.txt) do java -jar yuicompressor-2.3.4.jar --type css
--charset utf-8 -o %%i.tmp %%i &amp; copy %%i".tmp" %%i &amp; del
%%i".tmp"<br />
<br />
<br />
保存为  jscompressor.bat 运行的时候在输入 jscompressor   (是我们指定的路径) 就可以批量进行压缩，压缩后替换压缩前的代码。<br />
<br />
<br />
<br />
下面是一些参数的说明。<br />
<br />
==============================================================================<br />
YUI Compressor<br />
==============================================================================<br />
<br />
NAME<br />
<br />
YUI Compressor - The Yahoo! JavaScript and CSS Compressor<br />
<br />
SYNOPSIS<br />
<br />
Usage: java -jar yuicompressor-x.y.z.jar [options] [input file]<br />
<br />
Global Options<br />
-h, --help                Displays this information<br />
--type            Specifies the type of the input file<br />
--charset        Read the input file using <br />
--line-break      Insert a line break after the specified column number<br />
-v, --verbose             Display informational messages and warnings<br />
-o                  Place the output into . Defaults to stdout.<br />
<br />
JavaScript Options<br />
--nomunge                 Minify only, do not obfuscate<br />
--preserve-semi           Preserve all semicolons<br />
--disable-optimizations   Disable all micro optimizations<br />
<br />
DESCRIPTION<br />
<br />
The YUI Compressor is a JavaScript compressor which, in addition to removing<br />
comments and white-spaces, obfuscates local variables using the smallest<br />
possible variable name. This obfuscation is safe, even when using constructs<br />
such as 'eval' or 'with' (although the compression is not optimal is those<br />
cases) Compared to jsmin, the average savings is around 20%.<br />
<br />
The YUI Compressor is also able to safely compress CSS files. The decision<br />
on which compressor is being used is made on the file extension (js or css)<br />
<br />
GLOBAL OPTIONS<br />
<br />
-h, --help<br />
Prints help on how to use the YUI Compressor<br />
<br />
--line-break<br />
Some source control tools don't like files containing lines longer than,<br />
say 8000 characters. The linebreak option is used in that case to split<br />
long lines after a specific column. It can also be used to make the code<br />
more readable, easier to debug (especially with the MS Script Debugger)<br />
Specify 0 to get a line break after each semi-colon in JavaScript, and<br />
after each rule in CSS.<br />
<br />
--type js|css<br />
The type of compressor (JavaScript or CSS) is chosen based on the<br />
extension of the input file name (.js or .css) This option is required<br />
if no input file has been specified. Otherwise, this option is only<br />
required if the input file extension is neither 'js' nor 'css'.<br />
<br />
--charset character-set<br />
If a supported character set is specified, the YUI Compressor will use it<br />
to read the input file. Otherwise, it will assume that the platform's<br />
default character set is being used. The output file is encoded using<br />
the same character set.<br />
<br />
-o outfile<br />
Place output in file outfile. If not specified, the YUI Compressor will<br />
default to the standard output, which you can redirect to a file.<br />
<br />
-v, --verbose<br />
Display informational messages and warnings.<br />
<br />
JAVASCRIPT ONLY OPTIONS<br />
<br />
--nomunge<br />
Minify only. Do not obfuscate local symbols.<br />
<br />
--preserve-semi<br />
Preserve unnecessary semicolons (such as right before a '}') This option<br />
is useful when compressed code has to be run through JSLint (which is the<br />
case of YUI for example)<br />
<br />
--disable-optimizations<br />
Disable all the built-in micro optimizations.
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/242215.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2008-11-24 10:47 <a href="http://www.blogjava.net/wangxinsh55/archive/2008/11/24/242215.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript jquery 模板</title><link>http://www.blogjava.net/wangxinsh55/archive/2008/11/17/240943.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Mon, 17 Nov 2008 05:23:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2008/11/17/240943.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/240943.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2008/11/17/240943.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/240943.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/240943.html</trackback:ping><description><![CDATA[<br />
/*<br />
&lt;--- --------------------------------------------------------------------------------------- ----<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;Blog Entry:<br />
&nbsp;&nbsp; &nbsp;Creating jQuery Templates Plug-in Using Textarea Elements (Thanks Kurt Bonnet)<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;Code Snippet:<br />
&nbsp;&nbsp; &nbsp;2<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;Author:<br />
&nbsp;&nbsp; &nbsp;Ben Nadel / Kinky Solutions<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;Link:<br />
&nbsp;&nbsp; &nbsp;http://www.bennadel.com/index.cfm?dax=blog:1393.view<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;Date Posted:<br />
&nbsp;&nbsp; &nbsp;Nov 10, 2008 at 9:06 AM<br />
&nbsp;&nbsp; &nbsp;<br />
---- --------------------------------------------------------------------------------------- ---&gt;<br />
*/<br />
<br />
// Define the jQuery Template plugin. This takes a textarea<br />
// value and converts it into an jQuery DOM elements (outside<br />
// of the current DOM) and returns it. It takes only one<br />
// argument: the name-value pairs of the values to replace<br />
// into the template.<br />
jQuery.extend({template:function (strHTML, objValues) {<br />
&nbsp;<br />
&nbsp;&nbsp; &nbsp;// This will be our index variable for looping over the<br />
&nbsp;&nbsp; &nbsp;// values that were passed in.<br />
&nbsp;&nbsp; &nbsp;var strKey = "";<br />
&nbsp;<br />
&nbsp;&nbsp; &nbsp;// Check to make sure we have a value string. If this is<br />
&nbsp;&nbsp; &nbsp;// not the right kind of jQuery stack, the HTML string will<br />
&nbsp;&nbsp; &nbsp;// be null.<br />
&nbsp;&nbsp; &nbsp;if (strHTML) {<br />
&nbsp;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;// Now that we have the proper value, we have to<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;// replace in the mapped values. Loop over each<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;// value that was passed in.<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;for (strKey in objValues) {<br />
&nbsp;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;// Escape all the special values in the key so that<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;// it can be used in a regular expression.<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;strSafeKey = strKey.replace(new RegExp("([""[""]"".""+""*""{""}""("")""$""?""-])", "gi"), """$1");<br />
&nbsp;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;// Replace the value.<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;strHTML = strHTML.replace(new RegExp("""{" + strSafeKey + """}", "gi"), objValues[strKey]);<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />
&nbsp;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;// At this point, our HTML will have fully replaced<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;// values. Now, let's convert it into a jQuery DOM<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;// element and return it.<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return (jQuery(strHTML));<br />
&nbsp;&nbsp; &nbsp;} else {<br />
&nbsp;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;// Return empty jQuery stack.<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return (jQuery([]));<br />
&nbsp;&nbsp; &nbsp;}<br />
}});<br />
<br />
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/240943.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2008-11-17 13:23 <a href="http://www.blogjava.net/wangxinsh55/archive/2008/11/17/240943.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JQUERY 扩展</title><link>http://www.blogjava.net/wangxinsh55/archive/2008/11/17/240942.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Mon, 17 Nov 2008 05:20:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2008/11/17/240942.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/240942.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2008/11/17/240942.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/240942.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/240942.html</trackback:ping><description><![CDATA[免得到时再到处查询,把这些链接直接引过来算了,有机会都熟悉了再整理下<br />
一、文件上传类(File upload)<br />
<a href="http://www.phpletter.com/Demo/AjaxFileUpload-Demo/">Ajax File Upload</a><br />
<a href="http://www.pixeline.be/experiments/jqUploader/">jQUploader</a>.<br />
<a href="http://www.fyneworks.com/jquery/multiple-file-upload/">Multiple File Upload plugin</a>.<br />
<a href="http://www.appelsiini.net/projects/filestyle">jQuery File Style</a>.<br />
<a href="http://jquery.com/plugins/project/InputFileCSS">Styling an input type file</a>.<br />
<a href="http://digitalbush.com/projects/progress-bar-plugin">Progress Bar Plugin</a>.<br />
二、表单验证(Form Validation)<br />
<a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/">jQuery Validation</a>.<br />
<a href="http://www.dyve.net/jquery/?autohelp">Auto Help</a>.<br />
<a href="http://www.willjessup.com/sandbox/jquery/form_validator/form_validate.html">Simple jQuery form validation</a>.<br />
<a href="http://letmehaveblog.blogspot.com/2007/08/easy-client-side-web-forms-validations.html">jQuery XAV - form validations</a>.<br />
<a href="http://itgroup.com.ph/alphanumeric/">jQuery AlphaNumeric</a>.<br />
<a href="http://digitalbush.com/projects/masked-input-plugin">Masked Input</a>.<br />
<a href="http://www.dennydotnet.com/post/TypeWatch-jQuery-Plugin.aspx">TypeWatch Plugin</a>.<br />
<a href="http://jquery.com/plugins/project/TextLimiter">Text limiter for form fields</a>.<br />
<a href="http://www.shawngo.com/gafyd/index.html">Ajax Username Check with jQuery</a>.<br />
三、表单－选取框(Form - Select Box stuff)<br />
<a href="http://jquery.sanchezsalvador.com/page/jquerycombobox.aspx">jQuery Combobox</a>.<br />
<a href="http://www.ajaxray.com/blog/2007/11/08/jquery-controlled-dependent-or-cascading-select-list-2/">jQuery controlled dependent (or Cascadign) Select List</a>.<br />
<a href="http://code.google.com/p/jqmultiselects/">Multiple Selects</a>.<br />
<a href="http://www.texotela.co.uk/code/jquery/select/">Select box manipulation</a>.<br />
<a href="http://code.google.com/p/jqueryselectcombo/">Select Combo Plugin</a>.<br />
<a href="http://www.msxhost.com/jquery/linked-selects/json/%20target=">jQuery - LinkedSelect</a><br />
<a href="http://remysharp.com/2007/09/18/auto-populate-multiple-select-boxes/">Auto-populate multiple select boxes</a>.<br />
<a href="http://www.sitespotting.it/esempi/002/">Choose Plugin (Select Replacement)</a>.<br />
四、表单基本、输入框、选择框等(Form Basics, Input Fields, Checkboxes etc.)<br />
<a href="http://www.malsup.com/jquery/form/">jQuery Form Plugin</a>.<br />
<a href="http://code.handlino.com/wiki/jquery-form">jQuery-Form</a>.<br />
<a href="http://envero.org/jlook/">jLook Nice Forms</a>.<br />
<a href="http://www.whitespace-creative.com/jquery/jNice/">jNice</a>.<br />
<a href="http://www.brainfault.com/2007/07/07/pin-plugin-reloaded/">Ping Plugin</a>.<br />
<a href="http://grzegorz.frydrychowicz.net/jquery_toggleformtext/">Toggle Form Text</a>.<br />
<a href="http://thoughts.kuzemchak.net/entry/toggleval-for-jquery/">ToggleVal</a>.<br />
<a href="http://www.pengoworks.com/workshop/jquery/field.plugin.htm">jQuery Field Plugin</a>.<br />
<a href="http://code.befruit.com/">jQuery Form&#8217;n Field plugin</a>.<br />
<a href="http://www.texotela.co.uk/code/jquery/checkboxes/">jQuery Checkbox manipulation</a>.<br />
<a href="http://www.alcoholwang.cn/jquery/jTaggingDemo.htm">jTagging</a>.<br />
<a href="http://code.google.com/p/labelcheck/">jQuery labelcheck</a>.<br />
<a href="http://scott.sauyet.com/thoughts/archives/2007/03/31/overlabel-with-jquery/">Overlabel</a>.<br />
<a href="http://blog.amicoimmaginario.it/2007/08/28/jquery-plugin-3-state-radio-buttons/">3 state radio buttons</a>.<br />
<a href="http://sanisoft-demo.com/jquery/plugins/shiftcheckbox/">ShiftCheckbox jQuery Plugin</a>.<br />
<a href="http://digitalbush.com/projects/watermark-input-plugin">Watermark Input</a>.<br />
<a href="http://kawika.org/jquery/checkbox/">jQuery Checkbox (checkboxes with imags)</a>.<br />
<a href="http://www.softwareunity.com/sandbox/jqueryspinbtn/">jQuery SpinButton Control</a>.<br />
<a href="http://www.phpletter.com/form_builder/demo.html">jQuery Ajax Form Builder</a>.<br />
<a href="http://www.texotela.co.uk/code/jquery/focusfields/">jQuery Focus Fields</a>.<br />
<a href="http://home.iprimus.com.au/kbwood/jquery/timeEntry.html">jQuery Time Entry</a>.<br />
五、时间、日期和颜色选取(Time, Date and Color Picker)<br />
<a href="http://marcgrabanski.com/code/ui-datepicker/">jQuery UI Datepicker</a>.<br />
<a href="http://kelvinluck.com/assets/jquery/datePicker/">jQuery date picker plugin</a>.<br />
<a href="http://code.google.com/p/jquery-timepicker/">jQuery Time Picker</a>.<br />
<a href="http://www.texotela.co.uk/code/jquery/timepicker/">Time Picker</a>.<br />
<a href="http://www.oakcitygraphics.com/jquery/clockpick/ClockPick.cfm">ClickPick</a>.<br />
<a href="http://labs.perifer.se/timedatepicker/">TimePicker</a>.<br />
<a href="http://acko.net/dev/farbtastic">Farbtastic jQuery Color Picker Plugin</a>.<br />
<a href="http://www.intelliance.fr/jquery/color_picker/">Color Picker by intelliance.fr</a>.<br />
六、投票插件(Rating Plugins)<br />
<a href="http://www.phpletter.com/Demo/Jquery-Star-Rating-Plugin/#">jQuery Star Rating Plugin</a>.<br />
<a href="http://www.m3nt0r.de/devel/raterDemo/">jQuery Star Rater</a>.<br />
<a href="http://riderdesign.com/articles/displayarticle.aspx?articleid=21">Content rater with asp.net, ajax and jQuery</a>.<br />
<a href="http://www.learningjquery.com/2007/05/half-star-rating-plugin">Half-Star Rating Plugin</a>.<br />
七、搜索插件(Search Plugins)<br />
<a href="http://www.vulgarisoip.com/2007/08/06/jquerysuggest-11/">jQuery Suggest</a>.<br />
<a href="http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/">jQuery Autocomplete</a>.<br />
<a href="http://www.pengoworks.com/workshop/jquery/autocomplete.htm">jQuery Autocomplete Mod</a>.<br />
<a href="http://www.ajaxdaddy.com/demo-jquery-autocomplete.html">jQuery Autocomplete by AjaxDaddy</a>.<br />
<a href="http://dev.reach1to1.net/saurabh/jplugins/autocomplete/">jQuery Autocomplete Plugin with HTML formatting</a>.<br />
<a href="http://interface.eyecon.ro/docs/autocomplete">jQuery Autocompleter</a>.<br />
<a href="http://nodstrum.com/2007/09/19/autocompleter/">AutoCompleter (Tutorial with PHP&amp;MySQL)</a>.<br />
<a href="http://rikrikrik.com/jquery/quicksearch/">quick Search jQuery Plugin</a>.<br />
八、编辑器(Inline Edit &amp; Editors)<br />
<a href="http://www.jaysalvat.com/jquery/jtageditor/">jTagEditor</a>.<br />
<a href="http://demo.wymeditor.org/demo.html">WYMeditor</a>.<br />
<a href="http://garage.pimentech.net/scripts_doc_jquery_jframe/">jQuery jFrame</a>.<br />
<a href="http://www.appelsiini.net/projects/jeditable">Jeditable - edit in place plugin for jQuery</a>.<br />
<a href="http://www.dyve.net/jquery/?editable">jQuery editable</a>.<br />
<a href="http://www.jdempster.com/category/jquery/disableTextSelect/">jQuery Disable Text Select Plugin</a>.<br />
<a href="http://15daysofjquery.com/edit-in-place-with-ajax-using-jquery-%20-library/15/">Edit in Place with Ajax using jQuery</a>.<br />
<a href="http://davehauenstein.com/blog/archives/28">jQuery Plugin - Another In-Place Editor</a>.<br />
<a href="http://dev.iceburg.net/jquery/tableEditor/demo.php">TableEditor</a>.<br />
<a href="http://joshhundley.com/teditable-in-place-editing-for-tables/">tEditable - in place table editing for jQuery</a>.<br />
九、多媒体、视频、Flash等(Audio, Video, Flash, SVG, etc)<br />
<a href="http://www.contentwithstructure.com/extras/jmedia">jMedia - accessible multi-media embedding</a>.<br />
<a href="http://sourceforge.net/projects/jbedit/">JBEdit - Ajax online Video Editor</a>.<br />
<a href="http://www.sean-o.com/jquery/jmp3/">jQuery MP3 Plugin</a>.<br />
<a href="http://malsup.com/jquery/media/">jQuery Media Plugin</a>.<br />
<a href="http://jquery.lukelutman.com/plugins/flash/index.html">jQuery Flash Plugin</a>.<br />
<a href="http://www.solitude.dk/archives/embedquicktime/">Embed QuickTime</a>.<br />
<a href="http://keith-wood.name/svg.html">SVG Integration</a>.<br />
十、图片(Photos/Images/Galleries)<br />
<a href="http://jquery.com/demo/thickbox/">ThickBox</a>.<br />
<a href="http://leandrovieira.com/projects/jquery/lightbox/">jQuery lightBox plugin</a>.<br />
<a href="http://blog.joshuaeichorn.com/archives/2007/01/11/jquery-image-strip/">jQuery Image Strip</a>.<br />
<a href="http://www.gcmingati.net/wordpress/wp-content/lab/jquery/imagestrip/imageslide-plugin.html">jQuery slideViewer</a>.<br />
<a href="http://benjaminsterling.com/2007/09/09/jquery-jqgalscroll-photo-gallery/">jQuery jqGalScroll 2.0</a>.<br />
<a href="http://benjaminsterling.com/2007/10/02/jquery-jqgalviewii-photo-gallery/">jQuery - jqGalViewII</a>.<br />
<a href="http://benjaminsterling.com/2007/10/21/jqgalviewiii-proof-of-concept/">jQuery - jqGalViewIII</a>.<br />
<a href="http://opiefoto.com/articles/photoslider">jQuery Photo Slider</a>.<br />
<a href="http://joanpiedra.com/jquery/thumbs/">jQuery Thumbs - easily create thumbnails</a>.<br />
<a href="http://www.texotela.co.uk/code/jquery/jQIR/">jQuery jQIR Image Replacement</a>.<br />
<a href="http://www.gmarwaha.com/jquery/jcarousellite/index.php#what">jCarousel Lite</a>.<br />
<a href="http://projects.sevir.org/storage/jpanview/index.html">jQPanView</a>.<br />
<a href="http://sorgalla.com/projects/jcarousel/#Examples">jCarousel</a>.<br />
<a href="http://www.intelliance.fr/jquery/imagebox/">Interface Imagebox</a>.<br />
<a href="http://www.getintothis.com/blog/2006/10/12/image-gallery-using-jquery-interface-reflections/">Image Gallery using jQuery, Interface &amp; Reflactions</a>.<br />
<a href="http://realazy.org/lab/jquery/j-gallery/">simple jQuery Gallery</a>.<br />
<a href="http://chicagosocial.com/gallery/">jQuery Gallery Module</a>.<br />
<a href="http://www.eogallery.com/">EO Gallery</a>.<br />
<a href="http://flesler.blogspot.com/search/label/jQuery.ScrollShow">jQuery ScrollShow</a>.<br />
<a href="http://www.malsup.com/jquery/cycle/">jQuery Cycle Plugin</a>.<br />
<a href="http://www.projectatomic.com/en/flickr.htm">jQuery Flickr</a>.<br />
<a href="http://www.appelsiini.net/2007/9/lazy-load-images-jquery-plugin">jQuery Lazy Load Images Plugin</a>.<br />
<a href="http://www.sunsean.com/zoomi/">Zoomi - Zoomable Thumbnails</a>.<br />
<a href="http://remysharp.com/2007/03/19/a-few-more-jquery-plugins-crop-labelover-and-pluck/#crop">jQuery Crop - crop any image on the fly</a>.<br />
<a href="http://jquery.com/plugins/project/reflection">Image Reflection</a>.<br />
十一、Google地图（Google Map）<br />
<a href="http://www.dyve.net/jquery/?googlemaps">jQuery Plugin googlemaps</a>.<br />
<a href="http://code.google.com/p/jmaps/">jMaps jQuery Maps Framework</a>.<br />
<a href="http://projects.sevir.org/storage/jqmaps/index.html">jQmaps</a>.<br />
<a href="http://olbertz.de/jquery/googlemap.html#">jQuery &amp; Google Maps</a>.<br />
<a href="http://snippets.dzone.com/posts/show/4361">jQuery Maps Interface forr Google and Yahoo maps</a>.<br />
<a href="http://webrocket.ulmb.com/jmaps/">jQuery J Maps - by Tane Piper</a>.<br />
十二、游戏(Games)<br />
<a href="http://fmarcia.info/jquery/tetris/tetris.html">Tetris with jQuery</a>.<br />
<a href="http://64squar.es/">jQuery Chess</a>.<br />
<a href="http://www.bennadel.com/blog/623-jQuery-Demo-Mad-Libs-Word-Game.htm">Mad Libs Word Game</a>.<br />
<a href="http://www.alexatnet.com/node/68">jQuery Puzzle</a>.<br />
<a href="http://www.willjessup.com/sandbox/jquery/solar_system/rotator.html">jQuery Solar System (not a game but awesome jQuery Stuff)</a>.<br />
十三、表格等(Tables, Grids etc.)<br />
<a href="http://docs.jquery.com/Plugins/Tablesorter">UI/Tablesorter</a>.<br />
<a href="http://www.reconstrukt.com/ingrid/">jQuery ingrid</a>.<br />
<a href="http://www.trirand.com/blog/?p=13">jQuery Grid Plugin</a>.<br />
<a href="http://ideamill.synaptrixgroup.com/jquery/tablefilter/tabletest.htm">Table Filter - awesome!</a>.<br />
<a href="http://dev.iceburg.net/jquery/tableEditor/demo.php">TableEditor</a>.<br />
<a href="http://www.hanpau.com/jquery/unobtrusivetreetable.php">jQuery Tree Tables</a>.<br />
<a href="http://www.javascripttoolbox.com/jquery/#expandablerows">Expandable &#8220;Detail&#8221; Table Rows</a>.<br />
<a href="http://www.remotesynthesis.com/blog/index.cfm/2007/9/25/Sortable-Table-ColdFusion-Custom-Tag-with-jQueryUI">Sortable Table ColdFusion Costum Tag with jQuery UI</a>.<br />
<a href="http://flesler.blogspot.com/2007/10/jquerybubble.html">jQuery Bubble</a>.<br />
<a href="http://tablesorter.com/docs/">TableSorter</a>.<br />
<a href="http://www.webtoolkit.info/demo/jquery/scrollable/demo.html">Scrollable HTML Table</a>.<br />
<a href="http://p.sohei.org/stuff/jquery/columnmanager/demo/demo.html">jQuery column Manager Plugin</a>.<br />
<a href="http://p.sohei.org/stuff/jquery/tablehover/demo/demo.html">jQuery tableHover Plugin</a>.<br />
<a href="http://p.sohei.org/stuff/jquery/columnhover/demo/demo.html">jQuery columnHover Plugin</a>.<br />
<a href="http://makoomba.altervista.org/grid/">jQuery Grid</a>.<br />
<a href="http://motherrussia.polyester.se/jquery-plugins/tablesorter/">TableSorter plugin for jQuery</a>.<br />
<a href="http://joshhundley.com/teditable-in-place-editing-for-tables/">tEditable - in place table editing for jQuery</a>.<br />
<a href="http://www.hovinne.com/dev/jquery/chartotable/">jQuery charToTable Plugin</a>.<br />
<a href="http://www.ita.es/jquery/jquery.grid.columnSizing.htm">jQuery Grid Column Sizing</a>.<br />
<a href="http://www.ita.es/jquery/jquery.grid.rowSizing.htm">jQuery Grid Row Sizing</a>.<br />
十四、统计图(Charts, Presentation etc.)<br />
<a href="http://worcesterwideweb.com/2007/06/04/jquery-wizard-plugin/">jQuery Wizard Plugin </a>.<br />
<a href="http://www.reach1to1.com/sandbox/jquery/jqchart/">jQuery Chart Plugin</a>.<br />
<a href="http://ejohn.org/apps/speed/">Bar Chart</a>.<br />
十五、边框、圆角、背景(Border, Corners, Background)<br />
<a href="http://www.malsup.com/jquery/corner/">jQuery Corner</a>.<br />
<a href="http://blue-anvil.com/archives/anti-aliased-rounded-corners-with-jquery">jQuery Curvy Corner</a>.<br />
<a href="http://dev.jquery.com/%7Epaul/plugins/nifty/example.html">Nifty jQuery Corner</a>.<br />
<a href="http://illandril.net/jQuery/transparentCorners/">Transparent Corners</a>.<br />
<a href="http://www.methvin.com/jquery/jq-corner.html">jQuery Corner Gallery</a>.<br />
<a href="http://blog.brandonaaron.net/my-jquery-plugins/gradient/">Gradient Plugin</a>.<br />
十六、文字和超链接(Text and Links)<br />
<a href="http://wanderinghorse.net/computing/%20/jquery/spoilers/demo.html">jQuery Spoiler plugin</a>.<br />
<a href="http://johannburkard.de/blog/programming/%20/highlight-%20-text-higlighting-jquery-plugin.html">Text Highlighting</a>.<br />
<a href="http://www.jdempster.com/category/jquery/disableTextSelect/">Disable Text Select Plugin</a>.<br />
<a href="http://www.texotela.co.uk/code/jquery/newsticker/">jQuery Newsticker</a>.<br />
<a href="http://www.ollicle.com/2007/jun/03/jquery_lineheight_flexible.html">Auto line-height Plugin</a>.<br />
<a href="http://agencenp.net/textgrad/textgrad.html">Textgrad - a text gradient plugin</a>.<br />
<a href="http://kawika.org/jquery/linklook/">LinkLook - a link thumbnail preview</a>.<br />
<a href="http://rikrikrik.com/jquery/pager/#examples">pager jQuery Plugin</a>.<br />
<a href="http://rikrikrik.com/jquery/shortkeys/">shortKeys jQuery Plugin</a>.<br />
<a href="http://www.ollicle.com/eg/jquery/biggerlink">jQuery Biggerlink</a>.<br />
<a href="http://troy.dyle.net/linkchecker/">jQuery Ajax Link Checker</a>.<br />
十七、鼠标提示（Tooltips）<br />
<a href="http://bassistance.de/jquery-plugins/jquery-plugin-tooltip/">jQuery Plugin - Tooltip</a>.<br />
<a href="http://www.codylindley.com/blogstuff/js/jtip/">jTip - The jQuery Tool Tip</a>.<br />
<a href="http://examples.learningjquery.com/62/demo/index.html#examplesection">clueTip</a>.<br />
<a href="http://edgarverle.com/BetterTip/default.cfm">BetterTip</a>.<br />
<a href="http://ioreader.com/2007/05/15/flash-tooltips-using-jquery/">Flash Tooltips using jQuery</a>.<br />
<a href="http://www.texotela.co.uk/code/jquery/tooltipdemo/">ToolTip</a>.<br />
十八、菜单和导航(Menus, Navigations)<br />
<a href="http://stilbuero.de/jquery/tabs_3/">jQuery Tabs Plugin - awesome! </a>. [<a href="http://stilbuero.de/jquery/tabs_3/nested.html">demo nested tabs</a>.]<br />
<a href="http://blog.cutterscrossing.com/index.cfm/2007/6/15/Updated-JQuery-Nested-Tab-Set-with-Demo">another jQuery nested Tab Set example (based on jQuery Tabs Plugin)</a>.<br />
<a href="http://www.sunsean.com/idTabs/">jQuery idTabs</a>.<br />
<a href="http://jdsharp.us/jQuery/plugins/jdMenu/">jdMenu - Hierarchical Menu Plugin for jQuery</a>.<br />
<a href="http://be.twixt.us/jquery/suckerFish.php">jQuery SuckerFish Style</a>.<br />
<a href="http://bassistance.de/jquery-plugins/jquery-plugin-treeview/">jQuery Plugin Treeview</a>.<br />
<a href="http://be.twixt.us/jquery/treeView.php">treeView Basic</a>.<br />
<a href="http://labs.activespotlight.net/jQuery/menu_demo.html">FastFind Menu</a>.<br />
<a href="http://www.getintothis.com/blog/2006/09/26/my-first-jquery-plugin-a-sliding-menu/">Sliding Menu</a>.<br />
<a href="http://gmarwaha.com/blog/?p=7">Lava Lamp jQuery Menu</a>.<br />
<a href="http://icon.cat/wiki/IconDock_En#iconDock_jQuery_Plugin">jQuery iconDock</a>.<br />
<a href="http://cherne.net/brian/resources/jquery.variations.html">jVariations Control Panel</a>.<br />
<a href="http://www.trendskitchens.co.nz/jquery/contextmenu/">ContextMenu plugin</a>.<br />
<a href="http://p.sohei.org/jquery-plugins/clickmenu/">clickMenu</a>.<br />
<a href="http://www.ndesign-studio.com/blog/mac/css-dock-menu">CSS Dock Menu</a>.<br />
<a href="http://webexpose.org/2006/12/28/jquery-pop-up-menu-tutorial/">jQuery Pop-up Menu Tutorial</a>.<br />
<a href="http://www.getintothis.com/blog/2006/09/26/my-first-jquery-plugin-a-sliding-menu/">Sliding Menu</a>.<br />
<a title="http://stilbuero.de/jquery/tabs_3/" href="http://stilbuero.de/jquery/tabs_3/">http://stilbuero.de/jquery/tabs_3/</a><br />
十九、幻灯、翻转等(Accordions, Slide and Toggle stuff)<br />
<a href="http://bassistance.de/jquery-plugins/jquery-plugin-accordion/">jQuery Plugin Accordion</a>.<br />
<a href="http://fmarcia.info/jquery/accordion.html">jQuery Accordion Plugin Horizontal Way</a>.<br />
<a href="http://letmehaveblog.blogspot.com/2007/10/haccordion-simple-horizontal-accordion.html">haccordion - a simple horizontal accordion plugin for jQuery</a>.<br />
<a href="http://dev.portalzine.de/index?/Horizontal_Accordion--print">Horizontal Accordion by portalzine.de</a>.<br />
<a href="http://berndmatzner.de/jquery/hoveraccordion/">HoverAccordion</a>.<br />
<a href="http://fmarcia.info/jquery/accordion.html">Accordion Example from fmarcia.info</a>.<br />
<a href="http://blog.evaria.com/wp-content/themes/blogvaria/jquery/index.php">jQuery Accordion Example</a>.<br />
<a href="http://jquery.com/files/demo/dl-done.html">jQuery Demo - Expandable Sidebar Menu</a>.<br />
<a href="http://www.andreacfm.com/examples/jQpanels/">Sliding Panels for jQuery</a>.<br />
<a href="http://jquery.andreaseberhard.de/toggleElements/">jQuery ToggleElements</a>.<br />
<a href="http://www.ndoherty.com/demos/coda-slider/">Coda Slider</a>.<br />
<a href="http://sorgalla.com/projects/jcarousel/#Examples">jCarousel</a>.<br />
<a href="http://www.reindel.com/accessible_news_slider/">Accesible News Slider Plugin</a>.<br />
<a href="http://icant.co.uk/sandbox/jquerycodeview/">Showing and Hiding code Examples</a>.<br />
<a href="http://gsgd.co.uk/sandbox/jquery/easing/">jQuery Easing Plugin</a>.<br />
<a href="http://sonspring.com/journal/jquery-portlets">jQuery Portlets</a>.<br />
<a href="http://jdsharp.us/jQuery/plugins/AutoScroll/">AutoScroll</a>.<br />
<a href="http://medienfreunde.com/lab/innerfade/">Innerfade</a>.<br />
二十、拖放插件(Drag and Drop)<br />
<a href="http://docs.jquery.com/UI/Draggables">UI/Draggables</a>.<br />
<a href="http://fromvega.com/wordpress/2007/07/14/easydrag-jquery-plugin/">EasyDrag jQuery Plugin</a>.<br />
<a href="http://sonspring.com/journal/jquery-portlets">jQuery Portlets</a>.<br />
<a href="http://dev.iceburg.net/jquery/jqDnR/">jqDnR - drag, drop resize</a>.<br />
<a href="http://interface.eyecon.ro/demos/drag.html">Drag Demos</a>.<br />
二十一、XML XSL JSON Feeds<br />
<a href="http://www.jongma.org/webtools/jquery/xslt/">XSLT Plugin</a>.<br />
<a href="http://cgaskell.wordpress.com/2006/11/02/jquery-ajax-call-and-result-xml-parsing/">jQuery Ajax call and result XML parsing</a>.<br />
<a href="http://jquery.com/plugins/project/xmlObjectifier">xmlObjectifier - Converts XML DOM to JSON</a>.<br />
<a href="http://jquery.glyphix.com/">jQuery XSL Transform</a>.<br />
<a href="http://malsup.com/jquery/taconite/">jQuery Taconite - multiple Dom updates</a>.<br />
<a href="http://www.hovinne.com/blog/index.php/2007/07/15/132-jfeed-jquery-rss-atom-feed-parser-plugin">RSS/ATOM Feed Parser Plugin</a>.<br />
<a href="http://www.malsup.com/jquery/gfeed/">jQuery Google Feed Plugin</a>.<br />
二十二、浏览器(Browserstuff)<br />
<a href="http://noteslog.com/post/how-to-fix-the-resize-event-in-ie/">Wresize - IE Resize event Fix Plugin</a>.<br />
<a href="http://jquery.khurshid.com/ifixpng.php">jQuery ifixpng</a>.<br />
<a href="http://jquery.andreaseberhard.de/pngFix/">jQuery pngFix</a>.<br />
<a href="http://www.crismancich.de/jquery/plugins/linkscrubber/">Link Scrubber - removes the dotted line onfocus from links</a>.<br />
<a href="http://www.matthewjrichards.co.uk/articles/2007/06/25/jquery-perciformes-the-entire-suckerfish-familly-under-one-roof">jQuery Perciformes - the entire suckerfish familly under one roof</a>.<br />
<a href="http://blog.brandonaaron.net/my-jquery-plugins/background-iframe/">Background Iframe</a>.<br />
<a href="http://jquery.com/plugins/project/QinIE">QinIE - for proper display of Q tags in IE</a>.<br />
<a href="http://webrocket.ulmb.com/ability/">jQuery Accessibility Plugin</a>.<br />
<a href="http://www.ogonek.net/mousewheel/jquery-demo.html">jQuery MouseWheel Plugin</a>.<br />
二十三、对话框、确认窗口(Alert, Prompt, Confirm Windows)<br />
<a href="http://trentrichardson.com/Impromptu/">jQuery Impromptu</a>.<font color="#ff0000">[注:很值得使用]</font><br />
<a href="http://nadiaspot.com/jquery/confirm">jQuery Confirm Plugin</a>.<br />
<a href="http://dev.iceburg.net/jquery/jqModal/">jqModal</a>.<br />
<a href="http://www.ericmmartin.com/projects/simplemodal/">SimpleModal</a>.<font color="#ff0000">[注:很值得使用]</font><br />
二十四、CSS<br />
<a href="http://www.kelvinluck.com/article/switch-stylesheets-with-jquery">jQuery Style Switcher</a>.<br />
<a href="http://andykent.bingodisk.com/bingo/public/jss/">JSS - Javascript StyleSheets</a>.<br />
<a href="http://flesler.blogspot.com/2007/11/jqueryrule.html">jQuery Rule - creation/manipulation of CSS Rules</a>.<br />
<a href="http://www.designerkamal.com/jPrintArea/">jPrintArea</a>.<br />
二十五、DOM、AJAX和其它JQuery插件（DOM, Ajax and other jQuery plugins）<br />
<a href="http://flydom.socianet.com/">FlyDOM</a>.<br />
<a href="http://brandonaaron.net/docs/dimensions/#getting-started">jQuery Dimenion Plugin</a>.<br />
<a href="http://happygiraffe.net/blog/articles/2007/09/26/jquery-logging">jQuery Loggin</a>.<br />
<a href="http://jquery.com/plugins/project/metadata">Metadata - extract metadata from classes, attributes, elements</a>.<br />
<a href="http://johannburkard.de/blog/programming/%20/inc-a-super-tiny-client-side-include-%20-jquery-plugin.html">Super-tiny Client-Side Include Javascript jQuery Plugin</a>.<br />
<a href="http://humanized.com/weblog/2007/09/14/undo-made-easy-with-ajax-part-1/">Undo Made Easy with Ajax</a>.<br />
<a href="http://www.jasons-toolbox.com/JHeartbeat/">JHeartbeat - periodically poll the server</a>.<br />
<a href="http://www.appelsiini.net/projects/lazyload">Lazy Load Plugin</a>.<br />
<a href="http://blog.brandonaaron.net/2007/08/19/new-plugin-live-query/">Live Query</a>.<br />
<a href="http://jquery.offput.ca/every/">jQuery Timers</a>.<br />
<a href="http://www.joanpiedra.com/jquery/shareit/">jQuery Share it - display social bookmarking icons</a>.<br />
<a href="http://www.jdempster.com/category/code/jquery/cookiejar/">jQuery serverCookieJar</a>.<br />
<a href="http://ideamill.synaptrixgroup.com/?p=3">jQuery autoSave</a>.<br />
<a href="http://www.semicomplete.com/blog/geekery/jquery-interface-puffer.html">jQuery Puffer</a>.<br />
<a href="http://33rockers.com/jquery/iframe-demo/">jQuery iFrame Plugin</a>.<br />
<a href="http://www.stilbuero.de/2006/09/17/%20-plugin-for-jquery/">Cookie Plugin for jQuery</a>.<br />
<a href="http://leftlogic.com/lounge/articles/jquery_spy2">jQuery Spy - awesome plugin</a>.<br />
<a href="http://www.learningjquery.com/2007/01/effect-delay-trick">Effect Delay Trick</a>.<br />
<a href="http://jquick.sullof.com/jquick/">jQuick - a quick tag creator for jQuery</a>.<a href="http://noteslog.com/post/metaobjects-11-released-today/"><br />
Metaobjects</a>.<br />
<a href="http://www.thunderguy.com/semicolon/2007/08/14/elementready-jquery-plugin/">elementReady</a>.
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/240942.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2008-11-17 13:20 <a href="http://www.blogjava.net/wangxinsh55/archive/2008/11/17/240942.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于JavaScript的gzip静态压缩方法 </title><link>http://www.blogjava.net/wangxinsh55/archive/2008/04/03/190693.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 03 Apr 2008 11:57:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2008/04/03/190693.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/190693.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2008/04/03/190693.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/190693.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/190693.html</trackback:ping><description><![CDATA[<p>传统的JS压缩(删除注释,删除多余空格等)提供的压缩率有时还是不尽不意,幸亏现在的浏览器都支持压缩传输(通过设置http header的Content-Encoding=gzip),可以通过服务器的配置(如apache)为你的js提供压缩传输,或是appfuse中使用的GZipFilter使tomcat也提供这种能力</p>
<p>现在的问题是这种动态的压缩会导致CPU占用率过高,现在我想到的解决辨法是通过提供静态压缩(就是将js预先通过gzip.exe压缩好)</p>
<p>一.下面描述在tomcat中的应用</p>
<p>1.将prototype.js通过gzip.exe压缩保存成prototype.gzjs<br />
2.设置header,我编写了一个简单的AddHeadersFilter来将所有以gzjs结尾的文件增加设置header Content-Encoding=gzip<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;web.xml中的配置<br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">AddHeaderFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;badqiu.web.filter.AddHeaderFilter<br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">headers</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Content-Encoding=gzip</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">AddHeaderFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">*.gzjs</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span></div>
<p>测试prototype是否正常的代码 </p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;type="text/javascript"不可少,有些浏览器缺少这个不能运行,具体已经忘记了&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">src</span><span style="color: #0000ff">="prototype.gzjs"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="username"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="username"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="badqiu"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="email"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="badqiu@gmail.com"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">&lt;!--</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;测试prototype的方法是否正常</span><span style="color: #000000; background-color: #f5f5f5">--&gt;</span><span style="color: #000000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;alert($F('username'))<br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></div>
<p><br />
在Apache httpd中可以直接通过在httpd.conf增加AddEncoding x-gzip .gzjs来映射.gzjs文件的header</p>
<p>二.相关压缩率数据<br />
1. prototype.js 1.5.0_rc0原始大小56KB,未经任何处理直接使用gzip压缩为12KB,总压缩率79%<br />
2. 通过js压缩工具压缩过的protytype.js为20KB,使用gzip压缩为10KB,总压缩率为83%<br />
3. 实际项目中的多个js合并成的文件 439KB,直接通过gzip压缩为85KB,总压缩率81%<br />
4. 439KB经过js压缩为165KB,再经过gzip压缩为65KB,总压缩率86%<br />
基本上你都可以忽略js压缩工具的压缩率,直接使用gzip压缩</p>
<p>gzip下载地址 <a href="http://www.gzip.org/">http://www.gzip.org</a><br />
tomcat的压缩配置示例下载地址: <span class="nobr"><strong><font color="#003366"><a href="http://www.blogjava.net/Files/badqiu/gziptest.rar">http://www.blogjava.net/Files/badqiu/gziptest.rar</a><br />
</font></strong></span></p>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/190693.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2008-04-03 19:57 <a href="http://www.blogjava.net/wangxinsh55/archive/2008/04/03/190693.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Ext的Js太大的问题研究解决</title><link>http://www.blogjava.net/wangxinsh55/archive/2008/04/03/190691.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 03 Apr 2008 11:51:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2008/04/03/190691.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/190691.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2008/04/03/190691.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/190691.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/190691.html</trackback:ping><description><![CDATA[久别大家一年了，其实这一年我从简单实现了一个Yui-Ext0.33项目后，基本没有在Ajax表现层花太多的时间，而是转向研究Jbpm和WebService在项目中的应用，而且大半年前Ext推出1.0版本，感觉在项目中升级使用还不够成熟，所以在项目中继续应用小巧的0.33版，基本满足需要。 <br />
<br />
由于现在项目越来越大，而且Ext2已经推出，界面实在充满诱惑，相信商业化的Ext2将更适合项目开发，所以现在对Ext2一些关键问题进行研究，首当其冲要解决的就是ext-all.js(512K)太大的问题。 <br />
<br />
针对js包太大的问题，有两个现在比较流行的解决方案： <br />
1. 使用jsbuild等工具把需要调用的js重新包装，此方法的缺点是Ext用的最多的是form和grid等控件，删减后包容量减少不明显，而且我是打包了几次失败，就没耐心了，当然，要做到最好调优，这个方案是要考虑的，基本方法就是页面调用核心的ext-core.js，然后再把页面要用的包自己包装。 <br />
<br />
2. 使用gzip在服务器端牺牲一点cpu资源进行压缩，有效减低传输流量，由浏览器解压处理后执行。这个解决方案另我眼前一亮，其实也不是什么新东西，2005年的老东西了，只是当时没有想到js会如此庞大，但现在老技术还是很实用的。下面将重点研究这个解决方案。 <br />
<br />
第一步，在web.xml增加一个gzipfilter，不用自己写，有现成的，到地址：<a href="http://sourceforge.net/projects/filterlib" target="_blank">http://sourceforge.net/projects/filterlib</a>下载，新建一个测试项目，最简单就在index.jsp直接调用ext-all.js，把tk-filters.jar拷贝到项目的lib目录，然后在web.xml加入： <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://www.javaeye.com/post/490653#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div>
</div>
<ol class="dp-j">
    <li><span><span>&lt;filter&gt; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;filter-name&gt;CompressingFilter&lt;/filter-name&gt; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;filter-</span><span class="keyword">class</span><span>&gt; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com.tacitknowledge.filters.gzipfilter.GZIPFilter &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/filter-</span><span class="keyword">class</span><span>&gt;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&lt;/filter&gt; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;这里按自己许多针对不同文件进行filter-mapping配置，比如*.css&nbsp;--&gt; &nbsp;&nbsp;</span></li>
    <li><span>&lt;filter-mapping&gt; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;filter-name&gt;CompressingFilter&lt;/filter-name&gt; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;*.js&lt;/url-pattern&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&lt;/filter-mapping&gt;&nbsp;&nbsp;</span></li>
</ol>
</div>
<pre class="java" style="display: none" name="code">	&lt;filter&gt;
&lt;filter-name&gt;CompressingFilter&lt;/filter-name&gt;
&lt;filter-class&gt;
com.tacitknowledge.filters.gzipfilter.GZIPFilter
&lt;/filter-class&gt;
&lt;/filter&gt;
&lt;!-- 这里按自己许多针对不同文件进行filter-mapping配置，比如*.css --&gt;
&lt;filter-mapping&gt;
&lt;filter-name&gt;CompressingFilter&lt;/filter-name&gt;
&lt;url-pattern&gt;*.js&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;</pre>
<br />
<br />
第二步，调试，调试js现在发现最好的工具应该是FireFox+firebug(插件),FireFox我用1.5版本，调试足够了，我使用Weblogic作调试服务器，tomcat也可以，但我的tomcat在server.xml直接配置gzip压缩功能，所以用weblogic免得测试不出来。启动项目后，用Firefox打开index.jsp页面，页面调出后可能会有脚本错误，但可以不管，关键看文件的大小，打开工具-&gt;firebug-&gt;open firebug,寻找net项，即可看到调用的ext-all.js的压缩效果，如附图的比较，效果不错吧，512K =&gt; 137K，如果发现js压缩没效果，注意打开工具-&gt;清除私隐数据，清掉可能存在的cache，再刷新页面重试。 <br />
<br />
第三步，压力测试，我使用loadrunner7.8测试，简单实用，没有8.0以上版本的华丽和慢。使用1000个进程测试，发现了意外的结果(见附图)，在本机测试，不用gzip压缩只用了36秒，而使用gzip压缩后则是1分49秒，流量在压缩后从1,315,914,600降到313，125，680，流量随着文件的压缩而减少，效果也很明显，查其原因，应该是因为压缩和解压对服务器和浏览器的资源消耗，而且是在本机测试，本机排除了带宽的影响，所以压缩前性能反而高了。 <br />
<br />
由于我研究的时间不长，在压力测试方面还没在实际项目中测试，不能一概而论，初步分析，如果是局域网项目，带宽不受限制，不使用压缩性能会好点，而对于互联网环境则要考虑压缩方案，也希望有兴趣的开发者共同研究一下这个解决方案在实际项目中的可行性，希望大家讨论。
<div class="attachments">
<ul>
    <li><a href="http://www.javaeye.com/topics/download/37a8d707-44d1-369f-b393-0564db55c4a4" target="_blank"><img class="magplus" title="点击查看原始大小图片" alt="37a8d707-44d1-369f-b393-0564db55c4a4-thumb" src="http://www.javaeye.com/upload/attachment/17020/37a8d707-44d1-369f-b393-0564db55c4a4-thumb.jpg?1205438818" /></a>
    <li>描述:
    <li>大小: 50.7 KB
    <li>查看次数: 58 </li>
</ul>
<ul>
    <li><a href="http://www.javaeye.com/topics/download/73e56e32-afb4-33a5-82bc-5bfaa57aa328" target="_blank"><img class="magplus" title="点击查看原始大小图片" alt="73e56e32-afb4-33a5-82bc-5bfaa57aa328-thumb" src="http://www.javaeye.com/upload/attachment/17022/73e56e32-afb4-33a5-82bc-5bfaa57aa328-thumb.jpg?1205438819" /></a>
    <li>描述:
    <li>大小: 76.8 KB
    <li>查看次数: 36 </li>
</ul>
<ul>
    <li><a href="http://www.javaeye.com/topics/download/1d6c71a8-0f87-351e-9a37-2bd5a292264c" target="_blank"><img class="magplus" title="点击查看原始大小图片" alt="1d6c71a8-0f87-351e-9a37-2bd5a292264c-thumb" src="http://www.javaeye.com/upload/attachment/17024/1d6c71a8-0f87-351e-9a37-2bd5a292264c-thumb.jpg?1205438819" /></a>
    <li>描述:
    <li>大小: 75.5 KB
    <li>查看次数: 26 </li>
</ul>
</div>
<div id="topic_copyright">&nbsp;</div>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/190691.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2008-04-03 19:51 <a href="http://www.blogjava.net/wangxinsh55/archive/2008/04/03/190691.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何使用Javascript XSLT 处理XML文件（支持Firefox）</title><link>http://www.blogjava.net/wangxinsh55/archive/2008/03/26/188691.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Wed, 26 Mar 2008 03:59:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2008/03/26/188691.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/188691.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2008/03/26/188691.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/188691.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/188691.html</trackback:ping><description><![CDATA[<div>最近使用Firefox进行网页的调试,发现有些Javascript&nbsp;XSLT处理XML的语句仅仅支持IE浏览器。而网络中的一些介绍javascript&nbsp;XSLT&nbsp;处理XML的文章基本上都是依据AJAX来做的。<br />
&nbsp;&nbsp;&nbsp;&nbsp;无奈中,自己写了一个Javascript&nbsp;XSLT处理XML展现页面的小功能。现在帖出来和大家共享，希望大家给点改进意见。<br />
&nbsp;&nbsp;&nbsp;&nbsp;在Firefox中使用XSLTProcessor对象处理XML，主要使用该对象的两个方法：<br />
一、transformToFragment()。<br />
二、transformToDocument()。<br />
&nbsp;&nbsp;&nbsp;&nbsp;下面的代码仅仅使用transformToFragment()方法来实现对XML文件处理,如果你对在Firefox中使用Javascript&nbsp;XSLT&nbsp;处理XML文件感兴趣的话不妨试着将以下代码改写成使用transformToDocument()方法来实现的处理功能。<br />
Javascript&nbsp;代码如下：
<p>&nbsp;</p>
<p>function&nbsp;initialize()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;xmlDoc;<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;xslDoc;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;判断浏览器的类型<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(document.implementation&nbsp;&amp;&amp;&nbsp;document.implementation.createDocument)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;支持Mozilla浏览器<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlDoc&nbsp;=&nbsp;document.implementation.createDocument("",&nbsp;"",&nbsp;null);&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlDoc.async&nbsp;=&nbsp;false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlDoc.load("guestbook/guestbook.xml");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("error:001");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xslDoc&nbsp;=&nbsp;document.implementation.createDocument("",&nbsp;"",&nbsp;null);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xslDoc.async&nbsp;=&nbsp;false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xslDoc.load("guestbook/guestbook.xsl");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("error:002");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;定义XSLTProcessor对象&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;xsltProcessor&nbsp;=&nbsp;new&nbsp;XSLTProcessor();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xsltProcessor.importStylesheet(xslDoc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;oResultFragment&nbsp;=&nbsp;xsltProcessor.transformToFragment(xmlDoc,document);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;将解析过的文本输出到页面<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;oDiv&nbsp;=&nbsp;document.getElementById("guestbookPanel");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oDiv.appendChild(oResultFragment);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("error:003");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if(typeof&nbsp;window.ActiveXObject&nbsp;!=&nbsp;'undefined')<br />
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//var&nbsp;xmlDoc=Server.CreateObject("Msxml2.DOMDocument.4.0");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;支持IE浏览器<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlDoc&nbsp;=&nbsp;new&nbsp;ActiveXObject('Microsoft.XMLDOM');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xslDoc&nbsp;=&nbsp;new&nbsp;ActiveXObject('Microsoft.XMLDOM');&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlDoc.async&nbsp;=&nbsp;false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xslDoc.async&nbsp;=&nbsp;false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlDoc.load("guestbook/guestbook.xml");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xslDoc.load("guestbook/guestbook.xsl");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;guestbookPanel.innerHTML&nbsp;=&nbsp;xmlDoc.documentElement.transformNode(xslDoc);&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("Browser&nbsp;unknown!");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</p>
<p>javascript&nbsp;dom&nbsp;处理XSL显示数据的第二种方式。</p>
<p>主要代码如下：</p>
<p>var&nbsp;xmlDoc;<br />
&nbsp;var&nbsp;xslDoc;</p>
<p>&nbsp;//&nbsp;判断浏览器的类型<br />
&nbsp;if(document.implementation&nbsp;&amp;&amp;&nbsp;document.implementation.createDocument)<br />
&nbsp;{&nbsp;&nbsp;<br />
&nbsp;&nbsp;//&nbsp;支持Mozilla浏览器<br />
&nbsp;&nbsp;try<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;xmlDoc&nbsp;=&nbsp;document.implementation.createDocument("",&nbsp;"",&nbsp;null);&nbsp;<br />
&nbsp;&nbsp;&nbsp;xmlDoc.async&nbsp;=&nbsp;false;<br />
&nbsp;&nbsp;&nbsp;xmlDoc.load("guestbook/guestbook.xml");<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;xslDoc&nbsp;=&nbsp;document.implementation.createDocument("",&nbsp;"",&nbsp;null);<br />
&nbsp;&nbsp;&nbsp;xslDoc.async&nbsp;=&nbsp;false;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xslDoc.load("guestbook/guestbook.xsl");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;定义XSLTProcessor对象&nbsp;<br />
&nbsp;&nbsp;&nbsp;var&nbsp;xsltProcessor&nbsp;=&nbsp;new&nbsp;XSLTProcessor();<br />
&nbsp;&nbsp;&nbsp;xsltProcessor.importStylesheet(xslDoc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;transformToDocument方式<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;result&nbsp;=&nbsp;xsltProcessor.transformToDocument(xmlDoc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;xmls&nbsp;=&nbsp;new&nbsp;XMLSerializer();<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("guestbookPanel").innerHTML&nbsp;=&nbsp;xmls.serializeToString(result);<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;catch(e)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;alert("Unable&nbsp;to&nbsp;do&nbsp;xml/xsl&nbsp;processing");<br />
&nbsp;&nbsp;}&nbsp;<br />
&nbsp;}<br />
&nbsp;else&nbsp;if(typeof&nbsp;window.ActiveXObject&nbsp;!=&nbsp;'undefined')<br />
&nbsp;{<br />
&nbsp;&nbsp;try<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;//&nbsp;支持IE浏览器<br />
&nbsp;&nbsp;&nbsp;xmlDoc&nbsp;=&nbsp;new&nbsp;ActiveXObject('Msxml2.DOMDocument');<br />
&nbsp;&nbsp;&nbsp;xslDoc&nbsp;=&nbsp;new&nbsp;ActiveXObject('Msxml2.DOMDocument');&nbsp;<br />
&nbsp;&nbsp;&nbsp;xmlDoc.async&nbsp;=&nbsp;false;<br />
&nbsp;&nbsp;&nbsp;xslDoc.async&nbsp;=&nbsp;false;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;xmlDoc.load("guestbook/guestbook.xml");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xslDoc.load("guestbook/guestbook.xsl");<br />
&nbsp;&nbsp;&nbsp;guestbookPanel.innerHTML&nbsp;=&nbsp;xmlDoc.documentElement.transformNode(xslDoc);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;catch(e)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;alert("Unable&nbsp;to&nbsp;do&nbsp;xml/xsl&nbsp;processing");<br />
&nbsp;&nbsp;}<br />
&nbsp;}<br />
&nbsp;else<br />
&nbsp;{<br />
&nbsp;&nbsp;alert("Browser&nbsp;unknown!");<br />
&nbsp;}</p>
</div>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/188691.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2008-03-26 11:59 <a href="http://www.blogjava.net/wangxinsh55/archive/2008/03/26/188691.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>两个javascript小测试例子 类和json函数</title><link>http://www.blogjava.net/wangxinsh55/archive/2008/02/16/180168.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Sat, 16 Feb 2008 03:45:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2008/02/16/180168.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/180168.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2008/02/16/180168.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/180168.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/180168.html</trackback:ping><description><![CDATA[<p>one.html<br />
</p>
<p>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;<br />
&lt;title&gt;function this 的使用&lt;/title&gt;<br />
&lt;/head&gt;</p>
<p>&lt;body&gt;<br />
&lt;script type="text/javascript" language="javascript"&gt;<br />
cls=function(data){<br />
&nbsp;this.showA=function (a){<br />
&nbsp;&nbsp;alert(a);<br />
&nbsp;};<br />
&nbsp;//showA('showA');<br />
&nbsp;this.showA("ccc")<br />
&nbsp;function showB(b){<br />
&nbsp;&nbsp;alert(b);<br />
&nbsp;};<br />
&nbsp;showB("ddd")<br />
&nbsp;function showData(data){<br />
&nbsp;&nbsp;alert(data);<br />
&nbsp;};</p>
<p>}<br />
var c=new cls("simone");<br />
c.showA("asmone");<br />
c.showB("tt");<br />
cls.showB("b");<br />
cls.showData("wang");<br />
alert(cls("simone"));<br />
&lt;/script&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
</p>
<br />
<br />
two.html<br />
<br />
<p>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;<br />
&lt;title&gt;function : 的使用&lt;/title&gt;<br />
&lt;/head&gt;</p>
<p>&lt;body&gt;<br />
&lt;script type="text/javascript" language="javascript"&gt;<br />
var FN=function(s){<br />
&nbsp;alert('fn');<br />
&nbsp;alert(s);<br />
&nbsp;return{<br />
&nbsp;&nbsp;nopar:function(){alert('nopar')},<br />
&nbsp;&nbsp;onepar:function(p){alert('onepar');alert(p)},<br />
&nbsp;&nbsp;shows:function(){alert(s)},<br />
&nbsp;&nbsp;shows2:function(s){alert(s)}<br />
&nbsp;}<br />
}<br />
fn=new FN('onefn');<br />
fn.nopar();<br />
fn.onepar('ts');<br />
fn.shows();<br />
fn.shows2('tbb');</p>
<p>alert('******************');</p>
<p>var FN2={<br />
&nbsp;one:function(){alert('one')},<br />
&nbsp;two:function(p){alert(p),alert(this)},<br />
&nbsp;three:function(){<br />
&nbsp;&nbsp;this.one();<br />
&nbsp;&nbsp;alert('three');<br />
&nbsp;&nbsp;function in_three(){<br />
&nbsp;&nbsp;&nbsp;alert('in_three');<br />
&nbsp;&nbsp;};<br />
&nbsp;&nbsp;this.this_three=function(){<br />
&nbsp;&nbsp;&nbsp;alert('this_three');<br />
&nbsp;&nbsp;};<br />
&nbsp;}<br />
};<br />
FN2.one();<br />
FN2.two('fn2 two');<br />
FN2.three();<br />
var three2=FN2.three;<br />
alert('########');<br />
var th=new three2();//去掉this.one()这一语句后，可以new成功<br />
th.this_three();<br />
&lt;/script&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/180168.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2008-02-16 11:45 <a href="http://www.blogjava.net/wangxinsh55/archive/2008/02/16/180168.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser</title><link>http://www.blogjava.net/wangxinsh55/archive/2008/02/15/180114.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Fri, 15 Feb 2008 09:36:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2008/02/15/180114.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/180114.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2008/02/15/180114.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/180114.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/180114.html</trackback:ping><description><![CDATA[<span id="ctl00_MainContentPlaceholder_ctl01_ctl00_lblEntry">&nbsp;
<div class="bvEntry" id="entrycns!4D0B98F5F0C51177!114" bv:cns="cns!4D0B98F5F0C51177!114" bv:ca="true" bv:cat="计算机与 Internet">
<h4 id="subjcns!4D0B98F5F0C51177!114" style="margin-bottom: 0px">发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser</h4>
<div class="bvMsg" id="msgcns!4D0B98F5F0C51177!114">
<h2>先发一段脚本压缩示例，展示一下JSA语法压缩和优化功能。</h2>
<div>
<ol style="border-right: #444444 2px dotted; border-top: #444444 2px dotted; background: #eeeeee; border-left: #444444 2px dotted; color: #800080; border-bottom: #444444 2px dotted">
    <li><span><span>try</span><span>&nbsp;{&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span>//xxxx();</span><span>&nbsp;&nbsp;</span></span>
    <li><span>}&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span><span>catch</span><span>&nbsp;(e)&nbsp;{&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;yyyy();&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;f1()&nbsp;{&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
    <li><span>}&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span><span>finally</span><span>&nbsp;{&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;zzzz();&nbsp;&nbsp;</span>
    <li><span>}&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span>function&nbsp;f2(var1)&nbsp;{&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;var2&nbsp;=&nbsp;<span>2</span><span>;&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;var3&nbsp;=&nbsp;<span>3</span><span>;&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;withObject&nbsp;=&nbsp;{var2:-<span>2</span><span>}&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;with(withObject){&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(var2);&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
    <li><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;
<p>压缩结果（经过格式化，便于查阅）：
<div>
<ol style="border-right: #444444 2px dotted; border-top: #444444 2px dotted; background: #eeeeee; border-left: #444444 2px dotted; color: #800080; border-bottom: #444444 2px dotted">
    <li><span><span>zzzz();&nbsp;&nbsp;</span></span>
    <li><span>function&nbsp;f2(A)&nbsp;{&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;var2&nbsp;=&nbsp;<span>2</span><span>;&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;B&nbsp;=&nbsp;<span>3</span><span>;&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;C&nbsp;=&nbsp;{var2:-<span>2</span><span>};&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;(C)&nbsp;{&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(var2);&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
    <li><span>}&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;
<p>JSA的压缩过程分两步
<p>第一步是语法压缩，类似于Dojo ShrinkSafe，但比他安全，且更加有效。<br />
<br />
第二步是文本压缩，目前采用的是<br />
JavaScript Compressor的压缩算法。<br />
(http://dean.edwards.name/packer/ ) <br />
<br />
这些都可以在设置窗口设置。<br />
默认情况先用语法压缩，当文件大于1000byte且采用文本压缩仍然可以压缩到原来大小90％时才在原来基础上采用文本压缩。<br />
<h3>与其他压缩工具压缩率比较： <br />
</h3>
<p>1. JavaScript Compressor(http:// dean.edwards.name/packer/)&nbsp;<br />
&nbsp;&nbsp;&nbsp; 与他自己的压缩工具代码为例（v2.02） packer压缩后大小为 7,428 字节（去除注释）。 <br />
&nbsp; &nbsp; 而我们的压缩工具可以压缩至7,256 &nbsp;字节 <br />
<strong><font color="#0000ff">&nbsp; &nbsp; </font><font color="#0000ff">7256 / 7428 = 0.9768443726440496 </font></strong><br />
2.Dojo ShrinkSafe （<strong>粗糙的东西，既低效又危险</strong>，建议原有用户赶紧换掉） <br />
&nbsp; &nbsp; 与他自己的框架源代码为例(v0.4.1)： <br />
&nbsp; &nbsp; 他自己压缩大小为149,518 字节,而我们压缩后可以缩小至81,261 字节 <br />
<font color="#ff0000"><strong><font color="#000000">&nbsp; &nbsp; 81261 / 149518 = 0.5434864029748927 </font><br />
</strong></font>
<h3><font color="#000000"><strong>安全性说明：</strong></font></h3>
<h2><font color="#ff00ff"></font></h2>
<p>1.JavaScript Compressor <br />
&nbsp; &nbsp; &nbsp; 基于文本的压缩，我没有细看其中逻辑，但是这种压缩出问题的可能性很低，我们的压缩工具也使用到他的压缩算法，在JSI 1.1 a8 及 <br />
其集成的第三方类库的测试中，未见异常。而且还有知名框架JQuery使用，相信不会有问题。
<p><u><font color="#ff0000">补充（2007-03-12）：今天发现，这个东西在分析JavaScript多行字符串语法时，有bug。不过这个问题在经过JSA语法压缩之后，将不复存在。</font></u><br />
<p><br />
<p><font color="#ff0000">2.Dojo ShrinkSafe </font><font color="#ff0000"><strong>危险！！！！！ </strong></font><br />
&nbsp; &nbsp;使用较短的名字替换掉长的局部变量名，这是一个<font color="#ff0000"><strong>极其不安全</strong></font>的压缩工具，举例说明： <br />
<p>
<div>javascript 代码</div>
<div>
<ol style="border-right: #444444 2px dotted; border-top: #444444 2px dotted; background: #eeeeee; border-left: #444444 2px dotted; color: #800080; border-bottom: #444444 2px dotted">
    <li><span><span>function(){&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;var&nbsp;withObject&nbsp;=&nbsp;{variable1:<span>1</span><span>}&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;var&nbsp;variable1&nbsp;=&nbsp;<span>2</span><span>;&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;with(withObject){&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;alert(variable1);&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;}&nbsp;&nbsp;</span>
    <li><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<div style="display: block"><br />
</div>
<div>将压缩成 ：</div>
<div>
<ol style="border-right: #444444 2px dotted; border-top: #444444 2px dotted; background: #eeeeee; border-left: #444444 2px dotted; color: #800080; border-bottom: #444444 2px dotted">
    <li><span><span>function(){&nbsp;&nbsp;</span></span>
    <li><span>var&nbsp;_1={variable1:<span>1</span><span>};&nbsp;&nbsp;</span></span>
    <li><span>var&nbsp;_2=<span>2</span><span>;&nbsp;&nbsp;</span></span>
    <li><span>with(_1){&nbsp;&nbsp;</span>
    <li><span>alert(_2);&nbsp;&nbsp;</span>
    <li><span>}&nbsp;&nbsp;</span>
    <li><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<div style="display: block"><br />
<br />
</div>
<div><strong>这明显是错误的</strong>，这个垃圾没有注意javascript某些特殊语法，和动态性。 <br />
对eval函数，catch操作，with语句，都未作任何处理。 <br />
</div>
<p>相比之下JSA的是当前我知道的最安全最有效的压缩工具。 <br />
JSA 不仅提供代码压缩功能，还可以做格式化，脚本分析。 <br />
<div>脚本分析功能可以用于查看脚本信息，以及查找脚本中的潜在问题。 <br />
比如查看脚本中申明了那些函数，变量。 <br />
使用了那些外部变量。等等。。。 </div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>下载地址：<br />
<a href="http://sourceforge.net/project/showfiles.php?group_id=175776"><u><font color="#810081">http://sourceforge.net/project/showfiles.php?group_id=175776</font></u></a><br />
或者<br />
<a href="http://forum.xidea.org/"><u><font color="#0000ff">http://forum.xidea.org </font></u></a>文件列表<br />
</div>
</div>
</div>
</span>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/180114.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2008-02-15 17:36 <a href="http://www.blogjava.net/wangxinsh55/archive/2008/02/15/180114.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用 javascript显示时间日期代码（来自网上） </title><link>http://www.blogjava.net/wangxinsh55/archive/2007/08/13/136283.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Mon, 13 Aug 2007 01:47:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2007/08/13/136283.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/136283.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2007/08/13/136283.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/136283.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/136283.html</trackback:ping><description><![CDATA[<div class=postbody>001说明 数字化的时钟 <br>效果 现在时刻：0:12:31 <br><br>&lt;span id="liveclock" style"=width: 109px; height: 15px"&gt;&lt;/span&gt;<br>&lt;SCRIPT language=javascript&gt;<br>function www_helpor_net()<br>{<br>var Digital=new Date()<br>var hours=Digital.getHours()<br>var minutes=Digital.getMinutes()<br>var seconds=Digital.getSeconds()<br><br>if(minutes&lt;=9)<br>minutes="0"+minutes<br>if(seconds&lt;=9)<br>seconds="0"+seconds<br>myclock="现在时刻：&lt;font size='5' face='Arial black'&gt;"+hours+":"+minutes+":"+seconds+"&lt;/font&gt;"<br>if(document.layers){document.layers.liveclock.document.write(myclock)<br>document.layers.liveclock.document.close()<br>}else if(document.all)<br>liveclock.innerHTML=myclock<br>setTimeout("www_helpor_net()",1000)<br>}<br><a href="http://www_helpor_net/" target=_blank><font color=#000080><u>www_helpor_net</u></font></a>();<br>//--&gt;<br>&lt;/SCRIPT&gt;<br><br>002说明 六种风格时间显示,一定有你喜欢的！ <br>效果 风格一: 星期三,4月21日,2004年 <br>风格二: 0:12:45上午 <br>风格三: 星期三,4月21日,2004年 0:12:45上午 <br>风格四: 4/21/04 <br>风格五: 0:12:45 <br>风格六: Wed Apr 21 00:12:45 UTC+0800 2004 <br><br>&lt;SCRIPT language="javascript"&gt;<br>&lt;!--<br>function initArray()<br>{<br>for(i=0;i&lt;initArray.arguments.length;i++)<br>this[i]=initArray.arguments[i];<br>}<br>var isnMonths=new initArray("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月");<br>var isnDays=new initArray("星期日","星期一","星期二","星期三","星期四","星期五","星期六","星期日");<br>today=new Date();<br>hrs=today.getHours();<br>min=today.getMinutes();<br>sec=today.getSeconds();<br>clckh=""+((hrs&gt;12)?hrs-12:hrs);<br>clckm=((min&lt;10)?"0":"")+min;clcks=((sec&lt;10)?"0":"")+sec;<br>clck=(hrs&gt;=12)?"下午":"上午";<br>var stnr="";<br>var ns="0123456789";<br>var a="";<br><br>function getFullYear(d)<br>{<br>yr=d.getYear();if(yr&lt;1000)<br>yr+=1900;return yr;}<br>document.write("&lt;table&gt;");<br><br>//下面各行分别是一种风格，把不需要的删掉即可<br>document.write("&lt;TR&gt;&lt;TD&gt;风格一:&lt;/TD&gt;&lt;TD&gt;"+isnDays[today.getDay()]+","+isnMonths[today.getMonth()]+""+today.getDate()+"日,"+getFullYear(today)+"年");<br>document.write("&lt;TR&gt;&lt;TD&gt;风格二:&lt;/TD&gt;&lt;TD&gt;"+clckh+":"+clckm+":"+clcks+""+clck+"&lt;/TD&gt;&lt;/TR&gt;");<br>document.write("&lt;TR&gt;&lt;TD&gt;风格三:&lt;/TD&gt;&lt;TD&gt;"+isnDays[today.getDay()]+","+isnMonths[today.getMonth()]+""+today.getDate()+"日,"+getFullYear(today)+"年 "+clckh+":"+clckm+":"+clcks+""+clck+"&lt;/TD&gt;&lt;/TR&gt;");<br>document.write("&lt;TR&gt;&lt;TD&gt;风格四:&lt;/TD&gt;&lt;TD&gt;"+(today.getMonth()+1)+"/"+today.getDate()+"/"+(getFullYear(today)+"").substring(2,4)+"&lt;/TD&gt;&lt;/TR&gt;");<br>document.write("&lt;TR&gt;&lt;TD&gt;风格五:&lt;/TD&gt;&lt;TD&gt;"+hrs+":"+clckm+":"+clcks+"&lt;/TD&gt;&lt;/TR&gt;");<br>document.write("&lt;TR&gt;&lt;TD VALIGN=TOP&gt;风格六:&lt;/TD&gt;&lt;TD&gt;"+today+"&lt;/TD&gt;&lt;/TR&gt;");<br><br>document.write("&lt;/table&gt;");<br>//--&gt;<br>&lt;/SCRIPT&gt;<br><br>003说明 显示他人在页面停留的时间，而且可以作出提醒 <br>效果 您在本站逗留了 <br><br>您在本站逗留了&lt;input type="text" name="helpor_net" size="15" style="border: 0 "&gt;<br>&lt;SCRIPT language="javascript"&gt;<br>&lt;!--<br>var sec=0;<br>var min=0;<br>var hou=0;<br>flag=0;<br>idt=window.setTimeout("www_helpor_net();",1000);<br>function www_helpor_net()<br>{<br>sec++;<br>if(sec==60){sec=0;min+=1;}<br>if(min==60){min=0;hou+=1;}<br>if((min&gt;0)&amp;&amp;(flag==0))<br>{<br>window.alert("您刚刚来了1分钟!可别急着走开，还有好多好东东等着您呢!--站长");<br>flag=1;<br>}<br>helpor_net.value=hou+"小时"+min+"分"+sec+"秒";<br>idt=window.setTimeout("www_helpor_net();",1000);<br>}<br>//--&gt;<br><br>&lt;/SCRIPT&gt;<br><br>004说明 这个时钟是有影子的，而且还在不停地走着呢 <br>效果 00:14:3300:14:33 <br><br>&lt;div id="bgclockshade" style="position:absolute;visibility:visible;font-family:'Arial black';color:#cccccc;font-size:20px;top:50px;left:173px"&gt;&lt;/div&gt;<br>&lt;div id="bgclocknoshade" style="position:absolute;visibility:visible;font-family:'Arial black';color:#000000;font-size:20px;top:48px;left:170px"&gt;&lt;/div&gt;<br>&lt;div id="mainbody" style="position:absolute; visibility:visible"&gt;<br>&lt;/div&gt;<br>&lt;script language=javaScript&gt;<br>&lt;!--<br>function www_helpor_net() {<br>thistime= new Date()<br>var hours=thistime.getHours()<br>var minutes=thistime.getMinutes()<br>var seconds=thistime.getSeconds()<br>if (eval(hours) &lt;10) {hours="0"+hours}<br>if (eval(minutes) &lt; 10) {minutes="0"+minutes}<br>if (seconds &lt; 10) {seconds="0"+seconds}<br>thistime = hours+":"+minutes+":"+seconds<br><br>if(document.all) {<br>bgclocknoshade.innerHTML=thistime<br>bgclockshade.innerHTML=thistime<br>}<br><br>if(document.layers) {<br>document.bgclockshade.document.write('&lt;div id="bgclockshade" style="position:absolute;visibility:visible;font-family:Verdana;color:FFAAAAA;font-size:20px;top:10px;left:152px"&gt;'+thistime+'&lt;/div&gt;')<br>document.bgclocknoshade.document.write('&lt;div id="bgclocknoshade" style="position:absolute;visibility:visible;font-family:Verdana;colorDDDDD;font-size:20px;top:8px;left:150px"&gt;'+thistime+'&lt;/div&gt;')<br>document.close()<br>}<br>var timer=setTimeout("www_helpor_net()",200)<br>}<br><a href="http://www_helpor_net/" target=_blank><font color=#000080><u>www_helpor_net</u></font></a>();<br>//--&gt;<br>&lt;/script&gt;<br><br>005说明 年月日都是用全中文显示 <br>效果 公元二零零三年四月二十一日 <br><br>&lt;script language="JavaScript"&gt;<br>&lt;!--<br>function number(index1){<br>var numberstring="一二三四五六七八九十";<br>if(index1 ==0) {document.write("十")}<br>if(index1 &lt; 10){<br>document.write(numberstring.substring(0+(index1-1),index1))}<br>else if(index1 &lt; 20 ){<br>document.write("十"+numberstring.substring(0+(index1-11),(index1-10)))}<br>else if(index1 &lt; 30 ){<br>document.write("二十"+numberstring.substring(0+(index1-21),(index1-20)))}<br>else{<br>document.write("三十"+numberstring.substring(0+(index1-31),(index1-30)))}<br>}<br><br>var today1 = new Date()<br>var month = today1.getMonth()+1<br>var date = today1.getDate()<br>var day = today1.getDay()<br><br>document.write("公元二零零三年")<br>number(month)<br>document.write("月")<br>number(date)<br>document.write("日")<br>//--&gt;<br>&lt;/script&gt;<br><br>006美女时钟<br>&lt;/SPAN&gt;&lt;SPAN id=_ctl0__ctl10_lblContent style="TABLE-LAYOUT: fixed; FONT-SIZE: 14px; WORD-BREAK: break-all; LINE-HEIGHT: 150%"&gt;&lt;EMBED src=http://www.twinsbbs.com/swf/clock.swf type=application/x-shockwave-flash&gt;&lt;/EMBED&gt;&lt;/SPAN&gt;&lt;/TD&gt; &lt;/TR&gt;&lt;/TABLE&gt;<br>&lt;SCRIPT language=javascript&gt;<br>&lt;!--<br>var s=document.all("_ctl0__ctl10_lblContent").innerText;<br>if(s=="当前您正处于安全模式，无法显示文章内容!")document.all("_ctl0__ctl10_lblContent").outerHTML="&lt;span style='color:red;font-size:12px;border:1px black solid;background-color:#cccccc'&gt;"+s+"&lt;/span&gt;";<br>//--&gt;<br>&lt;/SCRIPT&gt;<br>&lt;BR&gt;<br>&lt;TABLE width="100%"&gt;<br>&lt;TBODY&gt;<br>&lt;TR&gt;<br>&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;<br>&lt;TR&gt;<br>&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;<br></div>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/136283.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2007-08-13 09:47 <a href="http://www.blogjava.net/wangxinsh55/archive/2007/08/13/136283.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jQuery 与 prototype 共存</title><link>http://www.blogjava.net/wangxinsh55/archive/2007/06/25/126168.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Mon, 25 Jun 2007 09:48:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2007/06/25/126168.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/126168.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2007/06/25/126168.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/126168.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/126168.html</trackback:ping><description><![CDATA[<p class=Title>方法一：</p>
<pre><code>&lt;html&gt;&nbsp; <br>&nbsp;&lt;head&gt;&nbsp; <br>&nbsp;&nbsp; &lt;script src="prototype.js"&gt;&lt;/script&gt;&nbsp; <br>&nbsp;&nbsp; &lt;script src="jquery.js"&gt;&lt;/script&gt;&nbsp; <br>&nbsp;&nbsp; &lt;script&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; jQuery.noConflict();&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; // Use jQuery via jQuery(...)&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; jQuery(document).ready(function(){&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jQuery("div").hide();&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; });&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; // Use Prototype with $(...), etc.&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; $('someid').style.display = 'none';&nbsp;&nbsp; <br>&nbsp;&nbsp; &lt;/script&gt;&nbsp; <br>&nbsp;&lt;/head&gt;&nbsp; <br>&nbsp;&lt;body&gt;&lt;/body&gt;&nbsp; <br>&nbsp;&lt;/html&gt;</code></pre>
<p class=Title>方法二：</p>
<pre><code>&lt;html&gt;&nbsp; <br>&nbsp;&lt;head&gt;&nbsp; <br>&nbsp;&nbsp; &lt;script src="prototype.js"&gt;&lt;/script&gt;&nbsp; <br>&nbsp;&nbsp; &lt;script src="jquery.js"&gt;&lt;/script&gt;&nbsp; <br>&nbsp;&nbsp; &lt;script&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; var $j = jQuery.noConflict();&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; // Use jQuery via $j(...)&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; $j(document).ready(function(){&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $j("div").hide();&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; });&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; // Use Prototype with $(...), etc.&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; $('someid').style.display = 'none';&nbsp;&nbsp; <br>&nbsp;&nbsp; &lt;/script&gt;&nbsp; <br>&nbsp;&lt;/head&gt;&nbsp; <br>&nbsp;&lt;body&gt;&lt;/body&gt;&nbsp; <br>&nbsp;&lt;/html&gt;&nbsp; </code></pre>
<p class=Title>方法三：</p>
<pre><code>&lt;html&gt;&nbsp; <br>&nbsp;&lt;head&gt;&nbsp; <br>&nbsp;&nbsp; &lt;script src="prototype.js"&gt;&lt;/script&gt;&nbsp; <br>&nbsp;&nbsp; &lt;script src="jquery.js"&gt;&lt;/script&gt;&nbsp; <br>&nbsp;&nbsp; &lt;script&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; jQuery.noConflict();&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; // Put all your code in your document ready area&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; jQuery(document).ready(function($){&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Do jQuery stuff using $&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $("div").hide();&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; });&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; // Use Prototype with $(...), etc.&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; $('someid').style.display = 'none';&nbsp;&nbsp; <br>&nbsp;&nbsp; &lt;/script&gt;&nbsp; <br>&nbsp;&lt;/head&gt;&nbsp; <br>&nbsp;&lt;body&gt;&lt;/body&gt;&nbsp; <br>&nbsp;&lt;/html&gt;&nbsp; </code></pre>
<br>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/126168.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2007-06-25 17:48 <a href="http://www.blogjava.net/wangxinsh55/archive/2007/06/25/126168.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>推荐--jQuery使用手册 </title><link>http://www.blogjava.net/wangxinsh55/archive/2007/06/25/126166.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Mon, 25 Jun 2007 09:36:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2007/06/25/126166.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/126166.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2007/06/25/126166.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/126166.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/126166.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 翻译整理：Young.J官方网站：http://jquery.com&nbsp;&nbsp;&nbsp; jQuery是一款同prototype一样优秀js开发库类，特别是对css和XPath的支持，使我们写js变得更加方便！如果你不是个js高手又想写出优 秀的js效果，jQuery可以帮你达到目的！&nbsp;&nbsp; 下载地址：Starterkit （http://jquery.bassi...&nbsp;&nbsp;<a href='http://www.blogjava.net/wangxinsh55/archive/2007/06/25/126166.html'>阅读全文</a><img src ="http://www.blogjava.net/wangxinsh55/aggbug/126166.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2007-06-25 17:36 <a href="http://www.blogjava.net/wangxinsh55/archive/2007/06/25/126166.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jQuery中文入门指南，翻译加实例，jQuery的起点教程</title><link>http://www.blogjava.net/wangxinsh55/archive/2007/06/25/126164.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Mon, 25 Jun 2007 09:34:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2007/06/25/126164.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/126164.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2007/06/25/126164.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/126164.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/126164.html</trackback:ping><description><![CDATA[<h1>jQuery中文入门指南，翻译加实例，jQuery的起点教程</h1>
<div>
<h3>中文版译者：<a href="http://keelsike.blogspot.com/">Keel</a></h3>
<p>此文以实例为基础一步步说明了jQuery的工作方式。现以中文翻译（添加我的补充说明）如下。如有相关意见或建议请麻烦到我的 <a href="http://keelsike.blogspot.com/">BLOG</a> 写个回复或者 <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#107;&#101;&#101;&#108;&#46;&#115;&#105;&#107;&#101;&#37;&#50;&#56;&#97;&#116;&#37;&#50;&#57;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;">EMAIL</a> 告知。</p>
<p>英文原版：<a href="http://jquery.bassistance.de/jquery-getting-started.html">http://jquery.bassistance.de/jquery-getting-started.html</a> ，感谢原文作者 <a href="http://bassistance.de/">J&#246;rn Zaefferer</a></p>
<p><strong>本文发布已征求原作者同意。</strong> </p>
<p>另外我认为在学习过程中,有两个API文档你要打开随时查看:</p>
<ul>
    <li><a href="http://jquery.com/api/">http://jquery.com/api/</a>
    <li><a href="http://visualjquery.com/">http://visualjquery.com/</a></li>
</ul>
</div>
<h4>以下部分为原文翻译:</h4>
<hr>
<div>
<h2>jQuery入门指南教程</h2>
<p>这个指南是一个对jQuery库的说明，要求读者了解HTML(DOM)和CSS的一些常识。它包括了一个简单的Hello World的例子，选择器和事件基础，AJAX、FX的用法，以及如何制作jQuery的插件。 这个指南包括了很多代码，你可以copy它们，并试着修改它们，看看产生的效果。 </p>
<h2>内容提要</h2>
<ol>
    <li><a href="http://www.k99k.com/jQuery_getting_started.html#setup">安装</a>
    <li><a href="http://www.k99k.com/jQuery_getting_started.html#hello">Hello jQuery</a>
    <li><a href="http://www.k99k.com/jQuery_getting_started.html#find">Find me:使用选择器和事件</a>
    <li><a href="http://www.k99k.com/jQuery_getting_started.html#rate">Rate me:使用AJAX</a>
    <li><a href="http://www.k99k.com/jQuery_getting_started.html#">Animate me(让我生动起来):使用FX</a>
    <li><a href="http://www.k99k.com/jQuery_getting_started.html#sort">Sort me(将我有序化):使用tablesorter插件(表格排序)</a>
    <li><a href="http://www.k99k.com/jQuery_getting_started.html#plug">Plug me:制作您自己的插件</a>
    <li><a href="http://www.k99k.com/jQuery_getting_started.html#next">Next steps(下一步)</a></li>
</ol>
</div>
<div>
<h2 id=setup>安装</h2>
<p>一开始,我们需要一个jQuery的库,最新的下载可以到<a href="http://jquery.com/src/">这里</a>找到。这个指南提供一个基本包含实例的包供下载.</p>
<p>下载：<a class=download href="http://www.k99k.com/jquery-starterkit.zip">jQuery Starterkit</a></p>
<p class=log>(译者Keel注:一定要下载这个包，光看文章不实践肯定是不行的。) </p>
<p class=instruction>下载后解压缩，然后用你最喜欢的文本编辑器打开starterkit.html和custom.js这两个文件。<span class=log>(译者Keel注:这两个就是例子文件,所有的例子都用这两个例子作出,custom.js写jQuery代码,starterkit.html观察效果.建议用editPlus打开) </span></p>
<p>现在,我们就已经做好了一切准备来进行这个著名的"Hello world"例子.</p>
<h4>本章的相关链接:</h4>
<ul>
    <li><a href="http://www.k99k.com/jquery-starterkit.zip">Starterkit</a>
    <li><a href="http://jquery.com/src/">jQuery Downloads</a></li>
</ul>
</div>
<div>
<h2 id=hello>Hello jQuery</h2>
<p>在做所有事情之前,我们要让jQuery读取和处理文档的DOM,必须尽可能快地在DOM载入后开始执行事件,所以,我们用一个ready事件作为处理HTML文档的开始.看看我们打开的custom.js这个文件,里面已经准备好了:</p>
<pre>$(document).ready(function() {<br>	// do stuff when DOM is ready<br>});</pre>
<p>放一个简单的alert事件在需要等DOM完成载入,所以我们把任务稍稍变复杂一点:在点击任何一个链接时显示一个alert.</p>
<pre>$(document).ready(function() {<br>	$("a").click(function() {<br>		alert("Hello world!");<br>	});<br>});</pre>
<p>这样在你点击页面的一个链接时都会触发这个"Hello world"的提示。</p>
<p class=log>(译者Keel注:请照此代码修改custom.js并保存,然后用浏览器打开starterkit.html观察效果。)</p>
<p>让我们看一下这些修改是什么含义。$("a") 是一个jQuery选择器(selector),在这里，它选择所有的a标签<span class=log>（译者Keel注：即&lt;a&gt;&lt;/a&gt;）</span>，$ 号是 jQuery &#8220;类&#8221;(jQuery "class")的一个别称，因此$()构造了一个新的jQuery 对象(jQuery object)。函数 click() 是这个jQuery对象的一个方法，它绑定了一个单击事件到所有选中的标签(这里是所有的a标签),并在事件触发时执行了它所提供的alert方法.</p>
<p>这里有一个拟行相似功能的代码:</p>
<pre>&lt;a href="#" onclick="alert('Hello world')"&gt;Link&lt;/a&gt;</pre>
<p>不同之处很明显,用jQuery不需要在每个a标签上写onclick事件,所以我们拥有了一个整洁的结构文档(HTML)和一个行为文档(JS),达到了将结构与行为分开的目的,就像我们使用CSS追求的一样.</p>
<p>下面我们会更多地了解到选择器与事件.</p>
<h4>本章的相关链接:</h4>
<ul>
    <li><a href="http://jquery.com/docs/Base/">jQuery Base</a>
    <li><a href="http://jquery.com/docs/Base/Expression/">jQuery Expressions</a>
    <li><a href="http://jquery.com/docs/Base/Events/">jQuery Basic Events</a></li>
</ul>
</div>
<div>
<h2 id=find>Find me:使用选择器和事件</h2>
<p>jQuery提供两种方式来选择html的 elements，第一种是用CSS和Xpath选择器联合起来形成一个字符串来传送到jQuery的构造器（如：$("div &gt; ul a")）；第二种是用jQuery对象的几个methods(方法)。这两种方式还可以联合起来混合使用。</p>
<p>为了测试一下这些选择器，我们来试着在我们starterkit.html中选择并修改第一个ordered list.</p>
<p>一开始，我们需要选择这个list本身，这个list有一个ID叫&#8220;orderedlist&#8221;，通常的javascript写法是document.getElementById("orderedlist").在jQuery中，我们这样做：</p>
<pre>$(document).ready(function() {<br>	$("#orderedlist").addClass("red");<br>});</pre>
<p>这里将starterkit中的一个CSS样式red附加到了orderedlist上<span class=log>(译者Keel注：参考测试包中的css目录下的core.css，其中定义了red样式)</span>。因此，在你刷新了starterkit.html后，你将会看到第一个有序列表(ordered list )背景色变成了红色，而第二个有序列表没有变化.</p>
<p>现在，让我们添加一些新的样式到list的子节点.</p>
<pre>$(document).ready(function() {<br>	$("#orderedlist &gt; li").addClass("blue");<br>});</pre>
<p>这样，所有orderedlist中的li都附加了样式"blue"。</p>
<p>现在我们再做个复杂一点的，当把鼠标放在li对象上面和移开时进行样式切换，但只在list的最后一个element上生效。</p>
<pre>$(document).ready(function() {<br>	$("#orderedlist li:last").hover(function() {<br>		$(this).addClass("green");<br>	}, function() {<br>		$(this).removeClass("green");<br>	});<br>});</pre>
<p>还有大量的类似的<a class=doc title="Documentation for CSS selectors" href="http://jquery.com/docs/Base/Expression/CSS/">CSS</a>和<a class=doc title="Documentation for XPath selectors" href="http://jquery.com/docs/Base/Expression/XPath/">XPath</a>例子，更多的例子和列表可以在<a class=doc title="Documentation for base selectors" href="http://jquery.com/docs/Base/Expression/">这里</a>找到。<span class=log>（译者Keel注：入门看此文，修行在个人，要想在入门之后懂更多，所以这段话的几个链接迟早是要必看的！不会又要翻译吧...^_^!）</span></p>
<p>每一个onXXX事件都有效，如onclick,onchange,onsubmit等，都有jQuery等价表示方法<span class=log>（译者Keel注：jQuery不喜欢onXXX，所以都改成了XXX，去掉了on）</span>。<a class=doc title="Documentation for advanced events" href="http://jquery.com/docs/EventModule/">其他的一些事件</a>，如ready和hover,也提供了相应的方法。</p>
<p>你可以在<a href="http://visualjquery.com/">Visual jQuery</a>找到全部的事件列表，在Events栏目下.</p>
<p>用这些选择器和事件你已经可以做很多的事情了，但这里有一个更强的好东东！</p>
<pre>$(document).ready(function() {<br>	$("#orderedlist").find("li").each(function(i) {<br>		$(this).html( $(this).html() + " BAM! " + i );<br>	});<br>});</pre>
<p>find() 让你在已经选择的element中作条件查找,因此 $("#orderedlist).find("li") 就像 $("#orderedlist li"). each()一样迭代了所有的li，并可以在此基础上作更多的处理。 大部分的方法,如addClass(), 都可以用它们自己的 each() 。在这个例子中, html()用来获取每个li的html文本, 追加一些文字，并将之设置为li的html文本。<span class=log>（译者Keel注：从这个例子可以看到.html()方法是获取对象的html代码，而.html('xxx')是设置'xxx'为对象的html代码）</span></p>
<p>另一个经常碰到的任务是在没有被jQuery覆盖的DOM元素上call一些方法，想像一个在你用AJAX方式成功提交后的reset：</p>
<pre>$(document).ready(function() {<br>	// use this to reset a single form<br>	$("#reset").click(function() {<br>		$("#form")[0].reset();<br>	});<br>});</pre>
<p class=log>（译者Keel注：这里作者将form的id也写成了form，源文件有&lt;form id="form"&gt;，这是非常不好的写法，你可以将这个ID改成form1或者testForm，然后用$("#form1")或者$ ("#testForm")来表示它，再进行测试。）</p>
<p>这个代码选择了所有ID为"form"的元素，并在其第一个上call了一个reset()。如果你有一个以上的form，你可以这样做：</p>
<pre>$(document).ready(function() {<br>	// use this to reset several forms at once<br>	$("#reset").click(function() {<br>		$("form").each(function() {<br>			this.reset();<br>		});<br>	});<br>});</pre>
<p class=log>（译者Keel注：请注意一定要亲自将这些代码写在custom.js中并在starterkit.html上测试效果才能有所体会！必要时要观察starterkit.html的html代码）</p>
<p>这样你在点击Reset链接后，就选择了文档中所有的form元素，并对它们都执行了一次reset()。</p>
<p>还 有一个你可能要面对的问题是不希望某些特定的元素被选择。jQuery 提供了filter() 和not() 方法来解决这个问题。 filter()以过滤表达式来减少不符合的被选择项, not()则用来取消所有符合过滤表达式的被选择项. 考虑一个无序的list，你想要选择所有的没有ul子元素的li元素。</p>
<pre>$(document).ready(function() {<br>	$("li").not("[ul]").css("border", "1px solid black");<br>});</pre>
<p>这个代码选择了所有的li元素，然后去除了没有ul子元素的li元素。刷新浏览器后，所有的li元素都有了一个边框，只有ul子元素的那个li元素例外。</p>
<p class=log>（译 者Keel注：请注意体会方便之极的css()方法，并再次提醒请务必实际测试观察效果，比方说换个CSS样式呢？再加一个CSS样式呢？像这样：$ ("li").not("[ul]").css("border", "1px solid black").css("color","red");）</p>
<p>上面代码中的[expression] 语法是从XPath而来，可以在子元素和属性(elements and attributes)上用作过滤器，比如你可能想选择所有的带有name属性的链接:</p>
<pre>$(document).ready(function() {<br>	$("a[@name]").background("#eee");<br>});</pre>
<p>这个代码给所有带有name属性的链接加了一个背景色。<span class=log>（译者Keel注：这个颜色太不明显了，建议写成$("a[@name]").background("red");）</span></p>
<p>更常见的情况是以name来选择链接，你可能需要选择一个有特点href属性的链接，这在不同的浏览器下对href的理解可能会不一致，所以我们的部分匹配("*=")的方式来代替完全匹配("=")：</p>
<pre>$(document).ready(function() {<br>	$("a[@href*=/content/gallery]").click(function() {<br>		// do something with all links that point somewhere to /content/gallery<br>	});<br>});</pre>
<p>到现在为止，选择器都用来选择子元素或者是过滤元素。另外还有一种情况是选择上一个或者下一个元素，比如一个FAQ的页面，答案首先会隐藏，当问题点击时，答案显示出来，jQuery代码如下：</p>
<pre>$(document).ready(function() {<br>	$('#faq').find('dd').hide().end().find('dt').click(function() {<br>         var answer = $(this).next();<br>         if (answer.is(':visible')) {<br>             answer.slideUp();<br>         } else {<br>             answer.slideDown();<br>         }<br>     });<br>});</pre>
<p>这 里我们用了一些链式表达法来减少代码量，而且看上去更直观更容易理解。像'#faq' 只选择了一次，利用end()方法，第一次find()方法会结束(undone)，所以我们可以接着在后面继续find('dt')，而不需要再写$ ('#faq').find('dt')。</p>
<p>在点击事件中的，我们用 $(this).next() 来找到dt下面紧接的一个dd元素，这让我们可以快速地选择在被点击问题下面的答案。</p>
<p class=log>（译 者Keel注：这个例子真是太酷了，FAQ中的答案可以收缩！从利用next()的思路到实现这些效果都有很多地方需要我们消化，注意 if (answer.is(':visible'))用法，注意answer.slideUp();不懂的地方赶紧查我在最开始提到的两个必看API文档）</p>
<p>除了选择同级别的元素外，你也可以选择父级的元素。可能你想在用户鼠标移到文章某段的某个链接时，它的父级元素--也就是文章的这一段突出显示，试试这个：</p>
<pre>$(document).ready(function() {<br>	$("a").hover(function() {<br>		$(this).parents("p").addClass("highlight");<br>	}, function() {<br>		$(this).parents("p").removeClass("highlight");<br>	});<br>});</pre>
<p>测试效果可以看到，移到文章某段的链接时，它所在的段全用上highlight样式，移走之后又恢复原样。</p>
<span class=log>（译者Keel注：highlight是core.css中定义的样式，你也可以改变它，注意这里有第二个function()这是hover方法的特点，请在API文档中查阅hover，上面也有例子说明）</span>
<p>在我们继续之前我们先来看看这一步： jQuery会让代码变得更短从而更容易理解和维护，下面是$(document).ready(callback)的缩写法：</p>
<pre>$(function() {<br>	// code to execute when the DOM is ready<br>});</pre>
<p>应用到我们的Hello world例子中，可以这样:</p>
<pre>$(function() {<br>	$("a").click(function() {<br>		alert("Hello world!");<br>	});<br>});</pre>
<p>现在，我们手上有了这些基础的知识，我们可以更进一步的探索其它方面的东西，就从AJAX开始！</p>
<h4>本章的相关链接:</h4>
<ul>
    <li><a href="http://jquery.com/api/">jQuery API documentation</a>
    <li><a href="http://visualjquery.com/">Visual jQuery - A categorized browsable API documentation</a>
    <li><a href="http://jquery.com/docs/Base/Expression/CSS/">jQuery Expressions: CSS</a>
    <li><a href="http://jquery.com/docs/Base/Expression/XPath/">jQuery Expressions: XPath</a>
    <li><a href="http://jquery.com/docs/Base/Expression/Custom/">jQuery Expressions: Custom</a>
    <li><a href="http://jquery.com/docs/EventModule/">jQuery Special Events</a>
    <li><a href="http://jquery.com/docs/Base/Traverse/">jQuery DOM Traversing</a></li>
</ul>
</div>
<div>
<h2 id=rate>Rate me:使用AJAX</h2>
<p>在这一部分我们写了一个小小的AJAX应用，它能够rate一些东西<span class=log>（译Keel注：就是对某些东西投票）</span>，就像在youtube.com上面看到的一样。</p>
<p>首先我们需要一些服务器端代码，这个例子中用到了一个PHP文件，读取rating参数然后返回rating总数和平均数。看一下<a href="http://www.k99k.com/rate.phps">rate.php</a>代码.</p>
<p>虽然这些例子也可以不使用AJAX来实现，但显示我们不会那么做，我们用jQuery生成一个DIV容器，ID是"rating".</p>
<pre>$(document).ready(function() {<br>	// generate markup<br>	var ratingMarkup = ["Please rate: "];<br>	for(var i=1; i &lt;= 5; i++) {<br>		ratingMarkup[ratingMarkup.length] = "&lt;a href='#'&gt;" + i + "&lt;/a&gt;&nbsp;";<br>	}<br>	// add markup to container and applier click handlers to anchors<br>	$("#rating").append( ratingMarkup.join('') ).find("a").click(function(e) {<br>		e.preventDefault();<br>		// send requests<br>		$.post("rate.php", {rating: $(this).html()}, function(xml) {<br>			// format result<br>			var result = [<br>				"Thanks for rating, current average: ",<br>				$("average", xml).text(),<br>				", number of votes: ",<br>				$("count", xml).text()<br>			];<br>			// output result<br>			$("#rating").html(result.join(''));<br>		} );<br>	});<br>});</pre>
<p>这段代码生成了5个链接，并将它们追加到id为"rating"容器中，当其中一个链接被点击时，该链接标明的分数就会以rating参数形式发送到rate.php，然后，结果将以XML形式会从服务器端传回来，添加到容器中，替代这些链接。</p>
<p>如果你没有一个安装过PHP的webserver，你可以看看这个<a href="http://www.k99k.com/example-rateme.html">在线的例子</a>.</p>
<p>不使用javascript实现的例子可以访问 <a href="http://www.softonic.de/ie/51494">softonic.de</a> 点击 "Kurz bewerten!"</p>
<p>更多的AJAX方法可以从<a class=doc title="Documentation for AJAX methods" href="http://jquery.com/docs/AJAXModule/">这里</a> 找到，或者看看<a href="http://visualjquery.com/">API文档</a> 下面的AJAX filed under AJAX.</p>
<p class=log>（译者Keel注：这个在线实例从国内访问还是比较慢的，点击后要等一会儿才能看到结果，可以考虑对它进行修改，比如加上loading，投票后加上再投票的返回链接等。此外，这个例子中还是有很多需要进一步消化的地方，看不懂的地方请参考API文档。）</p>
<p>一个在使用AJAX载入内容时经常发生的问题是：当载入一个事件句柄到一个HTML文档时，还需要在载入内容上应用这些事件，你不得不在内容加载完成后应用这些事件句柄，为了防止代码重复执行，你可能用到如下一个function:</p>
<pre>// lets use the shortcut<br>$(function() {<br>	var addClickHandlers = function() {<br>		$("a.clickMeToLoadContent").click(function() {<br>			$("#target").load(this.href, addClickHandlers);<br>		});<br>	};<br>	addClickHandlers();<br>});</pre>
<p>现在，addClickHandlers只在DOM载入完成后执行一次，这是在用户每次点击具有clickMeToLoadContent 这个样式的链接并且内容加载完成后.</p>
<p>请注意addClickHandlers函数是作为一个局部变量定义的，而不是全局变量(如：function addClickHandlers() {...})，这样做是为了防止与其他的全局变量或者函数相冲突.</p>
<p>另一个常见的问题是关于回调(callback)的参数。你可以通过一个额外的参数指定回调的方法，简单的办法是将这个回调方法包含在一个其它的function中:</p>
<pre>// get some data<br>var foobar = ...;<br>// specify handler, it needs data as a paramter<br>var handler = function(data) {<br>  ...<br>};<br>// add click handler and pass foobar!<br>$('a').click( function(event) { handler(foobar); } );<br><br>// if you need the context of the original handler, use apply:<br>$('a').click( function(event) { handler.apply(this, [foobar]); } );</pre>
<p>用到简单的AJAX后，我们可以认为已经非常之&#8220;web2.0&#8221;了，但是到现在为止，我们还缺少一些酷炫的效果。下一节将会谈到这些效果.</p>
<h4>本章的相关链接:</h4>
<ul>
    <li><a href="http://jquery.com/docs/AJAXModule/">jQuery AJAX Module</a>
    <li><a href="http://jquery.com/api/">jQuery API: Contains description and examples for append and all other jQuery methods</a>
    <li><a href="http://jquery.com/demo/thickbox/">ThickBox: A jQuery plugin that uses jQuery to enhance the famous lightbox</a></li>
</ul>
</div>
<div>
<h2 id=animate>Animate me(让我生动起来):使用FX</h2>
<p>一些动态的效果可以使用 <code>show()</code> 和 <code>hide()</code>来表现:</p>
<pre>$(document).ready(function() {<br>	$("a").toggle(function() {<br>		$(".stuff").hide('slow');<br>	}, function() {<br>		$(".stuff").show('fast');<br>	});<br>});</pre>
<p>你可以与 <code>animate()</code>联合起来创建一些效果,如一个带渐显的滑动效果:</p>
<pre>$(document).ready(function() {<br>	$("a").toggle(function() {<br>		$(".stuff").animate({<br>			height: 'hide',<br>			opacity: 'hide'<br>		}, 'slow');<br>	}, function() {<br>		$(".stuff").animate({<br>			height: 'show',<br>			opacity: 'show'<br>		}, 'slow');<br>	});<br>});</pre>
<p>很多不错的效果可以访问<a href="http://interface.eyecon.ro/">interface plugin collection</a>. 这个站点提供了很多demos和文档</p>
<p>这些效果插件是位于jQuery插件列表的前面的，当然也有很多其他的插件，比如我们下一章讲到的表格排序插件。</p>
<h4>本章的相关链接:</h4>
<ul>
    <li><a href="http://jquery.com/docs/FxModule/">jQuery FX Module</a>
    <li><a href="http://interface.eyecon.ro/">Interface plugin</a></li>
</ul>
</div>
<div>
<h2 id=sort>Sort me(将我有序化):使用tablesorter插件(表格排序)</h2>
<p>这个表格排序插件能让我们在客户端按某一列进行排序，引入jQuery和这个插件的js文件，然后告诉插件你想要哪个表格拥有排序功能。</p>
<p>要测试这个例子，先在starterkit.html中加上像下面这一行的代码：</p>
<pre>&lt;script src="lib/jquery.tablesorter.js" type="text/javascript"&gt;&lt;/script&gt;</pre>
<p>然后可以这样调用不着:</p>
<pre>$(document).ready(function() {<br>	$("#large").tableSorter();<br>});</pre>
<p>现在点击表格的第一行head区域，你可以看到排序的效果，再次点击会按倒过来的顺序进行排列。</p>
<p>这个表格还可以加一些突出显示的效果，我们可以做这样一个隔行背景色（斑马线）效果:</p>
<pre>$(document).ready(function() {<br>	$("#large").tableSorter({<br>		stripingRowClass: ['odd','even'],	// Class names for striping supplyed as a array.<br>		stripRowsOnStartUp: true		// Strip rows on tableSorter init.<br>	});<br>});</pre>
<p>关于这个插件的更多例子和文档可以在 <a href="http://motherrussia.polyester.se/jquery-plugins/tablesorter/">tablesorter首页</a>找到.</p>
<p>几乎所有的特件都是这样用的:先include插件的js文件,然后在某些元素上使用插件定义的方法,当然也有一些参数选项是可以配置的</p>
<p>经常更新的插件列表可以从jQuery官方站 <a title="Plugins for jQuery" href="http://jquery.com/plugins/">on the jQuery site</a>找到.</p>
<p>当你更经常地使用jQuery时,你会发现将你自己的代码打包成插件是很有用处的,它能方便地让你的公司或者其他人进行重用.下一章我们将谈到如何构建一个自己的插件.</p>
<h4>本章的相关链接:</h4>
<ul>
    <li><a href="http://jquery.com/plugins/">Plugins for jQuery</a>
    <li><a href="http://motherrussia.polyester.se/jquery-plugins/tablesorter/">Tablesorter Plugin</a></li>
</ul>
</div>
<div>
<h2 id=plug>Plug me:制作自己的插件</h2>
<p>写一个自己的jQuery插件是非常容易的,如果你按照下面的原则来做,可以让其他人也容易地结合使用你的插件.</p>
<ol>
    <li>为你的插件取一个名字,在这个例子里面我们叫它"foobar".
    <li>创建一个像这样的文件:jquery.[yourpluginname].js,比如我们创建一个jquery.foobar.js
    <li>创建一个或更多的插件方法,使用继承jQuery对象的方式,如:
    <pre>jQuery.fn.foobar = function() {<br>	// do something<br>};</pre>
    <li>可选的:创建一个用于帮助说明的函数,如:
    <pre>jQuery.fooBar = {<br>	height: 5,<br>	calculateBar = function() { ... },<br>	checkDependencies = function() { ... }<br>};</pre>
    <p>你现在可以在你的插件中使用这些帮助函数了:</p>
    <pre>jQuery.fn.foobar = function() {<br>	// do something<br>	jQuery.foobar.checkDependencies(value);<br>	// do something else<br>};</pre>
    <li>可选的l:创建一个默认的初始参数配置,这些配置也可以由用户自行设定,如:
    <pre>jQuery.fn.foobar = function(options) {<br>	var settings = {<br>		value: 5,<br>		name: "pete",<br>		bar: 655<br>	};<br>	if(options) {<br>		jQuery.extend(settings, options);<br>	}<br>};</pre>
    <p>现在可以无需做任何配置地使用插件了,默认的参数在此时生效:</p>
    <pre>$("...").foobar();</pre>
    <p>或者加入这些参数定义:</p>
    <pre>$("...").foobar({<br>	value: 123,<br>	bar: 9<br>});</pre>
    </li>
</ol>
<p>如果你release你的插件, 你还应该提供一些例子和文档,大部分的插件都具备这些良好的参考文档.</p>
<p>现在你应该有了写一个插件的基础,让我们试着用这些知识写一个自己的插件.</p>
<p>很多人试着控制所有的radio或者checkbox是否被选中,比如:</p>
<pre>$("input[@type='checkbox']").each(function() {<br>	this.checked = true;<br>	// or, to uncheck<br>	this.checked = false;<br>	// or, to toggle<br>	this.checked = !this.checked;<br>});</pre>
<p>无论何时候，当你的代码出现each时，你应该重写上面的代码来构造一个插件,很直接地:</p>
<pre>$.fn.check = function() {<br>	return this.each(function() {<br>		this.checked = true;<br>	});<br>};</pre>
<p>这个插件现在可以这样用:</p>
<pre>$("input[@type='checkbox']").check();</pre>
<p>现在你应该还可以写出uncheck()和toggleCheck()了.但是先停一下,让我们的插件接收一些参数.</p>
<pre>$.fn.check = function(mode) {<br>	var mode = mode || 'on'; // if mode is undefined, use 'on' as default<br>	return this.each(function() {<br>		switch(mode) {<br>		case 'on':<br>			this.checked = true;<br>			break;<br>		case 'off':<br>			this.checked = false;<br>			break;<br>		case 'toggle':<br>			this.checked = !this.checked;<br>			break;<br>		}<br>	});<br>};</pre>
<p>这里我们设置了默认的参数,所以将"on"参数省略也是可以的,当然也可以加上"on","off", 或 "toggle",如:</p>
<pre>$("input[@type='checkbox']").check();<br>$("input[@type='checkbox']").check('on');<br>$("input[@type='checkbox']").check('off');<br>$("input[@type='checkbox']").check('toggle');</pre>
<p>如果有多于一个的参数设置会稍稍有点复杂,在使用时如果只想设置第二个参数,则要在第一个参数位置写入null.</p>
<p>从上一章的tablesorter插件用法我们可以看到,既可以省略所有参数来使用或者通过一个 key/value 对来重新设置每个参数.</p>
<p>作为一个练习,你可以试着将 <a href="http://www.k99k.com/jQuery_getting_started.html#rate">第四章</a> 的功能重写为一个插件.这个插件的骨架应该是像这样的:</p>
<pre>$.fn.rateMe = function(options) {<br>	var container = this; // instead of selecting a static container with $("#rating"), we now use the jQuery context<br>	<br>	var settings = {<br>		url: "rate.php"<br>		// put more defaults here<br>		// remember to put a comma (",") after each pair, but not after the last one!<br>	};<br>	<br>	if(options) { // check if options are present before extending the settings<br>		$.extend(settings, options);<br>	}<br>	<br>	// ...<br>	// rest of the code<br>	// ...<br>	<br>	return this; // if possible, return "this" to not break the chain<br>});</pre>
</div>
<div>
<h2 id=next>Next steps(下一步)</h2>
<p>如果你想做更好的javascript开发,建议你使用一个叫 <a href="http://www.joehewitt.com/software/firebug/">FireBug</a>的firefox插件. 它提供了断点调试(比alert强多了)、观察DOM变化等很多漂亮的功能</p>
<p>如果你还有未解决的问题，或者新的想法与建议，你可以使用jQuery的邮件列表 <a href="http://jquery.com/discuss">jQuery mailing list</a>.</p>
<p>关于这个指南的任何事情，你可以写<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#110;&#99;&#104;&#111;&#115;&#37;&#50;&#48;&#37;&#53;&#66;&#97;&#116;&#37;&#53;&#68;&#37;&#50;&#48;&#103;&#109;&#120;&#37;&#50;&#48;&#37;&#53;&#66;&#100;&#111;&#116;&#37;&#53;&#68;&#37;&#50;&#48;&#110;&#101;&#116;">mail</a>给作者或者发表评论在他的日志：<a href="http://bassistance.de/index.php/2006/09/12/jquery-getting-started-guide/">blog</a>.</p>
<p class=log>关于这个指南的翻译任何事情，你可以写<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#107;&#101;&#101;&#108;&#46;&#115;&#105;&#107;&#101;&#37;&#53;&#66;&#97;&#116;&#37;&#53;&#68;&#37;&#50;&#48;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;">mail</a>给我或者发表评论在我的日志：<a href="http://keelsike.blogspot.com/">blog</a>.</p>
</div>
<div>
<h3>还有什么...</h3>
<p>大大感谢John Resig创造了这么好的library! 感谢jQuery community 为John提供了如此多的咖啡和其他的一切!</p>
</div>
<h4><a href="http://bassistance.de/">&#169; 2006, J&#246;rn Zaefferer</a> - last update: 2006-09-12</h4>
<h4>中文版翻译:<a href="http://keelsike.blogspot.com/">Keel</a> - 最后更新: 2006-12-13</h4>
<script src="http://www.google-analytics.com/urchin.js" type=text/javascript></script>
<script type=text/javascript>_uacct = "UA-333331-1";urchinTracker();</script>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/126164.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2007-06-25 17:34 <a href="http://www.blogjava.net/wangxinsh55/archive/2007/06/25/126164.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XML+XSLT 在IE, Firefox 下显示</title><link>http://www.blogjava.net/wangxinsh55/archive/2007/06/07/122631.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 07 Jun 2007 08:15:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2007/06/07/122631.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/122631.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2007/06/07/122631.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/122631.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/122631.html</trackback:ping><description><![CDATA[下边是xslt文件<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;?</span><span style="COLOR: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="COLOR: #0000ff">?&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">xsl:stylesheet&nbsp;</span><span style="COLOR: #ff0000">version</span><span style="COLOR: #0000ff">="2.0"</span><span style="COLOR: #ff0000"><br>&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsl</span><span style="COLOR: #0000ff">="http://www.w3.org/1999/XSL/Transform"</span><span style="COLOR: #ff0000"><br>&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xs</span><span style="COLOR: #0000ff">="http://www.w3.org/2001/XMLSchema"</span><span style="COLOR: #ff0000"><br>&nbsp;&nbsp;&nbsp;&nbsp;xmlns:fn</span><span style="COLOR: #0000ff">="http://www.w3.org/2005/xpath-functions"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">xsl:template&nbsp;</span><span style="COLOR: #ff0000">match</span><span style="COLOR: #0000ff">="root"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">ss</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">xsl:value-of&nbsp;</span><span style="COLOR: #ff0000">select</span><span style="COLOR: #0000ff">="message"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">xsl:template</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">xsl:stylesheet</span><span style="COLOR: #0000ff">&gt;</span></div>
下边是XML文件<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;?</span><span style="COLOR: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="COLOR: #0000ff">?&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;?</span><span style="COLOR: #ff00ff">xml-stylesheet&nbsp;type="text/xsl"&nbsp;href="1.xslt"</span><span style="COLOR: #0000ff">?&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">root</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">message</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">这里的</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">message</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">root</span><span style="COLOR: #0000ff">&gt;</span></div>
下边是通过Ajax调用的函数<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;getHtml(xmlText,&nbsp;xsltFile){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;text;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">(window.ActiveXObject)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;'undefined'){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;支持IE浏览器</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;xmlDoc</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;ActiveXObject(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Msxml2.DOMDocument.3.0</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xslDoc&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;ActiveXObject(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Msxml2.DOMDocument.3.0</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlDoc.async</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xslDoc.async&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlDoc.loadXML(xmlText);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xslDoc.load(xsltFile);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;xmlDoc.documentElement.transformNode(xslDoc.documentElement);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(e){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(isDebug)&nbsp;alert(e.name&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;e.message);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Unable&nbsp;to&nbsp;do&nbsp;xml/xsl&nbsp;processing</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(e.name&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;e.message);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(document.implementation&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;document.implementation.createDocument){&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;支持Mozilla浏览器</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;在Firefox的XML&nbsp;DOM实现中，并没有loadXML()方法，不过通过Firefox中的DOMParser类可以模拟loadXML()的行为</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;oParser&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;DOMParser();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;xmlDoc&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;oParser.parseFromString(xmlText,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">text/xml</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xslDoc&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;document.implementation.createDocument(</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xslDoc.async&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xslDoc.load(xsltFile);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;定义XSLTProcessor对象</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;xsltProcessor&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;XSLTProcessor();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xsltProcessor.importStylesheet(xslDoc);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;transformToDocument方式</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;result&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;xsltProcessor.transformToDocument(xmlDoc);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;xmls&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;XMLSerializer();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;xmls.serializeToString(result);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(e)&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(isDebug)&nbsp;alert(e.name&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;e.message);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Unable&nbsp;to&nbsp;do&nbsp;xml/xsl&nbsp;processing</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;text;<br>}</span></div>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/122631.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2007-06-07 16:15 <a href="http://www.blogjava.net/wangxinsh55/archive/2007/06/07/122631.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript的IE和Firefox兼容性汇编</title><link>http://www.blogjava.net/wangxinsh55/archive/2007/05/08/115978.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Tue, 08 May 2007 08:16:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2007/05/08/115978.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/115978.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2007/05/08/115978.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/115978.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/115978.html</trackback:ping><description><![CDATA[<p>以下以 IE 代替 Internet Explorer，以 MF 代替 Mozzila Firefox<br><br><strong>1. document.form.item 问题</strong><br>(1)现有问题：<br>现有代码中存在许多 document.formName.item("itemName") 这样的语句，不能在 MF 下运行<br>(2)解决方法：<br>改用 document.formName.elements["elementName"]<br>(3)其它<br>参见 2<br><br><strong>2. 集合类对象问题</strong><br>(1)现有问题：<br>现有代码中许多集合类对象取用时使用 ()，IE 能接受，MF 不能。<br>(2)解决方法：<br>改用 [] 作为下标运算。如：document.forms("formName") 改为 document.forms["formName"]。<br>又如：document.getElementsByName("inputName")(1) 改为 document.getElementsByName("inputName")[1]<br><br><strong>3. window.event</strong><br>(1)现有问题：<br>使用 window.event 无法在 MF 上运行<br>(2)解决方法：<br>MF 的 event 只能在事件发生的现场使用，此问题暂无法解决。可以这样变通：<br>原代码(可在IE中运行)：<br>&lt;input type="button" name="someButton" value="提交" onclick="javascript:gotoSubmit()"/&gt;<br>...<br>&lt;script language="javascript"&gt;<br>function gotoSubmit() {<br>...<br>alert(window.event); // use window.event<br>...<br>}<br>&lt;/script&gt;<br><br>新代码(可在IE和MF中运行)：<br>&lt;input type="button" name="someButton" value="提交" onclick="javascript:gotoSubmit(event)"/&gt;<br>...<br>&lt;script language="javascript"&gt;<br>function gotoSubmit(evt) {<br>evt = evt ? evt : (window.event ? window.event : null);<br>...<br>alert(evt); // use evt<br>...<br>}<br>&lt;/script&gt;<br>此外，如果新代码中第一行不改，与老代码一样的话(即 gotoSubmit 调用没有给参数)，则仍然只能在IE中运行，但不会出错。所以，这种方案 tpl 部分仍与老代码兼容。<br><br><strong>4. HTML 对象的 id 作为对象名的问题</strong><br>(1)现有问题<br>在 IE 中，HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在 MF 中不能。<br>(2)解决方法<br>用 getElementById("idName") 代替 idName 作为对象变量使用。<br><br><strong>5. 用idName字符串取得对象的问题</strong><br>(1)现有问题<br>在IE中，利用 eval(idName) 可以取得 id 为 idName 的 HTML 对象，在MF 中不能。<br>(2)解决方法<br>用 getElementById(idName) 代替 eval(idName)。<br><br><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<br><br><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 有微妙的差别（当整个页面有滚动条的时候），不过大多数时候是等效的。<br><br>如果要完全一样，可以稍麻烦些：<br>mX = event.x ? event.x : event.pageX;<br>然后用 mX 代替 event.x<br>(3)其它<br>event.layerX 在 IE 与 MF 中都有，具体意义有无差别尚未试验。<br><br><strong>8. 关于frame</strong><br>(1)现有问题<br>在 IE中 可以用window.testFrame取得该frame，mf中不行<br>(2)解决方法<br>在frame的使用方面mf和ie的最主要的区别是：<br>如果在frame标签中书写了以下属性：<br>&lt;frame src="xx.htm" id="frameId" name="frameName" /&gt;<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对象<br><br>另外，在mf和ie中都可以使用window.top.document.getElementById("frameId")来访问frame标签<br>并且可以通过window.top.document.getElementById("testFrame").src = &#8216;xx.htm&#8217;来切换frame的内容<br>也都可以通过window.top.frameName.location = &#8216;xx.htm&#8217;来切换frame的内容<br>关于frame和window的描述可以参见bbs的&#8216;window与frame&#8217;文章<br>以及/test/js/test_frame/目录下面的测试<br>----adun 2004.12.09修改<br><br><strong>9. 在mf中，自己定义的属性必须getAttribute()取得</strong><br><br><strong>10.在mf中没有 parentElement parement.children 而用parentNode parentNode.childNodes</strong><br>childNodes的下标的含义在IE和MF中不同，MF使用DOM规范，childNodes中会插入空白文本节点。<br>一般可以通过node.getElementsByTagName()来回避这个问题。<br>当html中节点缺失时，IE和MF对parentNode的解释不同，例如<br>&lt;form&gt;<br>&lt;table&gt;<br>&lt;input/&gt;<br>&lt;/table&gt;<br>&lt;/form&gt;<br>MF中input.parentNode的值为form, 而IE中input.parentNode的值为空节点<br><br>MF中节点没有removeNode方法，必须使用如下方法 node.parentNode.removeChild(node)<br><br><strong>11.const 问题</strong><br>(1)现有问题:<br>在 IE 中不能使用 const 关键字。如 const constVar = 32; 在IE中这是语法错误。<br>(2)解决方法:<br>不使用 const ，以 var 代替。<br><br><strong>12. body 对象</strong><br>MF的body在body标签没有被浏览器完全读入之前就存在，而IE则必须在body完全被读入之后才存在<br><br><strong>13. url encoding</strong><br>在js中如果书写url就直接写&amp;不要写&amp;amp;例如var url = &#8216;xx.jsp?objectName=xx&amp;amp;objectEvent=xxx&#8217;;<br>frm.action = url那么很有可能url不会被正常显示以至于参数没有正确的传到服务器<br>一般会服务器报错参数没有找到<br>当然如果是在tpl中例外，因为tpl中符合xml规范，要求&amp;书写为&amp;amp;<br>一般MF无法识别js中的&amp;amp;<br><br><strong>14. nodeName 和 tagName 问题</strong><br>(1)现有问题：<br>在MF中，所有节点均有 nodeName 值，但 textNode 没有 tagName 值。在 IE 中，nodeName 的使用好象<br>有问题（具体情况没有测试，但我的IE已经死了好几次）。<br>(2)解决方法：<br>使用 tagName，但应检测其是否为空。<br><br><strong>15. 元素属性</strong><br>IE下 input.type属性为只读，但是MF下可以修改&nbsp;</p>
<p>&nbsp;</p>
<hr>
<p>&nbsp;</p>
<p>1、浏览器事件的捕捉 </p>
<p>在IE 下有一个全局的window.event，当事件触发后可以直接使用，但是在fireFox下没有这个东西，当调用触发事件调用一个函数时，如果这个函数没有形参，那么firefox会默认的把event（事件）传进去，但是有参数时就不行啦，所以解决的办法是，自己手动传一个event进去，这样就ok 了，具体代码如下：</p>
<p>下面两个函数，都是响应鼠标onclick时触发的动作，第一个在ie下使用正常，但是在firefox下却有问题，改成第二个那样使用，就没有问题了，注意调用方法的区别</p>
<p>view plaincopy to clipboardprint?<br>&lt;html&gt; <br>&lt;head&gt; <br>&lt;title&gt;test&lt;/title&gt; <br>&lt;script language="javascript"&gt; <br>function testevent() <br>{ <br>window.alert(window.event.target.id); <br>return; <br>} <br>&lt;/script&gt; <br>&lt;/head&gt; <br>&lt;/body&gt; <br>&lt;a href="#" onclick="testevent()" id="alink"&gt;testevent&lt;/a&gt; <br>&lt;/body&gt; <br>&lt;/html&gt; <br>&lt;html&gt;<br>&lt;head&gt;<br>&lt;title&gt;test&lt;/title&gt;<br>&lt;script language="javascript"&gt;<br>function testevent()<br>{<br>window.alert(window.event.target.id);<br>return;<br>}<br>&lt;/script&gt;<br>&lt;/head&gt;<br>&lt;/body&gt;<br>&lt;a href="#" onclick="testevent()" id="alink"&gt;testevent&lt;/a&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<br></p>
<p>view plaincopy to clipboardprint?<br>&lt;html&gt; <br>&lt;head&gt; <br>&lt;title&gt;test1&lt;/title&gt; <br>&lt;script language="javascript"&gt; <br>function testevent(evt) <br>{ <br>window.alert(evt.target.id); <br>return; <br>} <br>&lt;/script&gt; <br>&lt;/head&gt; <br>&lt;/body&gt; <br>&lt;a href="#" onclick="testevent(event)" id="alink"&gt;testevent&lt;/a&gt; <br>&lt;/body&gt; <br>&lt;/html&gt; <br>&lt;html&gt;<br>&lt;head&gt;<br>&lt;title&gt;test1&lt;/title&gt;<br>&lt;script language="javascript"&gt;<br>function testevent(evt)<br>{<br>window.alert(evt.target.id);<br>return;<br>}<br>&lt;/script&gt;<br>&lt;/head&gt;<br>&lt;/body&gt;<br>&lt;a href="#" onclick="testevent(event)" id="alink"&gt;testevent&lt;/a&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<br></p>
<p>其实event对象在ie以及firefox还有很多不同的特性，比如clienx，pagex等，但是由于在现在流行使用的js框架prototype中解决了很多这些问题，所以如果是在基于prototype下的开发，这些问题可以考虑得少一些了，只是上面提到的这个捕获问题，prototype中并没有完善的解决，所以单独列出来，下面提及的关于js的也都只列出prototype中未解决的</p>
<p>2、关于透明度的设置</p>
<p>为了达到给层设置半透明的效果时，在IE和firefox下也有所不同，IE下，style的filter属性有Alpha值可供使用，而firefox下没有Alpha值，所以得指定style的MozOpacity，代码见下：</p>
<p>&lt;STYLE&gt;<br>filter:&nbsp;Alpha(opacity=10); /*IE*/ <br>-moz-opacity:.1; /*老版本FireFox 1.0 以前*/<br>opacity:0.1; /*新版本FireFox*/<br>&lt;/STYLE&gt;</p>
<p>view plaincopy to clipboardprint?<br>&lt;script language="javascript"&gt; <br>//设置一个id为screen的div的透明度为45%，在IE下： <br>document.getElementById('screen').style.filter='Alpha(Opacity=45)'; <br><br>//而在firefox下： <br>document.getElementById('screen').style.MozOpacity='0.45'; <br>&lt;/script&gt; <br>&lt;script language="javascript"&gt;<br>//设置一个id为screen的div的透明度为45%，在IE下：<br>document.getElementById('screen').style.filter='Alpha(Opacity=45)';</p>
<p>//而在firefox下：<br>document.getElementById('screen').style.MozOpacity='0.45';<br>&lt;/script&gt;<br></p>
<p>3、定位层时的有趣问题</p>
<p>在定位层时，我们的做法是给层的style.left 和 style.top设置位置，但是今天发现了一个很有趣的问题，代码如下：</p>
<p>view plaincopy to clipboardprint?<br>&lt;script language="javascript"&gt; <br>//给一个id为dialog的层定位 <br>document.getElementById('dialog').left = 100; <br>document.getElementById('dialog').left = 100; <br><br>//问题出现了，在ie下，默认将层的左上角定位在（100px,100px）这个点上 <br>//但是在firefox下却死活都不行，后来发现，原来ie在你没有指定单位的时候 <br>//替你加上了单位&#8220;px&#8221;，而firefox比较&#8220;笨&#8221; <br>//他觉得你没有指定单位，就不给你定位，好了，那么标准的写法应该是这样： <br><br>document.getElementById('dialog').left = 100px; <br>document.getElementById('dialog').left = 100px; <br><br>//这样firefox也认了 <br><br>&lt;/script&gt; <br>&lt;script language="javascript"&gt;<br>//给一个id为dialog的层定位<br>document.getElementById('dialog').left = 100;<br>document.getElementById('dialog').left = 100;</p>
<p>//问题出现了，在ie下，默认将层的左上角定位在（100px,100px）这个点上<br>//但是在firefox下却死活都不行，后来发现，原来ie在你没有指定单位的时候<br>//替你加上了单位&#8220;px&#8221;，而firefox比较&#8220;笨&#8221;<br>//他觉得你没有指定单位，就不给你定位，好了，那么标准的写法应该是这样：</p>
<p>document.getElementById('dialog').left = 100px;<br>document.getElementById('dialog').left = 100px;</p>
<p>//这样firefox也认了</p>
<p>&lt;/script&gt;<br></p>
<p>4、PNG透明背景的问题<br>PNG图片在网站设计中是不可或缺的部分，最大的特点应该在于PNG可以无损压缩，而且还可以设置透明，对于增强网站的图片色彩效果有重要的作用。</p>
<p>但为什么PNG图片却没有GIF和JPG图片的使用来得广泛呢，这个祸因应归属于微软的IE浏览器（Firefox和Opera对PNG支持的比较好，而现在浏览器的主流IE6却无法很好的支持）。不过微软在最近也开始改过自新了，新出的的IE7可以很好的支持PNG，可以想象在未来的网络世界，PNG图片的重要性将会更加凸显。</p>
<p>但在大家还在绝大多数的使用IE6的时候，我们又怎样在IE6的世界去完美使用PNG图片呢（PNG图片的时候最重要的地方在于PNG透明背景图片的运用）。我们应该庆幸我们是幸福的！IE5.5+的AlphaImageLoader滤镜为通向png提供了一个道路，如果他载入的是PNG(Portable Network Graphics)格式，则0%-100%的透明度也被提供。但IE5.0无法支持属性，那只有完全绝望了，不过绝望的只是几个，得到是绝大数，我们应该知足，知足才会常乐。</p>
<p>现在我们将通过Hack和AlphaImageLoader滤镜来实现IE6下的PNG透明背景图片。</p>
<p>先熟悉下滤镜的语法：</p>
<p>view plaincopy to clipboardprint?<br>filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=bEnabled , sizingMethod=sSize , src=sURL ) <br><br>属性： <br><br>enabled : 可选项。布尔值(Boolean)。设置或检索滤镜是否激活。true | false <br>true : 默认值。滤镜激活。 <br>false : 滤镜被禁止。 <br><br>sizingMethod : 可选项。字符串(String)。设置或检索滤镜作用的对象的图片在对象容器边界内的显示方式。 <br>crop : 剪切图片以适应对象尺寸。 <br>image : 默认值。增大或减小对象的尺寸边界以适应图片的尺寸。 <br>scale : 缩放图片以适应对象的尺寸边界。 <br><br>src : 必选项。字符串(String)。使用绝对或相对 url 地址指定背景图像。假如忽略此参数，滤镜将不会作用。 <br>filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=bEnabled , sizingMethod=sSize , src=sURL ) </p>
<p>属性：</p>
<p>enabled : 可选项。布尔值(Boolean)。设置或检索滤镜是否激活。true | false <br>true : 默认值。滤镜激活。 <br>false : 滤镜被禁止。 </p>
<p>sizingMethod : 可选项。字符串(String)。设置或检索滤镜作用的对象的图片在对象容器边界内的显示方式。 <br>crop : 剪切图片以适应对象尺寸。 <br>image : 默认值。增大或减小对象的尺寸边界以适应图片的尺寸。 <br>scale : 缩放图片以适应对象的尺寸边界。 </p>
<p>src : 必选项。字符串(String)。使用绝对或相对 url 地址指定背景图像。假如忽略此参数，滤镜将不会作用。<br></p>
<p>Firefox、Opera等完全支持PNG透明图片的浏览器也支持子选择器（&gt;），而IE不识别（包括IE7），所有我们可以通过这来定义Firefox、Opera等浏览器中PNG图片的样式。如下</p>
<p>view plaincopy to clipboardprint?<br>&lt;script language="javascript&gt; <br>//给一个id为infoBox的层设置一个透明背景，背景图片是down.png，代码如下 <br>//进行了浏览器判断 <br><br>if (navigator.appName!="Microsoft Internet Explorer") <br>{ <br>$('infoBox').style.background="0 url(down.png') no-repeat"; <br>} <br>else <br>{ <br>$('infoBox').style.background="0 none no-repeat"; <br>$('infoBox').style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=scale,src=down.png')"; <br>} <br><br>&lt;/script&gt; <br>&lt;script language="javascript&gt;<br>//给一个id为infoBox的层设置一个透明背景，背景图片是down.png，代码如下<br>//进行了浏览器判断</p>
<p>if (navigator.appName!="Microsoft Internet Explorer") <br>{<br>$('infoBox').style.background="0 url(down.png') no-repeat";<br>}<br>else<br>{<br>$('infoBox').style.background="0 none no-repeat";<br>$('infoBox').style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=scale,src=down.png')";<br>}</p>
<p>&lt;/script&gt;<br></p>
<p>不过需要注意的一个地方：</p>
<p>使用AlphaImageLoader 后该区域的超链接和按钮会失效，解决的方法：</p>
<p>对链接或按钮直接设置相对位置，让它们浮动于滤镜区域的上面</p>
<p>&nbsp;16.&nbsp;document.getElementsByName()&nbsp;和&nbsp;document.all[name]&nbsp;的问题<br>&nbsp;&nbsp;(1)现有问题：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在&nbsp;IE&nbsp;中，getElementsByName()、document.all[name]&nbsp;均不能用来取得&nbsp;div&nbsp;元素（是否还有其它不能取的元素还不知道）。&nbsp;<br><br></p>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/115978.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2007-05-08 16:16 <a href="http://www.blogjava.net/wangxinsh55/archive/2007/05/08/115978.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>window.close关闭窗口，不弹出系统提示，直接关闭</title><link>http://www.blogjava.net/wangxinsh55/archive/2007/03/23/105743.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Fri, 23 Mar 2007 02:30:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2007/03/23/105743.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/105743.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2007/03/23/105743.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/105743.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/105743.html</trackback:ping><description><![CDATA[
		<p>当我们用这种方法:Response.Write("&lt;script&gt;window.close()&lt;/script&gt;") <br />总是提示什么:你查看的网页试图关闭的提示 <br />如何去掉提示，直接关闭窗体? <br />可以用以下方法: <br />Response.Write("&lt;script&gt;window.opener=null;window.close()&lt;/script&gt;") <br />只有ie6才支持. <br />opener只要设为任何值都可以,不会出现提示 </p>
		<p>
		</p>
		<p>如果是通过子窗体关闭父窗体时怎么做呢 <br />子窗体（弹出窗体）： <br />同理可得： <br />Response.Write("&lt;script&gt;window.opener.top.opener=null;window.opener.top.close()&lt;/script&gt;") <br /></p>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/105743.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2007-03-23 10:30 <a href="http://www.blogjava.net/wangxinsh55/archive/2007/03/23/105743.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我对javascript中的apply的理解应用,在触发onclick事件时，传递参数</title><link>http://www.blogjava.net/wangxinsh55/archive/2006/12/27/90261.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Wed, 27 Dec 2006 03:41:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2006/12/27/90261.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/90261.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2006/12/27/90261.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/90261.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/90261.html</trackback:ping><description><![CDATA[Function.prototype.setThis=function(){<br /> var callFunction=this;<br /> var to_this_object=arguments[0];<br /> var pars=new Array();<br /> for(var i=1;i&lt;arguments.length;i++){<br />  pars[i-1]=arguments[i];<br /> }<br /> return function(){<br />    callFunction.apply(to_this_object, pars);//如果改用call只用修改其中的参数即可。<br />   };<br />}<br />function test1(){<br /> alert(this.width);<br /> alert(arguments[0]);<br /> alert(arguments[1]);<br />}<br /><br />function addOnclick(elObj){<br />   elObj.onclick=test1.setThis(img,"tttttt");<br />}<br /><br />这样在触发onclick事件时，可以传递参数。<img src ="http://www.blogjava.net/wangxinsh55/aggbug/90261.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2006-12-27 11:41 <a href="http://www.blogjava.net/wangxinsh55/archive/2006/12/27/90261.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>全面理解javascript的caller,callee,call,apply概念</title><link>http://www.blogjava.net/wangxinsh55/archive/2006/12/27/90230.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Wed, 27 Dec 2006 02:13:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2006/12/27/90230.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/90230.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2006/12/27/90230.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/90230.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/90230.html</trackback:ping><description><![CDATA[
		<div class="cnt">
				<div style="FONT-SIZE: 12px">
						<font size="2">首先想说说javascript中函数的隐含参数：arguments<br /><br />arguments<br /><br />该对象代表正在执行的函数和调用它的函数的参数。<br /><br />[function.]arguments[n]<br />参数function ：选项。当前正在执行的 Function 对象的名字。 n ：选项。要传递给 Function 对象的从0开始的参数值索引。 <br />说明<br /><br />arguments是进行函数调用时，除了指定的参数外，还另外创建的一个隐藏对象。arguments是一个类似数组但不是数组的对象，说它类似数组是因为其具有数组一样的访问性质及方式，可以由arguments[n]来访问对应的单个参数的值，并拥有数组长度属性length。还有就是arguments对象存储的是实际传递给函数的参数，而不局限于函数声明所定义的参数列表，而且不能显式创建 arguments 对象。arguments 对象只有函数开始时才可用。下边例子详细说明了这些性质:<br /><br />//arguments 对象的用法。<br />function ArgTest(a, b){<br />var i, s = "The ArgTest function expected ";<br />var numargs = arguments.length; // 获取被传递参数的数值。<br />var expargs = ArgTest.length; // 获取期望参数的数值。<br />if (expargs &lt; 2)<br />s += expargs + " argument. ";<br />else<br />s += expargs + " arguments. ";<br />if (numargs &lt; 2)<br />s += numargs + " was passed.";<br />else<br />s += numargs + " were passed.";<br />s += "\n\n"<br />for (i =0 ; i &lt; numargs; i++){ // 获取参数内容。<br />s += " Arg " + i + " = " + arguments</font>
						<font size="2"> + "\n";<br />}<br />return(s); // 返回参数列表。<br />}<br /><br />在此添加了一个说明arguments不是数组(Array类)的代码:<br /><br />Array.prototype.selfvalue = 1;<br />alert(new Array().selfvalue);<br />function testAguments(){<br />alert(arguments.selfvalue);<br />}<br /><br />运行代码你会发现第一个alert显示1，这表示数组对象拥有selfvalue属性，值为1，而当你调用函数testAguments时，你会发现显示的是“undefined”，说明了不是arguments的属性，即arguments并不是一个数组对象。<br /><br />caller<br />返回一个对函数的引用，该函数调用了当前函数。<br />functionName.caller <br />functionName 对象是所执行函数的名称。<br />说明<br />对于函数来说，caller 属性只有在函数执行时才有定义。如果函数是由顶层调用的，那么 caller 包含的就是 null 。如果在字符串上下文中使用 caller 属性，那么结果和 functionName.toString 一样，也就是说，显示的是函数的反编译文本。<br />下面的例子说明了 caller 属性的用法：<br /><br />// caller demo {<br />function callerDemo() {<br />if (callerDemo.caller) {<br />var a= callerDemo.caller.toString();<br />alert(a);<br />} else {<br />alert("this is a top function");<br />}<br />}<br />function handleCaller() {<br />callerDemo();<br />}<br /><br />callee<br /><br />返回正被执行的 Function 对象，也就是所指定的 Function 对象的正文。<br /><br />[function.]arguments.callee<br />可选项 function 参数是当前正在执行的 Function 对象的名称。<br /><br />说明<br /><br />callee 属性的初始值就是正被执行的 Function 对象。<br /><br />callee 属性是 arguments 对象的一个成员，它表示对函数对象本身的引用，这有利于匿名<br />函数的递归或者保证函数的封装性，例如下边示例的递归计算1到n的自然数之和。而该属性<br />仅当相关函数正在执行时才可用。还有需要注意的是callee拥有length属性，这个属性有时候<br />用于验证还是比较好的。arguments.length是实参长度，arguments.callee.length是<br />形参长度，由此可以判断调用时形参长度是否和实参长度一致。<br /><br />示例<br /><br />//callee可以打印其本身<br />function calleeDemo() {<br />alert(arguments.callee);<br />}<br />//用于验证参数<br />function calleeLengthDemo(arg1, arg2) {<br />if (arguments.length==arguments.callee.length) {<br />window.alert("验证形参和实参长度正确！");<br />return;<br />} else {<br />alert("实参长度：" +arguments.length);<br />alert("形参长度： " +arguments.callee.length);<br />}<br />}<br />//递归计算<br />var sum = function(n){<br />if (n &lt;= 0) <br />return 1;<br />else<br />return n ＋arguments.callee(n - 1)<br />}<br />比较一般的递归函数：<br /><br />var sum = function(n){<br />if (1==n) return 1;<br />else return n + sum (n-1);<br /><br />调用时：alert(sum(100));<br />其中函数内部包含了对sum自身的引用，函数名仅仅是一个变量名，在函数内部调用sum即相当于调用<br />一个全局变量，不能很好的体现出是调用自身，这时使用callee会是一个比较好的方法。<br /><br />apply and call<br /><br />它们的作用都是将函数绑定到另外一个对象上去运行，两者仅在定义参数方式有所区别：<br /><br />apply(thisArg,argArray);<br /><br />call(thisArg[,arg1,arg2…] ]);<br /><br />即所有函数内部的this指针都会被赋值为thisArg，这可实现将函数作为另外一个对象的方法运行的目的<br /><br />apply的说明<br /><br />如果 argArray 不是一个有效的数组或者不是 arguments 对象，那么将导致一个 TypeError。<br />如果没有提供 argArray 和 thisArg任何一个参数，那么 Global 对象将被用作 thisArg， <br />并且无法被传递任何参数。<br /><br />call的说明<br /><br />call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisArg指定的新对象。<br />如果没有提供 thisArg参数，那么 Global 对象被用作 thisArg<br /><br />相关技巧：<br /><br />应用call和apply还有一个技巧在里面，就是用call和apply应用另一个函数（类）以后，当前的<br />函数（类）就具备了另一个函数（类）的方法或者是属性，这也可以称之为“继承”。看下面示例:<br /><br />// 继承的演示<br />function base() {<br />this.member = " dnnsun_Member";<br />this.method = function() {<br />window.alert(this.member);<br />}<br />}<br />function extend() {<br />base.call(this);<br />window.alert(member);<br />window.alert(this.method);<br />}<br /><br />上面的例子可以看出，通过call之后，extend可以继承到base的方法和属性。<br /><br /><br /><br />顺便提一下，在javascript框架prototype里就使用apply来创建一个定义类的模式，<br /><br />其实现代码如下：<br /><br />var Class = {<br />create: function() {<br />return function() {<br />this.initialize.apply(this, arguments);<br />}<br />}<br />}<br />解析：从代码看,该对象仅包含一个方法：Create，其返回一个函数，即类。但这也同时是类的<br />构造函数，其中调用initialize，而这个方法是在类创建时定义的初始化函数。通过如此途径，<br />就可以实现prototype中的类创建模式<br /><br />示例：<br />&lt;script type="text/javascript"&gt;<br />var Class = {<br />create: function() {<br />return function() {<br />this.initialize.apply(this, arguments);<br />}<br />}<br />}<br /><br />var vehicle=Class.create();<br />vehicle.prototype={<br />initialize:function(type){<br />this.type=type;<br />},<br />showSelf:function(){<br />alert("this vehicle is "+ this.type);<br />}<br />}<br /><br />var moto=new vehicle("Moto");<br />moto.showSelf();<br />&lt;/script&gt;</font>
				</div>
		</div>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/90230.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2006-12-27 10:13 <a href="http://www.blogjava.net/wangxinsh55/archive/2006/12/27/90230.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>prototype源代码解读(转自javaeye) </title><link>http://www.blogjava.net/wangxinsh55/archive/2006/12/27/90228.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Wed, 27 Dec 2006 02:11:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2006/12/27/90228.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/90228.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2006/12/27/90228.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/90228.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/90228.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: href="/hjf1223/archive/2006/06/07/419596.html"&gt;源地址：http://www.javaeye.com/pages/viewpage.action?pageId=1131作者：醒来编辑：robbin/** * 定义一个全局对象, 属性 Version 在发布的时候会替换为当前版本号 */var Prototype = {  Version: '1....&nbsp;&nbsp;<a href='http://www.blogjava.net/wangxinsh55/archive/2006/12/27/90228.html'>阅读全文</a><img src ="http://www.blogjava.net/wangxinsh55/aggbug/90228.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2006-12-27 10:11 <a href="http://www.blogjava.net/wangxinsh55/archive/2006/12/27/90228.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于javascript的apply和call函数 </title><link>http://www.blogjava.net/wangxinsh55/archive/2006/12/27/90227.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Wed, 27 Dec 2006 02:11:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2006/12/27/90227.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/90227.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2006/12/27/90227.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/90227.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/90227.html</trackback:ping><description><![CDATA[
		<strong>1、关于javascript的apply和call函数</strong>
		<p>prototype.js中用了大量的apply和call函数，不注意会造成理解偏差。<br />官方解释：应用某一对象的一个方法，用另一个对象替换当前对象。<br />apply与call的区别是第二个参数不同。apply是  数组或者arguments 对象。而call是逗号隔开的任何类型。</p>
		<p>apply,call方法最让人混淆的地方也是apply,call的特色。但最好不要滥用。<br />能改变调用函数的对象。如下例，函数中用到this关键字，这时候this代表的是apply,call函数的第一个参数。<br /><br />&lt;script src="prototype1.3.1.js"&gt;&lt;/script&gt;<br />&lt;input type="text" id="myText"  value="input text"&gt;<br />&lt;script&gt;<br />   function Obj(){<br />       this.value="对象！";<br />   }<br />   var value="global 变量";<br />   function Fun1(){<br />       alert(this.value);<br />   }<br />   window.Fun1();<br />   Fun1.apply(window); <br />   Fun1.apply($('myText')); <br />   Fun1.apply(new Obj()); <br />&lt;/script&gt;</p>
		<p>
				<strong>2、关于闭包</strong>
				<br />prototype.js在Class.create,bind等中用到javascript的闭包特色。但整体上prototype.js对于强大的闭包特性用的不多。大家可以参阅我翻译的<a class="" title="" href="/zkjbeyond/archive/2006/05/23/47725.html" target="_blank">篇文章了解闭包</a>。<br /><strong>3、让我比较反感的两个方法</strong><br /><strong>（1）<br /></strong>var Class = {<br />  create: function() {<br />    return function() { <br />      this.initialize.apply(this, arguments);<br />    }<br />  }<br />}<br />很讨厌用别的语言的风格来写javascript。用这个方法构造自定义类  并没有觉得有多方便，减少代码行数，只会让人难理解，多定义一个initialize方法。<br />其实讨厌这条有些牵强，不过修改Object的原型对象就有点过分了。<br /><strong>（2）Object.prototype.extend</strong><br />  先不过你取个extend的名字会让熟悉java的人引起的歧义。修改Object的prototype就说不过去了。不知道作者是怎么考虑的。当你for in循环对象是，麻烦就来了。可能有人会问你for in干吗。 我一个项目中既用了DWR,也用了prototype.js，dwr返回的javascript对象都多了个exetend属性，还得特殊处理。<br />  以前我比较过<a class="" title="" href="/zkjbeyond/archive/2006/05/08/45108.html" target="_blank">dojo和prototype.js中继承的实现</a>，现在我明白个道理。对于javascript这种没有静态类型检查，语法宽松的语言来讲，如果你选择了某个js类库，那你也必须适应作者写javascript的风格。prototype.js的作者对extend的使用炉火纯青，如果我们不当它只是个属性拷贝的函数的话，多读读prototype.js的代码是好的。<br /><strong>4、关于函数的绑定</strong><br />  类库提供了Function.prototype.bind  Function.prototype.bindAsEventListener两个方法。首先我们从概念上解释一个这两个方法。<br />任何一个函数都可以调用这两个方法；参数的是javascript对象或网页上元素对象；返回类型是个函数对象。<br />本来我就是个函数，返回还是函数，到这两个函数有什么不同呢。看实现代码，关键还是apply\call函数的代码。其实这里只是转化了一下方法调用的对象。</p>
		<p>&lt;script src="prototype1.3.1.js"&gt;&lt;/script&gt;<br />&lt;input type=checkbox id=myChk name="asf" value=1&gt; Test<br />&lt;script&gt;<br />    var CheckboxWatcher = Class.create();<br />    CheckboxWatcher.prototype = {<br />       initialize: function(chkBox, message) {<br />            this.chkBox = $(chkBox);<br />            this.message = message;<br />            this.chkBox.onclick = this.showMessage.bindAsEventListener(this);<br />       },<br />       showMessage: function(evt) {<br />          alert(this.message + ' (' + evt.type + ')');<br />       }<br />    };<br />new CheckboxWatcher('myChk','message!!!!');<br />//$('myChk').onclick=function(){};<br />&lt;/script&gt;<br />这是 <a href="https://compdoc2cn.dev.java.net/">https://compdoc2cn.dev.java.net/</a> 上举的例子，个人感觉没什么意思，反而让我对bind,bindAsEventListener有些反感。（javascript就是这样，明明大家都知道的语法，但写出来的代码差别确很大）<br />看下面代码：</p>
		<p>&lt;script src="prototype1.3.1.js"&gt;&lt;/script&gt;<br />&lt;input type=checkbox id=myChk name="chk" value=1&gt; Test<br />&lt;script&gt;<br />function Class(){<br />    this.name="class";<br />}<br />Class.prototype.getName=function(){<br />    alert(this.name);<br />}<br />var obj=new Class();<br />//$('myChk').onclick=obj.getName;<br />$('myChk').onclick=obj.getName.bind(obj);<br />//$('myChk').onclick=obj.getName.bind($('myChk'));<br />&lt;/script&gt;</p>
		<p>从上面代码可以看出<font color="#ff0000">bind/bindAsEventListener只是包装了一下apply/call方法，改变方法的调用对象。</font>如例子，你可以把obj.getName方法转化成任何对象调用，并且把方法让表单元素触发。（bind和bindAsEventListener之间只是返回函数的参数不同）<br />这两个方法也可以用在对象之间的方法重用，实现类似继承方法的概念。看以下代码，其实是比较无聊的。</p>
		<p>&lt;script src="prototype1.3.1.js"&gt;&lt;/script&gt;<br />&lt;script&gt;<br />function Class1(name){<br />    this.name=name;<br />}<br />Class1.prototype.getName=function(){<br />    alert(this.name);<br />}<br />function Class2(name){<br />    this.name=name;<br />　　this.getName=Class1.prototype.getName.bind(this);<br />}<br />var obj1=new Class2("yql");<br />obj1.getName();<br />var obj2=new Object();<br />obj2.name="zkj";<br />obj2.fun=Class1.prototype.getName.bind(obj2);<br />obj2.fun();<br />&lt;/script&gt;</p>
		<p>
				<br />我从来没读过prototype.js的扩展项目代码，也不知道bind..的最佳实践，一起挖掘吧。但你绝对不要把bind/bindAsEventListener从绑定的词义上来理解，可能会让你更加迷惑。从apply/call理解本质。应用某一对象的一个方法，用另一个对象替换当前对象。</p>
		<p>
				<strong>5、关于事件的注册</strong>
		</p>
		<p>&lt;script src="prototype1.3.1.js"&gt;&lt;/script&gt;<br />&lt;input type=checkbox id=myChk name="chk" value=1&gt; Test<br />&lt;script&gt;<br />Event.observe(myChk, 'click', showMessage, false);<br />//$('myChk').onclick=showMessage;<br />//$('myChk').onclick=showMessage.bind();<br />$('myChk').onclick=showMessage.bind($('myChk'));<br />function showMessage() {<br />      alert(this.value);<br />}<br />&lt;/script&gt;</p>
		<p>执行上面代码，你就能明白Event.observe与bind/bindAsEventListener之间的区别：<br />（１） 显然Event.observe有限制，只能处理简单的函数，并函数中不能有this之类的东西。<br />（２）Event.observe内部用到addEventListener／attachEvent。能把多个函数加到一个触发事件（window.onload）。bind是覆盖。</p>
		<p>
				<strong>6、关于事件监听最佳实践</strong>
				<br />很显然prototype.js提供的事件注册方法不是很完善。那看看dojo的时间注册吧（<a class="" title="" href="http://ajaxcn.org/space/Ajax/Dojo/Event" target="_blank">中文版</a>），更加复杂，估计很多人像我一样，对于dojo暂时持观望态度。<br />如果你看过的前篇关于闭包的介绍，可能见过以下代码。<br />看以下代码前我想表述一个观点，任何网页中元素，浏览器都会为你创建一个对象（<a class="" title="" href="/zkjbeyond/archive/2006/04/23/42666.html" target="_blank">见</a>）。（我觉得）这些对象与你建立javascript对象区别是它们有事件监听，会响应鼠标键盘的事件。如果你用了以下代码，那么把事件监听代码很好的转化到你的javascript代码中。</p>
		<p>function associateObjWithEvent(obj, methodName){<br />    return (function(e){<br />        e = e||window.event;<br />        return obj[methodName](e, this);<br />    });<br />}<br />function DhtmlObject(elementId){<br />    var el = getElementWithId(elementId);<br />    if(el){<br />        el.onclick = associateObjWithEvent(this, "doOnClick");<br />        el.onmouseover = associateObjWithEvent(this, "doMouseOver");<br />        el.onmouseout = associateObjWithEvent(this, "doMouseOut");<br />    }<br />}<br />DhtmlObject.prototype.doOnClick = function(event, element){<br />    ... // doOnClick method body.<br />}<br />DhtmlObject.prototype.doMouseOver = function(event, element){<br />    ... // doMouseOver method body.<br />}<br />DhtmlObject.prototype.doMouseOut = function(event, element){<br />    ... // doMouseOut method body.<br />}</p>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/90227.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2006-12-27 10:11 <a href="http://www.blogjava.net/wangxinsh55/archive/2006/12/27/90227.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>熟悉JavaScript  Cookie</title><link>http://www.blogjava.net/wangxinsh55/archive/2006/12/05/85504.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Tue, 05 Dec 2006 02:29:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2006/12/05/85504.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/85504.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2006/12/05/85504.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/85504.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/85504.html</trackback:ping><description><![CDATA[
		<span>
				<strong>Cookie精通之路</strong>
		</span>
		<br />
		<a href="http://www.zdnet.com.cn/developer/code/story/0,2000081534,20009525,00.htm">
				<font color="#0066a7">http://www.zdnet.com.cn/developer/code/story/0,2000081534,20009525,00.htm</font>
		</a>
		<br />
		<span>作者： <a href="mailto:developer@zdnet.com.cn"><font color="#880000"><u>Jim Park</u></font></a></span>
		<br />
		<span>Saturday, January 25 2003 2:38 PM</span>
		<table>
				<tbody>
						<tr>
								<td>
										<p>
										</p>
										<table cellspacing="0" cellpadding="0" width="0" align="right" border="0">
												<tbody>
														<tr>
																<td align="middle">
																</td>
														</tr>
														<tr>
																<td>
																		<a href="http://ad.cn.doubleclick.net/click;h=v5%7C339f%7C3%7C0%7C*%7Ct;27671752;0-0;0;6694709;31-1%7C1;15038075%7C15055971%7C1;;~sscs%3D?http://www.site.com">
																				<img height="60" src="http://m2.cn.doubleclick.net/123456/banner.gif" width="468" border="0" />
																		</a>
																		<a href="http://ad.cn.doubleclick.net/click;h=v5%7C339f%7C3%7C0%7C*%7Ct;27671752;0-0;0;6694709;31-1%7C1;15038075%7C15055971%7C1;;~sscs%3D?http://www.site.com">
																				<img height="60" src="http://m2.cn.doubleclick.net/123456/banner.gif" width="468" border="0" />
																		</a>
																		<a href="http://ad.cn.doubleclick.net/jump/messagingplus.zdnet.com.cn/developer/code;sz=1x1;ord=1556888389?">
																				<img src="http://ad.cn.doubleclick.net/ad/messagingplus.zdnet.com.cn/developer/code;sz=1x1;ord=1556888389?" border="0" />
																		</a>
																</td>
														</tr>
												</tbody>
										</table>
										<p>&lt;!—<b>Cookies，有些人喜欢它们，有些人憎恨它们。但是，很少有人真正知道如何使用它们。现在你可以成为少数人中的成员－可以自傲的Cookie 大师。</b>--&gt;</p>
										<p>如果你象作者一样记性不好，那么你可能根本记不住人们的名字。我遇到人时，多半只是点点头，问句“吃了嘛！”，而且期望问候到此为止。如果还需要表示些什么，那么我就得求助于一些狡猾的技巧，好让我能想对方是谁。比如胡扯起一些和对方有关的人，不管他们之间关系多远，只要能避免不记得对方名字的尴尬就好：“你隔壁邻居的侄子的可爱小狗迈菲斯特怎么样？”通过这个方法，我希望能让对方感到，我确实很重视他（她），甚至还记得这些琐事，虽然实际上连名字都忘记了。但是，不是我不重视，而是我的记忆力实在是糟糕，而且要记住的名字又实在太多。如果我能给每个人设置cookies，那么我就不会再犯这种记忆力问题了。</p>
										<p>
												<b>在这篇文章里，我们要学习：</b>
										</p>
										<ol>
												<li>
														<b>什么是 Cookies?</b>
												</li>
												<li>
														<b>Cookie 的构成</b>
												</li>
												<li>
														<b>操纵 Cookies</b>
												</li>
												<li>
														<b>Cookie 怪兽</b>
												</li>
										</ol>
										<p>
										</p>
										<table cellspacing="0" cellpadding="4" width="95%" border="0">
												<tbody>
														<tr>
																<td>
																</td>
														</tr>
														<tr>
																<td>
																		<p>
																		</p>
																		<table cellspacing="0" cellpadding="0" width="0" align="right" border="0">
																				<tbody>
																						<tr>
																								<td align="middle">
																								</td>
																						</tr>
																						<tr>
																								<td>
																										<a href="http://ad.cn.doubleclick.net/click;h=v5%7C339f%7C3%7C0%7C*%7Ct;27671752;0-0;0;6694709;31-1%7C1;15038075%7C15055971%7C1;;~sscs%3D?http://www.site.com">
																												<img height="60" src="http://m2.cn.doubleclick.net/123456/banner.gif" width="468" border="0" />
																										</a>
																										<a href="http://ad.cn.doubleclick.net/click;h=v5%7C339f%7C3%7C0%7C*%7Ct;27671752;0-0;0;6694709;31-1%7C1;15038075%7C15055971%7C1;;~sscs%3D?http://www.site.com">
																												<img height="60" src="http://m2.cn.doubleclick.net/123456/banner.gif" width="468" border="0" />
																										</a>
																										<a href="http://ad.cn.doubleclick.net/jump/messagingplus.zdnet.com.cn/developer/code;sz=1x1;ord=1034562580?">
																												<img src="http://ad.cn.doubleclick.net/ad/messagingplus.zdnet.com.cn/developer/code;sz=1x1;ord=1034562580?" border="0" />
																										</a>
																								</td>
																						</tr>
																				</tbody>
																		</table>
																		<p>
																				<b>什么是Cookies?</b>
																				<br />
																		</p>
																		<p>你会问，什么是<i>cookies</i>呢? cookie 是浏览器保存在用户计算机上的少量数据。它与特定的WEB页或WEB站点关联起来，自动地在WEB浏览器和WEB服务器之间传递。</p>
																		<p>比如，如果你运行的是Windows操作系统，使用Internet Explorer上网，那么你会发现在你的“Windows”目录下面有一个子目录，叫做“Temporary Internet Files”。如果你有空看看这个目录，就会发现里面有一些文件，文件名称看起来就象电子邮件地址。比如在我机器上的这个目录里，就有“jim@support.microsoft.com”这样的文件。这是一个cookie 文件，这个文件从哪来呢？猜一猜，它来自微软的支持站点。顺便说一句，这不是我的电子邮件地址，特此澄清。</p>
																		<p>对于管理细小的、不重要的、不想保存在中央数据库里的细节信息，Cookies 是个很不错的方案。（这不是说大家的名字不重要。）比如，目前网站上不断增长的自定义服务，可以为每个用户定制他们要看的内容。如果你设计的就是这样一个站点，那么你怎么来管理这样的信息：一个用户喜欢绿色的菜单条，而另一个喜欢红色的。确实是个累人的问题。不过，这样的信息，可以很安全地记录到cookie，并保存在用户的计算机上，而你自己的数据库空间可以留给更长久更有意义的数据。</p>
																		<p>FYI: Cookies 对于安全用途，通常很有用。我不想在此就这一问题过于深入，只是提供一个示例，可以看到如何使用在一段时间之后过期的cookies来保证站点安全： </p>
																		<ol>
																				<li>使用用户名和口令，通过 SSL 登录。 
</li>
																				<li>在服务器的数据库里检查用户名和口令。如果登录成功，建立一个当前时间标签的消息摘要 (比如 MD5) ，并把它保存在cookie和服务器数据库里。把用户的登录时间保存在服务器数据库里面的用户记录里。 
</li>
																				<li>在进行每个安全事务时（用户处于登录状态的任何事务），把cookie的消息摘要和保存在服务器数据库里的摘要进行比较，如果比较失败，就把用户引导到登录界面。 
</li>
																				<li>如果第3步检查通过，那么检查当前时间和登录时间之音经过的时间是否超过允许的时间长度。如果用户已经超时，那么就把用户引到登录界面。 
</li>
																				<li>如果第3步和第4步都通过了，那么把登录时间重新设置成当前时间，允许事务发生。那些需要你登录的安全站点，可能多数使用的都是和这里介绍的类似的方法。 </li>
																		</ol>
																		<p>
																				<i>Cookies</i>最初设计时，是为了CGI编程。但是，我们也可以使用Javascript脚本来操纵cookies。在本文里，我们将演示如何使用Javascript脚本来操纵cookies。(如果有需求，我可能会在以后的文章里介绍如何使用Perl进行cookie管理。但是如果实在等不得，那么我现在就教你一手：仔细看看CGI.pm。在这个CGI包里有一个cookie()函数，可以用它建立cookie。但是，还是让我们先来介绍cookies的本质。 </p>
																		<p>在Javascript脚本里，一个<i>cookie</i> 实际就是一个字符串属性。当你读取cookie的值时，就得到一个字符串，里面当前WEB页使用的所有cookies的名称和值。每个cookie除了name名称和value值这两个属性以外，还有四个属性。这些属性是： <i>expires过期时间、</i><i>path路径、</i><i>domain域、以及</i><i>secure安全。</i></p>
																		<p>
																				<b>
																						<i>Expires</i>
																				</b> – 过期时间。指定cookie的生命期。具体是值是过期日期。如果想让cookie的存在期限超过当前浏览器会话时间，就必须使用这个属性。当过了到期日期时，浏览器就可以删除cookie文件，没有任何影响。</p>
																		<p>
																				<b>
																						<i>Path</i>
																				</b> – 路径。指定与cookie关联的WEB页。值可以是一个目录，或者是一个路径。如果http://www.zdnet.com/devhead/index.html 建立了一个cookie，那么在http://www.zdnet.com/devhead/目录里的所有页面，以及该目录下面任何子目录里的页面都可以访问这个cookie。这就是说，在http://www.zdnet.com/devhead/stories/articles 里的任何页面都可以访问http://www.zdnet.com/devhead/index.html建立的cookie。但是，如果http://www.zdnet.com/zdnn/ 需要访问http://www.zdnet.com/devhead/index.html设置的cookes，该怎么办？这时，我们要把cookies的path属性设置成“/”。在指定路径的时候，凡是来自同一服务器，URL里有相同路径的所有WEB页面都可以共享cookies。现在看另一个例子：如果想让 http://www.zdnet.com/devhead/filters/ 和http://www.zdnet.com/devhead/stories/共享cookies，就要把path设成“/devhead”。</p>
																		<p>
																				<b>
																						<i>Domain</i>
																				</b> – 域。指定关联的WEB服务器或域。值是域名，比如zdnet.com。这是对path路径属性的一个延伸。如果我们想让catalog.mycompany.com 能够访问shoppingcart.mycompany.com设置的cookies，该怎么办? 我们可以把domain属性设置成“mycompany.com”，并把path属性设置成“/”。FYI：不能把cookies域属性设置成与设置它的服务器的所在域不同的值。</p>
																		<p>
																				<b>
																						<i>Secure</i>
																				</b> – 安全。指定cookie的值通过网络如何在用户和WEB服务器之间传递。这个属性的值或者是“secure”，或者为空。缺省情况下，该属性为空，也就是使用不安全的HTTP连接传递数据。如果一个 cookie 标记为secure，那么，它与WEB服务器之间就通过HTTPS或者其它安全协议传递数据。不过，设置了secure属性不代表其他人不能看到你机器本地保存的cookie。换句话说，把cookie设置为secure，只保证cookie与WEB服务器之间的数据传输过程加密，而保存在本地的cookie文件并不加密。如果想让本地cookie也加密，得自己加密数据。</p>
																		<p> </p>
																		<p>
																		</p>
																		<table cellspacing="0" cellpadding="4" width="95%" border="0">
																				<tbody>
																						<tr>
																								<td>
																								</td>
																						</tr>
																						<tr>
																								<td>
																										<p>
																												<b>操纵Cookies</b>
																										</p>
																										<p align="left">请记住，cookie就是文档的一个字符串属性。要保存cookie，只要建立一个字符串，格式是name=&lt;value&gt;（名称＝值），然后把文档的 document.cookie 设置成与它相等即可。比如，假设想保存表单接收到的用户名，那么代码看起来就象这样： </p>
																										<pre>document.cookie = "username" + escape(form.username.value); </pre>
																										<p align="left">在这里，使用 escape() 函数非常重要，因为cookie值里可能包含分号、逗号或者空格。这就是说，在读取cookie值时，必须使用对应的unescape()函数给值解码。</p>
																										<p align="left">我们当然还得介绍cookie的四个属性。这些属性用下面的格式加到字符串值后面：</p>
																										<pre>name=&lt;value&gt;[; expires=&lt;date&gt;][; domain=&lt;domain&gt;][; path=&lt;path&gt;][; secure] 

名称=&lt;值&gt;[; expires=&lt;日期&gt;][; domain=&lt;域&gt;][; path=&lt;路径&gt;][; 安全]</pre>
																										<table cellspacing="0" cellpadding="0" width="0" align="right" border="0">
																												<tbody>
																														<tr>
																																<td align="middle">
																																</td>
																														</tr>
																														<tr>
																																<td>
																																		<a href="http://ad.cn.doubleclick.net/click;h=v5%7C339f%7C3%7C0%7C*%7Ct;27671752;0-0;0;6694709;31-1%7C1;15038075%7C15055971%7C1;;~sscs%3D?http://www.site.com">
																																				<img height="60" src="http://m2.cn.doubleclick.net/123456/banner.gif" width="468" border="0" />
																																		</a>
																																		<a href="http://ad.cn.doubleclick.net/click;h=v5%7C339f%7C3%7C0%7C*%7Ct;27671752;0-0;0;6694709;31-1%7C1;15038075%7C15055971%7C1;;~sscs%3D?http://www.site.com">
																																				<img height="60" src="http://m2.cn.doubleclick.net/123456/banner.gif" width="468" border="0" />
																																		</a>
																																		<a href="http://ad.cn.doubleclick.net/jump/messagingplus.zdnet.com.cn/developer/code;sz=1x1;ord=1632119184?">
																																				<img src="http://ad.cn.doubleclick.net/ad/messagingplus.zdnet.com.cn/developer/code;sz=1x1;ord=1632119184?" border="0" />
																																		</a>
																																</td>
																														</tr>
																												</tbody>
																										</table>
																										<p>
																												<b>&lt;value&gt;</b>, <b>&lt;date&gt;</b>, <b>&lt;domain&gt;</b> 和 <b>&lt;path&gt;</b> 应当用对应的值替换。<b>&lt;date&gt;</b> 应当使用GMT格式，可以使用Javascript脚本语言的日期类Date的.toGMTString() 方法得到这一GMT格式的日期值。方括号代表这项是可选的。比如在 <b>[; secure]</b>两边的方括号代表要想把cookie设置成安全的，就需要把"; secure" 加到cookie字符串值的后面。如果"; secure" 没有加到cookie字符串后面，那么这个cookie就是不安全的。不要把尖括号&lt;&gt; 和方括号[] 加到cookie里（除非它们是某些值的内容）。设置属性时，不限属性，可以用任何顺序设置。 </p>
																										<p>下面是一个例子，在这个例子里，cookie "username" 被设置成在15分钟之后过期，可以被服务器上的所有目录访问，可以被"mydomain.com"域里的所有服务器访问，安全状态为安全。</p>
																										<pre>// Date() 的构造器设置以毫秒为单位
// .getTime() 方法返回时间，单位为毫秒
// 所以要设置15分钟到期，要用60000毫秒乘15分钟
var expiration = new Date((new Date()).getTime() + 15 * 60000); 
document.cookie = "username=" + escape(form.username.value)+ "; expires =" 
+ expiration.toGMTString() + "; path=" + "/" + "; _
domain=" + "mydomain.com" + "; secure"; </pre>
																										<p>读取cookies值有点象个小把戏，因为你一次就得到了属于当前文档的所有cookies。</p>
																										<pre>// 下面这个语句读取了属于当前文档的所有cookies
 var allcookies = document.cookie; </pre>
																										<p>现在，我们得解析allcookies变量里的不同cookies，找到感兴趣的指定cookie。这个工作很简单，因为我们可以利用Javascript语言提供的扩展字符串支持。</p>
																										<p>如果我们对前面分配的cookie "username" 感兴趣，可以用下面的脚本来读取它的值。</p>
																										<pre>// 我们定义一个函数，用来读取特定的cookie值。
 function getCookie(cookie_name)
 {
 var allcookies = document.cookie;
 var cookie_pos = allcookies.indexOf(cookie_name);
 
   // 如果找到了索引，就代表cookie存在，
  // 反之，就说明不存在。
  if (cookie_pos != -1)
  {
   // 把cookie_pos放在值的开始，只要给值加1即可。
   cookie_pos += cookie_name.length + 1;
   var cookie_end = allcookies.indexOf(";", cookie_pos);
 
   if (cookie_end == -1)
   {
    cookie_end = allcookies.length;
   }
 
   var value = unescape(allcookies.substring(cookie_pos, cookie_end));
  }
 
  return value;
 }
 
 // 调用函数
var cookie_val = getCookie("username");</pre>
																										<p>上面例程里的 cookie_val 变量可以用来生成动态内容，或者发送给服务器端CGI脚本进行处理。现在你知道了使用Javascript脚本操纵cookies的基本方法。但是，如果你跟我一样，那么我们要做的第一件事，就是建立一些接口函数，把cookies处理上的麻烦隐藏起来。不过，在你开始编程之前，稍候片刻。这些工作，早就有人替你做好了。你要做的，只是到哪去找这些接口函数而已。</p>
																										<p>比如，在David Flangan的<i>Javascript: The Definitive Guide 3rd Ed.</i>这本书里，可以找到很好的cookie应用类。你也可以在Oreilly的WEB站点上找到这本书里的例子。本文最后的链接列表里，有一些访问这些cookie示例的直接链接。</p>
																								</td>
																						</tr>
																				</tbody>
																		</table>
																</td>
														</tr>
												</tbody>
										</table>
										<p>Cookies 怪兽</p>
										<p>
												<strong>Cookies 怪兽</strong>
										</p>
										<p>因为某些原因Cookies 的名声很不好。许多人利用cookies做一些卑鄙的事情，比如流量分析、点击跟踪。Cookies 也不是非常安全，特别是没有secure属性的cookies。不过，即使你用了安全的cookies，如果你和别人共用计算机，比如在网吧，那么别人就可以窥探计算机硬盘上未加密保存的cookie文件，也就有可能窃取你的敏感信息。所以，如果你是一个WEB开发人员，那么你要认真考虑这些问题。不要滥用cookies。不要把用户可能认为是敏感的数据保存在cookies里。如果把用户的社会保险号、信用卡号等保存在cookie里，等于把这些敏感信息放在窗户纸下，无异于把用户投到极大危险之中。一个好的原则是，如果你不想陌生人了解你的这些信息，那就不要把它们保存在cookies里。 </p>
										<p>另外，cookies还有一些实际的限制。Cookies保留在计算机上，不跟着用户走。如果用户想换计算机，那么新计算机无法得到原来的cookie。甚至用户在同一台计算机上使用不同浏览器，也得不到原来的cookie：Netscape 不能读取Internet Explorer 的cookies。 </p>
										<p>还有，用户也不愿意接受cookies。所以不要以为所有的浏览器都能接受你发出的cookies。如果浏览器不接受cookies，你要保证自己的WEB站点不致因此而崩溃或中断。</p>
										<p>另外WEB 浏览器能保留的cookies不一定能超过300个。也没有标准规定浏览器什么时候、怎么样作废cookies。所以达到限制时，浏览器能够有效地随机删除cookies。浏览器保留的来自一个WEB服务器上的cookies，不超过20个，每个cookie的数据（包括名称和值），不超过4K字节。(不过，本文里的cookie尺寸没问题，它只占了12 K字节，保存在3个3 cookies里。)</p>
										<p>简而言之，注意保持cookie简单。不要依赖cookies的存在，不要在每个cookie里保存太多信息。不要保存太多的cookes。但是，抛除这些限制，在技巧高超的WEB管理员手里，cookie的概念是一个有用的工具。</p>
										<p>
												<b>外部链接</b>
												<br />每个 Javascript 程序员都应当有一份Javascript： David Flanagan 的The Definitive Guide。 这本书里找到cookie 类例程可以帮助你把不止一个变量编码到单一的cookie，克服掉“每个WEB服务器20 个cookies的限制”。请点击这个<a href="ftp://ftp.oreilly.com/pub/examples/nutshell/javascript/"><u><font color="#0000ff">链接</font></u></a>下载该例程。</p>
										<p> </p>
										<p>其他的参考文献：</p>
										<p>
												<a href="http://wp.netscape.com/newsref/std/cookie_spec.html">
														<font color="#0066a7">http://wp.netscape.com/newsref/std/cookie_spec.html</font>
												</a>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/85504.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2006-12-05 10:29 <a href="http://www.blogjava.net/wangxinsh55/archive/2006/12/05/85504.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>prototype.js　1.4版开发者手册(强烈推荐) </title><link>http://www.blogjava.net/wangxinsh55/archive/2006/11/23/82984.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 23 Nov 2006 03:31:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2006/11/23/82984.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/82984.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2006/11/23/82984.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/82984.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/82984.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: http://wiki.script.aculo.us/scriptaculous/show/Prototype						这是一个很好的网站，很值得一看！！！！！！！！！！！！！！！！！！！！！看到一个很好的东西在国内没有被很多人使用起来，实在是不爽，所以花了很大功夫把这个手册翻译成中文，由于这篇文章很长，所以，翻译的工作量很大而且有些地方英文版也没有说清楚，虽得查看源代码，好在不是坚持做完...&nbsp;&nbsp;<a href='http://www.blogjava.net/wangxinsh55/archive/2006/11/23/82984.html'>阅读全文</a><img src ="http://www.blogjava.net/wangxinsh55/aggbug/82984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2006-11-23 11:31 <a href="http://www.blogjava.net/wangxinsh55/archive/2006/11/23/82984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript apply方法</title><link>http://www.blogjava.net/wangxinsh55/archive/2006/10/26/77455.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 26 Oct 2006 10:54:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2006/10/26/77455.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/77455.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2006/10/26/77455.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/77455.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/77455.html</trackback:ping><description><![CDATA[
		<pre>
				<div>初次接触ajax，看到的是一个很简单的例子：</div>
				<div> </div>
				<div>//针对各种浏览器建立一个http request的对象</div>
				<div>function getHttpRequest(){<br />  http_request = null;<br />  if (window.XMLHttpRequest) { </div>
				<div>     http_request = new XMLHttpRequest();<br />  } else if (window.ActiveXObject) {<br />      http_request = new ActiveXObject("Microsoft.XMLHTTP");<br />  }<br />  return http_request;<br />}</div>
				<div>var ajax_request;</div>
				<div>functiong getPerson(){</div>
				<div>  ajax_request = getHttpRequest();    //建立一个http request</div>
				<div>  ajax_request.onstatechange = handleResponse;  //指定回调函数</div>
				<div>  ajax_request.open("GET", "<a href="http://myhost.com/sample.xm">http://myhost.com/sample.xm</a>l", null);</div>
				<div>  ajax_request.send();</div>
				<div>}</div>
				<div> </div>
				<div>function handleResponse(){</div>
				<div>  if(ajax_request.readyState != 4) return;</div>
				<div>  if(ajax_request.status == 200){</div>
				<div>    var xml = ajax_request.responseXML;</div>
				<div>    /* 对获得的xml的处理 */</div>
				<div>  }</div>
				<div>}</div>
				<div> </div>
				<div>调用的时候可以直接在页面里调用</div>
				<div>getPerson();</div>
				<div> </div>
				<div>这个函数会建立一个httpRequest对象，然后发送请求，在请求返回的时候会自动调用handleResponse函数来完成操作。</div>
				<div>在简单的环境上，上述代码会工作得很好，但是如果在一个页面中要执行多次这种操作就比较麻烦了，需要写多个函数，看一下上面的定义：</div>
				<div>var ajax_request; 表示这是个全局变量，多次请求的时候每个请求都要用到这个对象，ajax又是异步的，无法事先确定哪个请求先返回。</div>
				<div> </div>
				<div>如果把ajax_request作为函数内的局部变量呢？那样如果在handleResponse里能看到ajax_request对象就可以解决这个问题了。</div>
				<div>可以考虑把ajax_request作为一个参数传递给handleResponse，现在的问题是，对handleResponse的调用是自动的，怎么能在参数列表中添加这个参数呢？我们想到了this变量，在javascript中，所有的东西都是对象，this表示当前对象，在函数中this就表示当前的函数。</div>
				<div>javascript提供了一种可以改变this的方法——apply()。</div>
				<div>javascript对apply的解释是：使用指定对象替换当前对象并调用函数。比如：</div>
				<div> </div>
				<div>function test_apply(){</div>
				<div>  alert(this);</div>
				<div>}</div>
				<div>test_apply.apply(document, []);</div>
				<div> </div>
				<div>就表示调用函数test_apply，并用document对象来替换test_apply中的this。</div>
				<div> </div>
				<div>回到刚刚的问题，为了修改当前对象，需要在指定handleResponse的时候就修改this对象。ajax_request.onstatechange是一个函数的句柄，只要我把一个函数的句柄赋值给它就可以了，同时函数也是一种对象，Function对象，因此我们为函数对象添加一个方法：</div>
				<div>Function.prototype.setThis(){</div>
				<div>  var curr_function = this;</div>
				<div>  var to_this_object = arguments[0];</div>
				<div>  return function(){</div>
				<div>    currFunc.apply(to_this_object, []);</div>
				<div>  };</div>
				<div>}</div>
				<div> </div>
				<div>下面，修改getPerson为：</div>
				<div>
						<div>functiong getPerson(){</div>
						<div>  var tmp_request = getHttpRequest();    //建立一个http request</div>
						<div>  tmp_request.onstatechange = handleResponse.setThis(tmp_request);  //指定回调函数</div>
						<div>  tmp_request.open("GET", "<a href="http://myhost.com/sample.xm">http://myhost.com/sample.xm</a>l", null);</div>
						<div>  tmp_request.send();</div>
						<div>}</div>
				</div>
				<div> </div>
				<div>修改handleResponse为：</div>
				<div>
						<div>function handleResponse(){</div>
						<div>  if(this.readyState != 4) return;</div>
						<div>  if(this.status == 200){</div>
						<div>    var xml = this.responseXML;</div>
						<div>    /* 对获得的xml的处理 */</div>
						<div>  }</div>
						<div>}</div>
						<div>即可。</div>
						<div>具体的变化就在于tmp_request.onstatechange = handleResponse.setThis(tmp_request);  </div>
						<div>因为handleResponse是一个函数，因此它具有Function新添加的方法setThis，</div>
						<div>下面来看setThis方法：</div>
						<div>var curr_function = this;  //获得当前的函数本身
<div>var to_this_object = arguments[0];  //获得要指定的新的this对象</div><div>return function(){</div><div>    currFunc.apply(to_this_object, []);</div><div>  };</div><div> </div><div>这里的返回值是一个函数，即当tmp_request的onstatechange事件的时候会触发这个函数，该函数中只有一句</div><div>currFunc.apply(to_this_object, []);即用to_this_object替换当前对象并调用currFunc，在这里currFunc即代表了handleResponse，因此调用handleResponse，因为已经修改了其this对象，因此在handleResponse中用this即代表了tmp_request对象。</div><div>用这种方法可以减化代码，并使代码更具可重用性。<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></div></div>
				</div>
		</pre>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/77455.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2006-10-26 18:54 <a href="http://www.blogjava.net/wangxinsh55/archive/2006/10/26/77455.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>有关javascript更深入的介绍的博客</title><link>http://www.blogjava.net/wangxinsh55/archive/2006/10/26/77454.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 26 Oct 2006 10:53:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2006/10/26/77454.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/77454.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2006/10/26/77454.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/77454.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/77454.html</trackback:ping><description><![CDATA[
		<a href="http://workgroup.cn/CS/blogs/javascript/archive/2006/7/7.aspx">http://workgroup.cn/CS/blogs/javascript/archive/2006/7/7.aspx</a>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/77454.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2006-10-26 18:53 <a href="http://www.blogjava.net/wangxinsh55/archive/2006/10/26/77454.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Modello编写JavaScript类</title><link>http://www.blogjava.net/wangxinsh55/archive/2006/10/26/77453.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 26 Oct 2006 10:52:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2006/10/26/77453.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/77453.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2006/10/26/77453.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/77453.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/77453.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一，背景												回顾一下编程语言的发展，不难发现这是一个不断封装的过程：从最开始的汇编语言，到面向过程语言，然后到面向对象语言，再到具备面向对象特性的脚本语言，一层一层封装，一步一步减轻程序员的负担，逐渐提高编写程序的效率。这篇文章是关于 JavaScript 的，所以我们先来了解一下 JavaScript 是一种怎样的语言。到目前为止，JavaScript 是一种...&nbsp;&nbsp;<a href='http://www.blogjava.net/wangxinsh55/archive/2006/10/26/77453.html'>阅读全文</a><img src ="http://www.blogjava.net/wangxinsh55/aggbug/77453.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2006-10-26 18:52 <a href="http://www.blogjava.net/wangxinsh55/archive/2006/10/26/77453.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript对象与数组参考大全</title><link>http://www.blogjava.net/wangxinsh55/archive/2006/06/29/55707.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 29 Jun 2006 03:25:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2006/06/29/55707.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/55707.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2006/06/29/55707.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/55707.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/55707.html</trackback:ping><description><![CDATA[本文列举了各种JavaScript对象与数组,同时包括对上述每一对象或数组所完成工作的简短描述,以及与其相关的属性方法,以及事件处理程序,还注明了该对象或数组的父对象用户同样可能需要参考Online Companion中的超级文本Object Hierarchy页面(<a href="http://www.netscapepress.com/support/javascript/10-9.htm">http://www.netscapepress.com/support/javascript/10-9.htm</a>),以便了解这些对象之间是如何相互关联的。<br />　　顺便提一下,记住,这里把所有作为另一对象的子对象的对象看作该对象的属性请参见第十章中与此相关的注解。 
<p>　　B.1 anchor对象<br />　　使用&lt;A NAME=&gt;标记创建的HTML描点能被一个链接作为目标如果锚点包括HREF=特性,则它也是一个链接对象。<br />　　anchor对象是document对象的一个属性,它本身没有属性方法或者事件处理程序。</p><p>　　B.2 anchors数组<br />　　anchors数组是document对象的一个属性,是文档内所有anchor对象的一个列表如果anchor也是一个link(链接),则它会同时出现在anchors和links数组中。<br />　　属性<br />　　length 文档内的锚点个数</p><p>　　B.3 array对象<br />　　array对象是Netscape Navlgator 3.0 beta 3中引入的一个新的对象,因而,它不能在Netscape 2.0中使用它是一个内置对象,而不是其它对象的属性。<br />　　属性<br /> 　length 数组中的值个数</p><p>　　B.4 button对象<br />　　它是form对象的一个属性,使用&lt;INPUT TYPE="BUTTON"&gt;标记来创建。<br />　　属性<br />　　name HTML标记中的NAME=特性<br />　　value HTML标记中的VALUE=特性<br />　　方法<br />　　click 模拟鼠标单击一按钮<br />　　事件处理程序<br />　　Onclick</p><p>　　B.5 checkbox 对象<br />　　它是form对象的一个属性,使用&lt;INPUT TYPE="CHECKBOX"&gt;标记来创建。<br />　　属性<br />　　checked 复选框的选择状态<br />　　defaultChecked 标记的CHECKED=特性<br />　　name 标记的NAME=特性<br />　　value 标记的VALUE=特性<br />　　方法<br />　　click 模拟鼠标单击按钮<br />　　事件处理程序<br />　　onclick</p><p>　　B.6 Date对象<br />　　它是一个内置对象——而不是其它对象的属性,允许用户执行各种使用日期和时间的过程。<br />  　方法<br />　　getDate() 查看Date对象并返回日期<br />　　getDay() 返回星期几<br />　　getHours() 返回小时数<br />　　getMinutes() 返回分钟数<br />　　getMonth() 返回月份值<br />　　getSeconds() 返回秒数<br />　　getTime() 返回完整的时间<br />　　getTimezoneoffset() 返回时区偏差值(格林威治平均时间与运行脚本的计算机所处时区设置之间相差的小时数)<br />　　getYear() 返回年份<br />　　parse() 返回在Date字符串中自从1970年1月1日00:00:00以来的毫秒数(Date对象按照毫秒数的形式存储从那时起的日期和时间)但是注意,该方法当前不能正确运行<br />　　setDate() 改变Date对象的日期<br />　　setHours() 改变小时数<br />　　setMinutes() 改变分钟数<br />　　setMonth() 改变月份<br />　　setSeconds() 改变秒数<br />　　setTime() 改变完整的时间<br />　　setYear() 改变年份<br />　　toGMTString() 把Date对象的日期(一个数值)转变成一个GMT时间字符串,返回类似下面的值:Weds,15 June l997 14:02:02 GMT(精确的格式依赖于计算机上所运行的操作系统而变)<br />　　toLocaleString() 把Date对象的日期(一个数值)转变成一个字符串,使用所在计算机上配置使用的特定日期格式<br />　　UTC() 使用Date UTC(年、月、日、时、分、秒),以自从1970年1月1日00:00:00(其中时、分、秒是可选的)以来的毫秒数的形式返回日期</p><p>　　B.7 document对象<br />　　该对象是window和frames对象的一个属性,是显示于窗口或框架内的一个文档。<br />　　属性<br />　　alinkColor 活动链接的颜色(ALINK)<br />　　anchor 一个HTMI锚点,使用&lt;A NAME=&gt;标记创建(该属性本身也是一个对象)<br />　　anchors array 列出文档锚点对象的数组(&lt;A NAME=&gt;)(该属性本身也是一个对象)<br />　　bgColor 文档的背景颜色(BGCOLOR)<br />　　cookie 存储于cookie.txt文件内的一段信息,它是该文档对象的一个属性<br />　　fgColor 文档的文本颜色(&lt;BODY&gt;标记里的TEXT特性)<br />　　form 文档中的一个窗体(&lt;FORM&gt;)(该属性本身也是一个对象)<br />　　forms anay 按照其出现在文档中的顺序列出窗体对象的一个数组(该属性本身也是一个对象)<br />　　lastModified 文档最后的修改日期<br />　　linkColor 文档的链接的颜色,即&lt;BODY&gt;标记中的LINK特性(链接到用户没有观察到的文档)<br />　　link 文档中的一个&lt;A HREF=&gt;标记(该属性本身也是一个对象)<br />　　links array 文档中link对象的一个数组,按照它们出现在文档中的顺序排列(该属性本身也是一个对象)<br />　　location 当前显示文档的URL。用户不能改变document.location(因为这是当前显示文档的位置)。但是,可以改变window.location (用其它文档取代当前文档)window.location本身也是一个对象,而document.location不是对象<br />　　referrer 包含链接的文档的URL,用户单击该链接可到达当前文档<br />　　title 文档的标题((TITLE&gt;)<br />　　vlinkColor 指向用户已观察过的文档的链接文本颜色,即&lt;BODY&gt;标记的VLINK特性<br />　　方法<br />　　clear 清除指定文档的内容<br />　　close 关闭文档流<br />　　open 打开文档流<br />　　write 把文本写入文档<br />　　writeln 把文本写入文档,并以换行符结尾</p><p>　　B.8 elements数组<br />　　它是form对象的一个属性,列举了窗体内各元素的一个数组。<br />　　属性<br />　　1ength 窗体内的元素个数<br />　　B.9 form对象<br />　　它是document对象的一个属性,文档内的一个窗体。<br />　　属性<br />　　action 包含了为一个窗体提交的目标URL的字符串<br />　　button 窗体内的一个按钮,使用&lt;INPUT TYPE=”BUTTON”&gt;标记来创建(该属性本身也是一个对象)<br />　　checkbox 复选框,使用&lt;INPUT TYPE=”CHECKBOX”&gt;标记来创建 (该属性本身也是一个对象)<br />　　elements array 一个数组,按照其出现于窗体内的顺序列举各窗体元素(该属性本身也是一个对象)<br />　　encoding 窗体的MIME编码<br />  　hidden 窗体里的一个隐藏元素(&lt;INPUT TYPE=”HIDDEN”&gt;)。窗体对象的一个属性(该属性本身也是一个对象)<br />　　length 窗体里的元素的个数<br />　　method 输入窗体的数据传送到服务器上的方式,即(FORM)标记中的METHOD特性<br />　　radio 设置在窗体里的单选按钮(&lt;INPUT TYPE=”RADIO”&gt;)(该属性本身也是一个对象)<br />　　reset 窗体里的复位按钮((1NPUT TYPE=”RESET”&gt;)(该属性自身也是一个对象)<br />　　select 窗体里的选择框(&lt;SELECT&gt;)(该属性本身也是一个对象)<br />　　submit 窗体里的提交按钮(&lt;INPUT TYPE=”SUBMIT”&gt;)(该属性本身也是一个对象)<br />　　target 提交窗体后,显示回应信息的窗口的名字<br />　　text 窗体里的文本元素(&lt;INPUT TYPE=”TEXT”&gt;)(该属性本身也是一个对象)<br />　　textarta 窗体里的文本区元素(&lt;TEXTAREA&gt;)(该属性本身也是一个对象)<br />　　方法<br />　　submit 提交窗体(与使用Submit按钮的作用相同)事件处理程序<br />　　onsubmit</p><p>　　B.10 forms数组<br />　　该数组是document对象的一个属性,即列举了文档内的各窗体的一个数组。<br />　　属性<br />　　length 文档内窗体的个数</p><p>　　B.11 frame对象<br />　　它是window对象的一个属性,窗口内的一个框架。除了个别例外,frame对象与window对象的作用相同。<br />　　属性<br />　　frames array 列举该框架内的各个子框架的一个数组(该属性本身也是—个对象)<br />　　length 该框架内的框架数<br />　　name 框架的名字(&lt;FRAME&gt;标记里的NAME特性)<br />　　parent 包含本框架的父窗口的同义词<br />　　self 当前框架的同义词<br />　　window 当前框架的同义词<br />　　方法<br />　　clearTimeout() 用来终止setTimeout方法的工作<br />　　setTimeout() 等待指定的毫秒数,然后运行指令</p><p>　　B.12 frames数组<br />　　它既是window对象,也是frame对象的属性,列举了window或者frame对象内的各框架。<br />　　属性<br />　　length 窗口或框架对象内的框架数</p><p>　　B.13 hidden对象<br />　　糊为form对象的一个属性,窗体内的一个隐藏元素(&lt;INPUT TYPE=”HIDDEN”&gt;)。<br />　　属性<br />　　name 标记内的名字(NAME特性)<br />　　value 标记内的VALUE=特性</p><p>　　B.14 history对象<br />　　它为window对象的一个属性,该窗口的历史列表。<br />　　属性<br />　　length 历史列表中的项目数<br />　　方法<br />　　back 加载历史列表中的上一个文档<br />　　forward 加载历史列表中的下一个文档<br />　　go 加载历史列表中的一个指定文档,通过文档在列表中的位置来指定</p><p>　　B.15 image对象<br />　　它是document对象的一个属性,是使用(1MG)标记内嵌入文档里的一幅图像这是Netscape Navigator 3.0 beta 3引入的新对象。<br />　　属性<br />　　border &lt;IMG&gt;标记的BORDER特性<br />　　complete 表示浏览器是否完整地加载了图像的一个布尔值<br />　　height HEIGHT特性<br />　　hspace HSPACE特性<br />　　lowsrc LOWSRC特性<br />　　src SRC特性<br />　　vsPace VSPACE特性<br />　　width WIDTH特性<br />　　事件处理程序<br />　　Onload 图象载入<br />　　Onerror 载入错误<br />　　Onabort 取消</p><p>　　B.16 images数组<br />　　它是document对象的一个属性,文档中所有图像的列表。<br />　　属性<br />　　length 文档内的图像个数</p><p>　　B.17 link<br />　　它是document对象的一个属性,文档内的一个&lt;A HREF=&gt;标记。<br />　　属性<br />　　hash 以散列号(#)开始的一个字符串,用于指定URL内的一个锚点<br />　　host 包括冒号和端口号的URL的主机名部分<br />　　hostname 与host属性相同,除了不包括冒号和端口号外<br />　　href 完整的URL<br />　　pathname URL的目录路径部分<br />　　port URL的:端口部分<br />　　protocol URL类型(http:、ftp:、gopher:等等)<br />　　search 以一个问号开始的URL中的一部分,用于指定搜索信息<br />　　target 当用户单击一链接(TARGET特性)时,用于显示被引用文档内容的窗口<br />　　事件处理程序<br />　　Onclick 点击<br />　　Onmouseover 鼠标移到对象上</p><p>　　B.18 links数组<br />　　它是document对象的一个属性,文档内所有链接的一个列表。<br />　　属性<br />　　length 文档内的链接数</p><p>　　B.19 location对象<br />　　它为document对象的一个属性,该文档的完整URL，请不要把它与window.location属性相混淆,后者可用来加载一个新文档,并且window.location属性本身并不是一个对象，同时,window.location可以用脚本修改,而document.location则不能。<br />　　属性<br />　　hash 以散列号(#)开始的一个字符串,用于指定URL内的一个锚点<br />　　host 包括冒号和端口号的URL的主机名部分<br />　　hostname 与host属性相同,除了不包括冒号和端口号之外<br />　　href 完整的URL<br />　　pathname URL的目录路径部分<br />　　port URL的:端口部分<br />　　protocol URL的类型(http:、ftp:、gopher:等等)<br />　　search 以问号(?)开始的URL中的一部分,用于指定搜索信息<br />　　target 用户单击链接(TARGET特性)时,用于显示被引用文档的内容的窗口</p><p>　　B.20 math对象<br />　　该对象不是其它对象的一个属性,而是一个内置对象,包含了许多数学常量和函数。<br />　　属性<br />　　E 欧拉常量,自然对数的底(约等于2.718)<br />　　LN2 2的自然对数(约等于0.693)<br />　　LN10 10的自然对数(约等于2.302)<br />　　LOG2E 以2为底的e的对数(约等于1.442)<br />　　LOG10E 以10为底的e的对数(约等于o.434)<br />　　PI ∏的值(约等于3.14159)<br />　　SQRT1_2 0.5的平方根(即l除以2的平方根,约等于o.707)<br />　　SQRT2 2的平方根(约等于1.414)<br />　　方法<br />　　abs() 返回某数的绝对值(即该数与o的距离,例如,2与一2的绝对值都是2)<br />　　acos() 返回某数的反余弦值(以弧度为单位)<br />　　asin() 返回某数的反正弦值(以弧度为单位)<br />　　atan() 返回某数的反正切值(以弧度为单位)<br />　　ceil() 返回与某数相等,或大于该数的最小整数(ceil(-22.22)返回-22;ceil22,22)返回23;ceil(22)返回22)<br />　　cos() 返回某数(以弧度为单位)的余弦值<br />　　exp() 返回en<br />　　floor() 与ceil相反(floor(一22.22)返回一23;floor(22.22)返回22; floor(22)返回22)<br />　　10g() 返回某数的自然对数(以e为底)<br />　　max() 返回两数间的较大值<br />　　min() 返回两数问的较小值<br />　　pow() 返回m的n次方(其中,m为底,n为指数)<br />　　random() 返回0和1之间的一个伪随机数(该方法仅在Netscape<br />　　Navigator的UNIX版本中有效)<br />　　round() 返回某数四舍五入之后的整数<br />　　sin() 返回某数(以弧度为单位)的正弦值<br />　　sqrt() 返回某数的平方根<br />　　tan() 返回某数的正切值</p><p>　　B.2l navigator对象<br />　　该对象不是其它对象的属性,而是一个内置对象它包含了有关加载文档的浏览器的信息。<br />　　属性<br />　　appCodeName 浏览器的代码名(例如,Mozilla)<br />　　appName 浏览器的名字<br />　　appVersion 浏览器的版本号<br />　　userAgent 由客户机送到服务器的用户与代理头标文本<br />　　方法<br />　　javaEnabled JavaScript中当前并没有该方法,但是不久之后将会添加上它将查看浏览器是否为兼容JavaScript的浏览器,如果是,继续查看JavaScript是否处于支持状态。</p><p>　　B.22 options数组<br />　　该数组是select对象的一个属性,即选择框中的所有选项(&lt;OPTION&gt;)的一个列表。<br />　　属性<br />　　defaultSelected 选项列表中的缺省选项<br />　　index 选项列表中某选项的索引位置<br />　　length 选项列表中的选项数(&lt;OPTIONS&gt;)<br />　　name 选项列表的名字(NAME特性)<br />　　selected 表示选项列表中某选项&lt;OPTION&gt;是否被选中的一个布尔类型值<br />　　selectedIndex 选项列表中已选中的&lt;OPTION&gt;的索引(位置)<br />　　text 选项列表中&lt;OPTION&gt;标记后的文本<br />　　value 选项列表中的VALUE=特性</p><p>　　B.23 Password 对象<br />　　它是document对象的一个属性,一个&lt;INPUT TYPE=”PASSWORD”&gt;标记。<br />　　属性<br />　　defaultValue password对象的缺省值(VAlUE=特性)<br />　　name 对象的名字(NAME=特性)<br />　　value 该域具有的当前值最初与VALUE=特性(defauttValue)相同,但是,如果脚本修改了该域中的值,则该值将改变<br />　　方法<br />　　focus 把焦点从该域移开<br />　　blur 把焦点移到该域<br />　　select 选择输入区域</p><p>　　B.24 radio对象<br />　　它是form对象的一个属性,窗体内的一组单选按钮(选项按钮)(&lt;INPUT TYPE=”RADIO”&gt;)。<br />　　属性<br />　　checked 复选框或选项按钮(单选按钮)的状态<br />　　defaultChecked 复选框或选项按钮(单选按钮)的缺省状态<br />　　length 一组单选按钮中的按钮数<br />　　name 对象的名字(NAME=特性)<br />　　value VALUE=特性<br />　　方法<br />　　click 模拟鼠标单击按钮<br />　　事件处理程序<br />　　onclick 点击</p><p>　　B.25 reset 对象<br />　　它是form对象的一个属性,复位按钮(&lt;INPUT TYPE=”RESET”&gt;)。<br />　　属性<br />　　name 对象的名字(NAME=特性)<br />　　value VALUE=特性<br />　　方法<br />　　click 模拟鼠标单击按钮<br />　　事件处理程序<br />　　onclick 点击</p><p>　　B.26 select对象<br />　　它是form对象的一个属性,选择框(&lt;SELECT&gt;)。<br />　　属性<br />　　length 选项列表中的选项数(&lt;OPTIONS&gt;)<br />　　name 选项列表的名字(NAME特性)<br />　　options 列表中的选项数<br />　　selectedlndex 选项列表中已选中的&lt;OPTION&gt;的索引(位置)<br />　　text 选项列表中(OPTION)标记之后的文本<br />　　value 选项列表中的VALUE=特性<br />　　方法<br />　　blur 把焦点从选项列表中移走<br />　　focus 把焦点移到选项列表中<br />　　事件处理程序<br />　　Onblur 失去焦点时事件<br />　　onchange 更改<br />　　Onfocus 聚焦事件</p><p>　　B.27 string对象<br />　　它不是另一个对象的属性,而是一个内置对象,即一串字符字符串输入脚本中时必须位于引号内。<br />　　属性<br />　　length 字符串中的字符个数<br />　　方法<br />　　anchor() 用来把字符串转换到HTML锚点标记内(&lt;A NAME=&gt;)<br />　　big() 把字符串中的文本变成大字体(&lt;BIG&gt;)<br />　　blink() 把字符串中的文本变成闪烁字体(&lt;BLINK&gt;)<br />　　bold() 把字符串中的文本变成黑字体(&lt;B&gt;)<br />　　charAt() 寻找字符串中指定位置的一个字符<br />　　fixed() 把字符串中的文本变成固定间距字体(&lt;TT&gt;)<br />　　fontcolor() 改变字符串中文本的颜色(&lt;FONT COLOR=&gt;)<br />　　fontsize() 把字符串中的文本变成指定大小(&lt;FONTSIZE=&gt;)<br />　　indexOf() 用来搜索字符串中的某个特殊字符,并返回该字符的索引位置<br />　　italics() 把字符串中的文本变成斜字体(&lt;I&gt;)<br />　　lastlndexOf() 与indexof相似,但是向后搜索最后一个出现的字符<br />　　link() 用来把字符串转换到HTML链接标记中(&lt;A HREF=&gt;)<br />　　small() 把字符串中的文本变成小字体(&lt;SMALL&gt;)<br />　　strike() 把字符串中的文本变成划掉字体(&lt;STRIKE&gt;)<br />　　sub() 把字符串中的文本变成下标(subscript)字体((SUB&gt;)<br />　　substring() 返回字符串里指定位置间的一部分字符串<br />　　sup() 把字符串中的文本变成上标(superscript)字体(&lt;SUP&gt;)<br />　　toLowerCase() 把字符串中的文本变成小写<br />　　toUpperCase() 把字符串中的文本变成大写</p><p>　　B.28 submit对象<br />　　它是form对象的一个属性,窗体中的一个提交按钮(&lt;INPUT TYPE=”SUBMIT”&gt;)。<br />　　属性<br />　　name 对象的名字(NAME=特性)<br />　　value VALUE=特性<br />　　方法<br />　　click 模拟鼠标单击按钮<br />　　事件处理程序<br />　　Onclick 点击</p><p>　　B.29 text对象<br />　　它是form对象的一个属性,宙体中的一个文本域(&lt;INPUT TYPE=”TEXT”&gt;)。<br />　　属性<br />　　defaultValue text对象的缺省值(VALUE=特性)<br />　　name 该对象的名字(NAME=特性)<br />　　Value 该域具有的当前值,最初与VALUE=特性(defaultValue)相同但是,如果脚本修改了该域中的值,则该值将改变<br />　　方法<br />　　blur 把焦点从文本框移开<br />　　focus 把焦点移到文本框<br />　　select 选择输入区域<br />　　事件处理程序<br />　　Onblur 失去焦点事件<br />　　Onchange 更改<br />　　Onfocus 聚焦事件<br />　　Onselect 选取事件</p><p>　　B.30 textarea对象<br />　　它是form对象的一个属性,宙体中的一个文本区域(&lt;TEXTAREA&gt;)。<br />　　属性<br />　　defaultValue textarea对象的缺省值(VALUE=特性)<br />　　name 该对象的名字(NAME=特性)<br />　　value 该域具有的当前值,最初与VALUE=特性(defaultValue)相同,但是,如果脚本修改了该域中的值,则该值将改变了。<br />　　方法<br />　　blur 把焦点从文本区移开<br />　　focus 把焦点移到文本区<br />　　select 选择输入区域事件处理程序<br />　　事件处理程序<br />　　Onblur 失去焦点事件<br />　　Onchange 更改<br />　　Onfocus 聚焦事件<br />　　Onselect 选取事件</p><p>　　B.31 window对象<br />　　它是一个顶层对象,而不是另一个对象的属性即浏览器的窗口。<br />　　属性<br />　　defaultStatus 缺省的状态条消息<br />　　document 当前显示的文档(该属性本身也是一个对象)<br />　　frame 窗口里的一个框架((FRAME&gt;)(该属性本身也是一个对象)<br />　　frames array 列举窗口的框架对象的数组,按照这些对象在文档中出现的顺序列出(该属性本身也是一个对象)<br />　　history 窗口的历史列表(该属性本身也是一个对象)<br />　　length 窗口内的框架数<br />　　location 窗口所显示文档的完整(绝对)URL(该属性本身也是一个对象)不要把它与如document.location混淆,后者是当前显示文档的URL。用户可以改变window.location(用另一个文档取代当前文档),但却不能改变document.location(因为这是当前显示文档的位置)<br />　　name 窗口打开时,赋予该窗口的名字<br />　　opener 代表使用window.open打开当前窗口的脚本所在的窗口(这是Netscape Navigator 3.0beta 3所引入的一个新属性)<br />　　parent 包含当前框架的窗口的同义词。frame和window对象的一个属性<br />　　self 当前窗口或框架的同义词<br />　　status 状态条中的消息<br />　　top 包含当前框架的最顶层浏览器窗口的同义词<br />　　window 当前窗口或框架的同义词,与self相同<br />　　方法<br />　　alert() 打开一个Alert消息框<br />　　clearTimeout() 用来终止setTimeout方法的工作<br />　　close() 关闭窗口<br />　　confirm() 打开一个Confirm消息框,用户可以选择OK或Cancel,如果用户单击OK,该方法返回true,单击Cancel返回false<br />　　blur() 把焦点从指定窗口移开(这是Netscape Navigator 3.0 beta 3引入的新方法)<br />　　focus() 把指定的窗口带到前台(另一个新方法)<br />　　open() 打开一个新窗口<br />　　prompt() 打开一个Prompt对话框,用户可向该框键入文本,并把键入的文本返回到脚本<br />　　setTimeout() 等待一段指定的毫秒数时间,然后运行指令事件处理程序<br />　　事件处理程序<br />　　Onload() 页面载入时触发<br />　　Onunload() 页面关闭时触发</p><img src ="http://www.blogjava.net/wangxinsh55/aggbug/55707.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2006-06-29 11:25 <a href="http://www.blogjava.net/wangxinsh55/archive/2006/06/29/55707.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript字符串拆分</title><link>http://www.blogjava.net/wangxinsh55/archive/2006/06/28/55563.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Wed, 28 Jun 2006 08:56:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2006/06/28/55563.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/55563.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2006/06/28/55563.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/55563.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/55563.html</trackback:ping><description><![CDATA[&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br />&lt;!--<br />function test(){<br /> var txt = document.all.aa.value;<br /> document.all.texDdfy.value=txt.split("+")[0];<br /> document.all.texJe.value=txt.split("+")[1];<br />}<br />//--&gt;<br />&lt;/SCRIPT&gt;<br /><img src ="http://www.blogjava.net/wangxinsh55/aggbug/55563.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2006-06-28 16:56 <a href="http://www.blogjava.net/wangxinsh55/archive/2006/06/28/55563.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>