﻿<?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-josson.jin-随笔分类-web开发</title><link>http://www.blogjava.net/josson/category/22505.html</link><description>天地生人,有一人应有一人之业;人生在世,生一日当尽一日之勤!</description><language>zh-cn</language><lastBuildDate>Fri, 02 Jul 2010 06:22:07 GMT</lastBuildDate><pubDate>Fri, 02 Jul 2010 06:22:07 GMT</pubDate><ttl>60</ttl><item><title>firefox及ie不同版本间样式兼容性调试方法.</title><link>http://www.blogjava.net/josson/archive/2010/06/29/324751.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Tue, 29 Jun 2010 03:03:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2010/06/29/324751.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/324751.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2010/06/29/324751.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/324751.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/324751.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CJIANFA%7E1.JIN%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
<link rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5CJIANFA%7E1.JIN%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_editdata.mso" /><!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CJIANFA%7E1.JIN%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CJIANFA%7E1.JIN%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
<w:UseFELayout/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math" />
<m:brkBin m:val="before" />
<m:brkBinSub m:val="&#45;-" />
<m:smallFrac m:val="off" />
<m:dispDef/>
<m:lMargin m:val="0" />
<m:rMargin m:val="0" />
<m:defJc m:val="centerGroup" />
<m:wrapIndent m:val="1440" />
<m:intLim m:val="subSup" />
<m:naryLim m:val="undOvr" />
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267">
<w:LsdException locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal" />
<w:LsdException locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 2" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 3" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 4" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 5" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 6" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 7" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 8" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 9" />
<w:LsdException locked="false" priority="39" name="toc 1" />
<w:LsdException locked="false" priority="39" name="toc 2" />
<w:LsdException locked="false" priority="39" name="toc 3" />
<w:LsdException locked="false" priority="39" name="toc 4" />
<w:LsdException locked="false" priority="39" name="toc 5" />
<w:LsdException locked="false" priority="39" name="toc 6" />
<w:LsdException locked="false" priority="39" name="toc 7" />
<w:LsdException locked="false" priority="39" name="toc 8" />
<w:LsdException locked="false" priority="39" name="toc 9" />
<w:LsdException locked="false" priority="35" qformat="true" name="caption" />
<w:LsdException locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title" />
<w:LsdException locked="false" priority="1" name="Default Paragraph Font" />
<w:LsdException locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle" />
<w:LsdException locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong" />
<w:LsdException locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis" />
<w:LsdException locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid" />
<w:LsdException locked="false" unhidewhenused="false" name="Placeholder Text" />
<w:LsdException locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1" />
<w:LsdException locked="false" unhidewhenused="false" name="Revision" />
<w:LsdException locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph" />
<w:LsdException locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote" />
<w:LsdException locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6" />
<w:LsdException locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis" />
<w:LsdException locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis" />
<w:LsdException locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference" />
<w:LsdException locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference" />
<w:LsdException locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title" />
<w:LsdException locked="false" priority="37" name="Bibliography" />
<w:LsdException locked="false" priority="39" qformat="true" name="TOC Heading" />
</w:LatentStyles>
</xml><![endif]--><style>
<!-- /* Font Definitions */
@font-face
{font-family:Batang;
panose-1:2 3 6 0 0 1 1 1 1 1;
mso-font-alt:바탕;
mso-font-charset:129;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-1342176593 1775729915 48 0 524447 0;}
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"\@Batang";
panose-1:2 3 6 0 0 1 1 1 1 1;
mso-font-charset:129;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-1342176593 1775729915 48 0 524447 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:widow-orphan;
font-size:10.5pt;
font-family:"Calibri","sans-serif";
mso-fareast-font-family:宋体;
mso-bidi-font-family:宋体;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
font-size:10.0pt;
mso-ansi-font-size:10.0pt;
mso-bidi-font-size:10.0pt;
mso-ascii-font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman";
mso-font-kerning:0pt;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
</style>
<![endif]-->
<p class="MsoNormal"><span style="font-family: 宋体;">最近一个项目主要涉及前端的交互优化，由于</span><span lang="EN-US">UED</span><span style="font-family: 宋体;">资源不足，所以一起做了一些前端的工作，</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">由于各浏览器的标准不一样，如要兼容像</span><span lang="EN-US">ie6,7,8</span><span style="font-family: 宋体;">及</span><span lang="EN-US">firefox</span><span style="font-family: 宋体;">，样式调整比较费事，现在</span><span lang="EN-US">css</span><span style="font-family: 宋体;">相关</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">的一些技巧分享一下，希望对大家有所帮助。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">1</span><span style="font-family: 宋体;">、什么是</span><span lang="EN-US">css hack.</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">针对不同的浏览器去写不同的</span><span lang="EN-US">CSS</span><span style="font-family: 宋体;">，让它能够同时兼容不同的浏览器，能在不同的浏览器中也</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">能得到我们想要的页面效果，这种针对不同的浏览器写不同的</span><span lang="EN-US">CSS code</span><span style="font-family: 宋体;">的过程，称之为</span><span lang="EN-US">CSS hack</span><span style="font-family: 宋体;">。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">通过下表中的</span><span lang="EN-US">hack
code</span><span style="font-family: 宋体;">就可以实现不同版本</span><span lang="EN-US">ie</span><span style="font-family: 宋体;">浏览器间的兼容：</span></p>
<table class="MsoNormalTable" style="width: 227pt; margin-left: -1.15pt; border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0" width="303">
    <tbody>
        <tr style="height: 13.5pt;">
            <td style="width: 65pt; background: none repeat scroll 0% 0% #00b050; padding: 0cm 5.4pt; height: 13.5pt;" width="87" nowrap="nowrap">
            <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Batang&quot;,&quot;serif&quot;; color: white;" lang="EN-US">hack code<o:p></o:p></span></p>
            </td>
            <td style="width: 54pt; background: none repeat scroll 0% 0% #00b050; padding: 0cm 5.4pt; height: 13.5pt;" width="72" nowrap="nowrap">
            <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt; font-family: &quot;Batang&quot;,&quot;serif&quot;; color: white;" lang="EN-US">ie6<o:p></o:p></span></p>
            </td>
            <td style="width: 54pt; background: none repeat scroll 0% 0% #00b050; padding: 0cm 5.4pt; height: 13.5pt;" width="72" nowrap="nowrap">
            <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt; font-family: &quot;Batang&quot;,&quot;serif&quot;; color: white;" lang="EN-US">ie7<o:p></o:p></span></p>
            </td>
            <td style="width: 54pt; background: none repeat scroll 0% 0% #00b050; padding: 0cm 5.4pt; height: 13.5pt;" width="72" nowrap="nowrap">
            <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt; font-family: &quot;Batang&quot;,&quot;serif&quot;; color: white;" lang="EN-US">firefox<o:p></o:p></span></p>
            </td>
        </tr>
        <tr style="height: 13.5pt;">
            <td style="width: 65pt; padding: 0cm 5.4pt; height: 13.5pt;" width="87" nowrap="nowrap">
            <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Batang&quot;,&quot;serif&quot;; color: black;" lang="EN-US">_<o:p></o:p></span></p>
            </td>
            <td style="width: 54pt; padding: 0cm 5.4pt; height: 13.5pt;" width="72" nowrap="nowrap">
            <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt; font-family: &quot;Batang&quot;,&quot;serif&quot;; color: black;">&#8730;<span lang="EN-US"><o:p></o:p></span></span></p>
            </td>
            <td style="width: 54pt; padding: 0cm 5.4pt; height: 13.5pt;" width="72" nowrap="nowrap">
            <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt; font-family: &quot;Batang&quot;,&quot;serif&quot;; color: black;">&#215;<span lang="EN-US"><o:p></o:p></span></span></p>
            </td>
            <td style="width: 54pt; padding: 0cm 5.4pt; height: 13.5pt;" width="72" nowrap="nowrap">
            <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt; font-family: &quot;Batang&quot;,&quot;serif&quot;; color: black;">&#215;<span lang="EN-US"><o:p></o:p></span></span></p>
            </td>
        </tr>
        <tr style="height: 13.5pt;">
            <td style="width: 65pt; padding: 0cm 5.4pt; height: 13.5pt;" width="87" nowrap="nowrap">
            <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Batang&quot;,&quot;serif&quot;; color: black;" lang="EN-US">*<o:p></o:p></span></p>
            </td>
            <td style="width: 54pt; padding: 0cm 5.4pt; height: 13.5pt;" width="72" nowrap="nowrap">
            <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt; font-family: &quot;Batang&quot;,&quot;serif&quot;; color: black;">&#8730;<span lang="EN-US"><o:p></o:p></span></span></p>
            </td>
            <td style="width: 54pt; padding: 0cm 5.4pt; height: 13.5pt;" width="72" nowrap="nowrap">
            <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt; font-family: &quot;Batang&quot;,&quot;serif&quot;; color: black;">&#8730;<span lang="EN-US"><o:p></o:p></span></span></p>
            </td>
            <td style="width: 54pt; padding: 0cm 5.4pt; height: 13.5pt;" width="72" nowrap="nowrap">
            <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt; font-family: &quot;Batang&quot;,&quot;serif&quot;; color: black;">&#215;<span lang="EN-US"><o:p></o:p></span></span></p>
            </td>
        </tr>
        <tr style="height: 13.5pt;">
            <td style="width: 65pt; padding: 0cm 5.4pt; height: 13.5pt;" width="87" nowrap="nowrap">
            <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Batang&quot;,&quot;serif&quot;; color: black;" lang="EN-US">!import<o:p></o:p></span></p>
            </td>
            <td style="width: 54pt; padding: 0cm 5.4pt; height: 13.5pt;" width="72" nowrap="nowrap">
            <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt; font-family: &quot;Batang&quot;,&quot;serif&quot;; color: black;">&#215;<span lang="EN-US"><o:p></o:p></span></span></p>
            </td>
            <td style="width: 54pt; padding: 0cm 5.4pt; height: 13.5pt;" width="72" nowrap="nowrap">
            <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt; font-family: &quot;Batang&quot;,&quot;serif&quot;; color: black;">&#8730;<span lang="EN-US"><o:p></o:p></span></span></p>
            </td>
            <td style="width: 54pt; padding: 0cm 5.4pt; height: 13.5pt;" width="72" nowrap="nowrap">
            <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt; font-family: &quot;Batang&quot;,&quot;serif&quot;; color: black;">&#8730;<span lang="EN-US"><o:p></o:p></span></span></p>
            </td>
        </tr>
    </tbody>
</table>
<p class="MsoNormal"><span lang="EN-US">&#8216;_&#8217; : </span><span style="font-family: 宋体;">只有</span><span lang="EN-US">ie6</span><span style="font-family: 宋体;">能识别</span><span lang="EN-US">_</span><span style="font-family: 宋体;">，<span style="color: red;">如</span></span><span style="color: red;" lang="EN-US">ie7,8</span><span style="font-family: 宋体; color: red;">下</span><span style="color: red;" lang="EN-US">&#8221;width:100px; &#8220;</span><span style="font-family: 宋体; color: red;">的样式是</span><span style="color: red;" lang="EN-US">OK</span><span style="font-family: 宋体; color: red;">，但</span><span style="color: red;" lang="EN-US">ie6</span><span style="font-family: 宋体; color: red;">不够宽时，可以在</span><span style="color: red;" lang="EN-US">&#8221;width:100px&#8221;</span><span style="font-family: 宋体; color: red;">后面增加一段</span><span style="color: red;" lang="EN-US">&#8221;_width:105px;&#8221; </span><span style="font-family: 宋体; color: red;">那么</span><span style="color: red;" lang="EN-US">ie7,8</span><span style="font-family: 宋体; color: red;">不会解析</span><span style="color: red;" lang="EN-US">_width:105px</span><span style="font-family: 宋体; color: red;">，但</span><span style="color: red;" lang="EN-US">ie6</span><span style="font-family: 宋体; color: red;">会执行。</span></p>
<p class="MsoNormal"><span lang="EN-US">&#8216;*&#8217; : ie6,7</span><span style="font-family: 宋体;">都能识别</span><span lang="EN-US">*</span><span style="font-family: 宋体;">，但</span><span lang="EN-US">firefox</span><span style="font-family: 宋体;">不能识别；</span></p>
<p class="MsoNormal"><span lang="EN-US">&#8216;!import&#8217; : ie 6</span><span style="font-family: 宋体;">不能识别，</span><span lang="EN-US">ie7</span><span style="font-family: 宋体;">和</span><span lang="EN-US">ie8</span><span style="font-family: 宋体;">都能识别；</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2</span><span style="font-family: 宋体;">、</span><span lang="EN-US">css</span><span style="font-family: 宋体;">调试工具</span></p>
<p class="MsoNormal"><span lang="EN-US">(1). ie8</span><span style="font-family: 宋体;">的调试工具，</span><span lang="EN-US">ie8</span><span style="font-family: 宋体;">下按</span><span lang="EN-US">F12</span><span style="font-family: 宋体;">能呼出开发人员开发工具，如下图：</span></p>
<p class="MsoNormal"><span lang="EN-US"><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter" />
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0" />
<v:f eqn="sum @0 1 0" />
<v:f eqn="sum 0 0 @1" />
<v:f eqn="prod @2 1 2" />
<v:f eqn="prod @3 21600 pixelWidth" />
<v:f eqn="prod @3 21600 pixelHeight" />
<v:f eqn="sum @0 0 1" />
<v:f eqn="prod @6 1 2" />
<v:f eqn="prod @7 21600 pixelWidth" />
<v:f eqn="sum @8 21600 0" />
<v:f eqn="prod @7 21600 pixelHeight" />
<v:f eqn="sum @10 21600 0" />
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" />
<o:lock v:ext="edit" aspectratio="t" />
</v:shapetype><v:shape id="图片_x0020_1" o:spid="_x0000_i1025" type="#_x0000_t75" alt="" style='width:363pt;height:123pt'>
<v:imagedata src="file:///C:\DOCUME~1\JIANFA~1.JIN\LOCALS~1\Temp\msohtmlclip1\01\clip_image001.png" o:href="cid:image001.png@01CB16FF.9CB94450" />
</v:shape><![endif]--><!--[if !vml]--><img src="http://www.blogjava.net/images/blogjava_net/josson/xx1.jpg" alt="" border="0" width="484" height="164" /><!--[endif]--></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">选中图中的箭头鼠标按钮，在浏览器中选中需要优化的</span><span lang="EN-US">HTML</span><span style="font-family: 宋体;">对象，</span><span lang="EN-US">HTML</span><span style="font-family: 宋体;">窗口就会</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">定位到选中</span><span lang="EN-US">HTML</span><span style="font-family: 宋体;">对象的代码上</span><span lang="EN-US">(</span><span style="font-family: 宋体;">如上图左</span><span lang="EN-US">)</span><span style="font-family: 宋体;">，则右窗口中则显示当前对象的所有样式，</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">通过对右窗口中的样式调整，达到预期效果后，找到</span><span lang="EN-US">css</span><span style="font-family: 宋体;">文件的</span><span lang="EN-US">class</span><span style="font-family: 宋体;">，并作相同修</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">改。通过这个工具，修改样式后所见即所得，确定样式后再修改样式文件。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">(2). Firebug</span><span style="font-family: 宋体;">，</span><span lang="EN-US">firefox</span><span style="font-family: 宋体;">下可以通过</span><span lang="EN-US">Firebug</span><span style="font-family: 宋体;">工具，来定位</span><span lang="EN-US">HTML</span><span style="font-family: 宋体;">对象并调试该对象的样式，如下图：</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;"><img alt="" src="http://www.blogjava.net/images/blogjava_net/josson/xx2.jpg" width="799" height="233" /></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.blogjava.net/josson/aggbug/324751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2010-06-29 11:03 <a href="http://www.blogjava.net/josson/archive/2010/06/29/324751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ie 8 的window.open打开新窗口无反应问题。</title><link>http://www.blogjava.net/josson/archive/2009/09/12/294855.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Sat, 12 Sep 2009 07:01:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2009/09/12/294855.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/294855.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2009/09/12/294855.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/294855.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/294855.html</trackback:ping><description><![CDATA[因项目需要，实现系统对IE8的支持，安装了ie8版本。安装完后，发现一个奇怪问题，打开一个窗口(window.open方式)后，再打开时，新窗口的页面显示空白，无法加载其内容。关闭ie后，重新偿亦是如此，第一次能打开，第二次就不行。无论是ie7模式，还是兼容模式。<br />
<br />
网上搜了很多内容，都没有找相应的解决方案。后来偿试了一下，ie设置重置（工具-Internet选项-高级-重置），删除所有个性化设置，完成后，重试后该问题不再出现，窗口能正常打开。回想，可能是装完ie后，ie设置向导中做了某些不当的设置有关，但具体是哪项尚不得而知。<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/josson/aggbug/294855.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2009-09-12 15:01 <a href="http://www.blogjava.net/josson/archive/2009/09/12/294855.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript - 网页窗口适应续</title><link>http://www.blogjava.net/josson/archive/2009/09/05/294003.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Sat, 05 Sep 2009 10:15:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2009/09/05/294003.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/294003.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2009/09/05/294003.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/294003.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/294003.html</trackback:ping><description><![CDATA[<br />
在原网页窗口高度根据内容自适应的基础上，做了一些调整:<br />
1、解决窗口底部靠近任务栏时，<span style="color: rgb(0, 0, 0);">window.resizeBy </span>不能调整窗口高度问题；<br />
1、增加宽度自适功能（注：只针对宽度不足，进行扩展的情况；无法调整窗口宽度比实际内容宽的情况）<br />
<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">Ext.util.ResizeWin&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">try</span><span style="color: rgb(0, 0, 0);">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;sh&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;document.documentElement.scrollHeight<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">||</span><span style="color: rgb(0, 0, 0);">&nbsp;document.body.scrollHeight;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;ch&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;document.documentElement.clientHeight<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">||</span><span style="color: rgb(0, 0, 0);">&nbsp;document.body.clientHeight;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;sw&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;document.documentElement.scrollWidth<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">||</span><span style="color: rgb(0, 0, 0);">&nbsp;document.body.scrollWidth<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;cw&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;document.documentElement.clientWidth<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">||</span><span style="color: rgb(0, 0, 0);">&nbsp;document.body.scrollWidth;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;xHeight&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">55</span><span style="color: rgb(0, 0, 0);">;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">任务栏高度(double).</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;statHeigth&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">30</span><span style="color: rgb(0, 0, 0);">;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">状态栏高度</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;maxHeight&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;window.screen.height&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">&nbsp;xHeight;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">最大可显示网页高度</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;wHeight&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;window.screenTop&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;sh&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;statHeigth;<br />
</span><span style="color: rgb(0, 0, 0);">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(wHeight&nbsp;</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;maxHeight){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">窗口位置过底时，向上移动若干象素，使窗口状态栏在任务栏上面.</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;newTop&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;(window.screenTop&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">&nbsp;xHeight)&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;(maxHeight&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">&nbsp;wHeight);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(newTop&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">)&nbsp;newTop&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.moveTo(window.screenLeft,&nbsp;newTop);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">宽度调整时，实际内容不够宽可以适用，过宽无法调整.</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.resizeBy((sw</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">cw),(sh</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">ch));<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: rgb(0, 0, 255);">catch</span><span style="color: rgb(0, 0, 0);">&nbsp;(e){}<br />
};<br />
</span></div>
<br />
<strong>以下从网上收集的一些相关资料：</strong><br />
<br />
1、关于网页窗口高、宽示意图:<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/josson/g2006429214927.gif" alt="" border="0" /><br />
<br />
2、更多属性：<br />
<span id="ctl00_ContentPlaceHolder1_lbl3">
<p>网页可见区域宽：document.body.clientWidth <br />
网页可见区域高：document.body.clientHeight <br />
网页可见区域宽：document.body.offsetWidth (包括边线的宽) <br />
网页可见区域高：document.body.offsetHeight (包括边线的宽) <br />
网页正文全文宽：document.body.scrollWidth <br />
网页正文全文高：document.body.scrollHeight <br />
网页被卷去的高：document.body.scrollTop <br />
网页被卷去的左：document.body.scrollLeft <br />
网页正文部分上：window.screenTop <br />
网页正文部分左：window.screenLeft <br />
屏幕分辨率的高：window.screen.height <br />
屏幕分辨率的宽：window.screen.width <br />
屏幕可用工作区高度：window.screen.availHeight <br />
屏幕可用工作区宽度：window.screen.availWidth<br />
<br />
HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth <br />
scrollHeight: 获取对象的滚动高度。 <br />
scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 <br />
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离 <br />
scrollWidth:获取对象的滚动宽度 <br />
offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度 <br />
offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置 <br />
offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置 <br />
event.clientX 相对文档的水平座标 <br />
event.clientY 相对文档的垂直座标 <br />
event.offsetX 相对容器的水平坐标 <br />
event.offsetY 相对容器的垂直坐标 <br />
document.documentElement.scrollTop 垂直方向滚动的值 <br />
event.clientX+document.documentElement.scrollTop 相对文档的水平座标+垂直方向滚动的量</p>
<p>IE，FireFox 差异如下：<br />
IE6.0、FF1.06+：<br />
clientWidth = width + padding<br />
clientHeight = height + padding<br />
offsetWidth = width + padding + border<br />
offsetHeight = height + padding + border</p>
<p>IE5.0/5.5： <br />
clientWidth = width - border<br />
clientHeight = height - border<br />
offsetWidth = width<br />
offsetHeight = height</p>
<p>(需要提一下：CSS中的margin属性，与clientWidth、offsetWidth、clientHeight、offsetHeight均无关)</p>
<p>网页可见区域宽： document.body.clientWidth<br />
网页可见区域高： document.body.clientHeight<br />
网页可见区域宽： document.body.offsetWidth (包括边线的宽)<br />
网页可见区域高： document.body.offsetHeight (包括边线的高)<br />
网页正文全文宽： document.body.scrollWidth<br />
网页正文全文高： document.body.scrollHeight<br />
网页被卷去的高： document.body.scrollTop<br />
网页被卷去的左： document.body.scrollLeft<br />
网页正文部分上： window.screenTop<br />
网页正文部分左： window.screenLeft<br />
屏幕分辨率的高： window.screen.height<br />
屏幕分辨率的宽： window.screen.width<br />
屏幕可用工作区高度： window.screen.availHeight<br />
屏幕可用工作区宽度： window.screen.availWidt</p>
</span><br />
<img src ="http://www.blogjava.net/josson/aggbug/294003.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2009-09-05 18:15 <a href="http://www.blogjava.net/josson/archive/2009/09/05/294003.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>不同浏览器中网页内容高度取值</title><link>http://www.blogjava.net/josson/archive/2009/06/14/281014.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Sun, 14 Jun 2009 08:48:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2009/06/14/281014.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/281014.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2009/06/14/281014.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/281014.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/281014.html</trackback:ping><description><![CDATA[<strong>关于浏览器的clientHeight、offsetHeight和scrollHeight</strong><br />
<br />
在IE、FireFox、Netscape等不同的浏览器里，对于document.body 的 clientHeight、offsetHeight 和 scrollHeight 有着不同的含义，比较容易搞混，现整理一下相关的内容：<br />
<br />
clientHeight：在上述浏览器中, clientHeight 的含义是一致的，定义为网页内容可视区域的高度，即在浏览器中可以看到网页内容的高度，通常是工具条以下到状态栏以上的整个区域高度，与具体的网页页面内容无关。可以理解为，<strong>在屏幕上通过浏览器窗口所能看到网页内容的高度。</strong><br />
<br />
offsetHeight：关于offsetHeight，ie和firefox等不同浏览中意义有所不同，需要加以区别。在ie中，offsetHeight 的取值为 clientHeight加上滚动条及边框的高度；而firefox、netscape中，其取值为是实际网页内容的高度，可能会小于clientHeight。<br />
<br />
scrollHeight：scrollHeight都表示浏览器中网页内容的高度，但稍有区别。在ie里为实际网页内容的高度，可以小于 clientHeight；在firefox 中为网页内容高度，最小值等于 clientHeight，即网页实际内容比clientHeight时，取clientHeight。<br />
<br />
clientWidth、offsetWidth 和 scrollWidth 的含义与上述内容雷同，不过是高度变成宽度而已。<br />
<br />
若希望clientHeight、offsetHeight和scrollHeight三个属性能取值一致的话，可以通过设置DOCTYPE，启用不同的解析器，如：&lt;!DOCTYPE HTML PUBLIC "DTD XHTML 1.0 Transitional"&gt;，设置DOCTYPE后，这三个属性都表示实际网页内容的高度。<br />
<br />
通过以下HTML代码，可以了解一下这三个属性的含义：<br />
<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 />
--><u><span style="color: #0000ff;">&lt;!</span><span style="color: #ff00ff;">DOCTYPE&nbsp;HTML&nbsp;PUBLIC&nbsp;"DTD&nbsp;XHTML&nbsp;1.0&nbsp;Transitional"</span><span style="color: #0000ff;">&gt;</span></u><span style="color: #000000;"> //设置DOCTYPE<br />
</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;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">HEAD</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">TITLE</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"> 测试。&nbsp;</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;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">HEAD</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">script&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">='text/javascript'</span><span style="color: #0000ff;">&gt;</span><span style="background-color: #f5f5f5; color: #000000;"><br />
&nbsp;&nbsp;window.onload&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;ch&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;document.body.clientHeight;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;sh&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;document.body.offsetHeight;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;ssh&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;document.body.scrollHeight;<br />
&nbsp;&nbsp;&nbsp;&nbsp;alert('clientHeight:'</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">ch</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">';&nbsp;offsetHeight:'</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">sh</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;&nbsp;scrollHeight:</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">ssh);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">script</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">BODY&nbsp;</span><span style="color: #ff0000;">style</span><span style="color: #0000ff;">='margin:0px'</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">div&nbsp;</span><span style="color: #ff0000;">style</span><span style="color: #0000ff;">='background-color:#ccc;&nbsp;</span><span style="color: #ff0000;">height:400px;&nbsp;padding:0px'</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">div</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&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 />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">HTML</span><span style="color: #0000ff;">&gt;</span></div>
<br />
根据页面内容调整窗口高度的方法:<br />
<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;">Ext.util.ResizeWin&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">()&nbsp;{<br />
&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;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;sh&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;document.documentElement.scrollHeight<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;document.body.scrollHeight;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;ch&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;document.documentElement.clientHeight<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;document.body.clientHeight;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.resizeBy(</span><span style="color: #000000;">0</span><span style="color: #000000;">,(sh</span><span style="color: #000000;">-</span><span style="color: #000000;">ch));<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(e){}<br />
};</span></div>
<br />
<img src ="http://www.blogjava.net/josson/aggbug/281014.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2009-06-14 16:48 <a href="http://www.blogjava.net/josson/archive/2009/06/14/281014.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实现Javascript文件压缩的批处理</title><link>http://www.blogjava.net/josson/archive/2009/03/19/259635.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Thu, 19 Mar 2009 14:22:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2009/03/19/259635.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/259635.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2009/03/19/259635.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/259635.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/259635.html</trackback:ping><description><![CDATA[实现javascript文件压缩的批处理脚本，脚本完成的内容：<br />
1、利用一个windows script 删除js文件中的空白字符及注释;<br />
2、通过gzip.exe 将js文件压缩打包成gzjs文件。gzip.exe 下载地址：<a href="http://www.gzip.org " target="_blank">http://www.gzip.org </a><br />
相关文件请下载附件：<a title="js 压缩批处理" href="http://www.blogjava.net/Files/josson/xgzjs.rar">js 压缩批处理</a>&nbsp;。<br />
<br />
使用方法：<br />
a. 双击运行 gzjs.bat ，提示输入javascript文件名(带路径).<br />
b. 输入待压缩的js文件，或者拖动js文件到command窗口(可直接在eclipse视图中拖动js文件到cmd窗口)。<br />
c. 回车后，在js文件所在目录会生成一个相同文件名的gzjs文件。<br />
<br />
批处理文件内容如下：<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">@echo&nbsp;off</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">not</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;(<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;JSFILE</span><span style="color: #000000">=</span><span style="color: #000000">%</span><span style="color: #000000">1</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">goto</span><span style="color: #000000">&nbsp;ZIPING<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />:INPUT_FILENAME<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">P&nbsp;JSFILE</span><span style="color: #000000">=</span><span style="color: #000000">请输入待压缩的JS文件名:&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">%JSFILE%</span><span style="color: #000000">"</span><span style="color: #000000">==</span><span style="color: #000000">""</span><span style="color: #000000">&nbsp;(<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000ff">ERROR</span><span style="color: #000000">:&nbsp;JS文件名称必须指定!<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">goto</span><span style="color: #000000">&nbsp;INPUT_FILENAME<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />:ZIPING<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;MINJS_FILENAME</span><span style="color: #000000">=</span><span style="color: #000000">c</span><span style="color: #000000">-</span><span style="color: #000000">ziped.js<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">not</span><span style="color: #000000">&nbsp;exist&nbsp;%JSFILE%&nbsp;(<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000ff">ERROR</span><span style="color: #000000">:&nbsp;文件:%JSFILE%不存在!<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">goto</span><span style="color: #000000">&nbsp;INPUT_FILENAME<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">rem</span><span style="color: #008000">&nbsp;压缩Javascript文件.</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;exist&nbsp;%MINJS_FILENAME%&nbsp;del&nbsp;%MINJS_FILENAME%<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />CScript&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">nologo&nbsp;pack.wsf&nbsp;%JSFILE%&nbsp;</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">&nbsp;%MINJS_FILENAME%<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">not</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">%ERRORLEVEL%</span><span style="color: #000000">"</span><span style="color: #000000">==</span><span style="color: #000000">"</span><span style="color: #000000">0</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;(<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000ff">ERROR</span><span style="color: #000000">:&nbsp;JS文件压缩失败：%JSFILE%<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">goto</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">END</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">rem</span><span style="color: #008000">&nbsp;打包js文件为.gzjs</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">gzip&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">9</span><span style="color: #000000">&nbsp;%MINJS_FILENAME%<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;%%i&nbsp;in&nbsp;(</span><span style="color: #000000">"</span><span style="color: #000000">%JSFILE%</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">do</span><span style="color: #000000">&nbsp;(<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;FILENAME</span><span style="color: #000000">=</span><span style="color: #000000">%%~ni<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;JS_FILEPATH</span><span style="color: #000000">=</span><span style="color: #000000">%%~di%%~pi<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">rem</span><span style="color: #008000">&nbsp;echo&nbsp;%JS_FILEPATH%</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">rem</span><span style="color: #008000">&nbsp;压缩文件名及重命名的文件名.</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;GZIPED_FILE</span><span style="color: #000000">=</span><span style="color: #000000">%FILENAME%.gzjs<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;TMP_GZIPED_FILE</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">%MINJS_FILENAME%.gz</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">rem</span><span style="color: #008000">&nbsp;重命名.</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;exist&nbsp;%GZIPED_FILE%&nbsp;del&nbsp;%GZIPED_FILE%<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">call</span><span style="color: #000000">&nbsp;ren&nbsp;%TMP_GZIPED_FILE%&nbsp;%GZIPED_FILE%<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">not</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">%ERRORLEVEL%</span><span style="color: #000000">"</span><span style="color: #000000">==</span><span style="color: #000000">"</span><span style="color: #000000">0</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;(<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000ff">ERROR</span><span style="color: #000000">:&nbsp;JS压缩文件打包失败：%TMP_GZIPED_FILE%<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">goto</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">END</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">rem</span><span style="color: #008000">&nbsp;移动压缩文件到源目录.</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;TARGET_GZJS</span><span style="color: #000000">=</span><span style="color: #000000">%JS_FILEPATH%%GZIPED_FILE%<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">call</span><span style="color: #000000">&nbsp;move&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">Y&nbsp;%GZIPED_FILE%&nbsp;&nbsp;%TARGET_GZJS%<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />echo&nbsp;done.&nbsp;%TARGET_GZJS%<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />:</span><span style="color: #0000ff">END</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />pause</span></div>
<br />
Apache配置，以支持gzjs文件格式(http header的Content-Encoding=gzip):
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&lt;</span><span style="color: #000000">FilesMatch&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">\.gzjs$</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;Header&nbsp;add&nbsp;Content</span><span style="color: #000000">-</span><span style="color: #000000">Encoding&nbsp;gzip<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">FilesMatch</span><span style="color: #000000">&gt;</span></div>
 <img src ="http://www.blogjava.net/josson/aggbug/259635.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2009-03-19 22:22 <a href="http://www.blogjava.net/josson/archive/2009/03/19/259635.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DWR 长连接方式的若干问题</title><link>http://www.blogjava.net/josson/archive/2008/03/31/189810.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Mon, 31 Mar 2008 08:41:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2008/03/31/189810.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/189810.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2008/03/31/189810.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/189810.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/189810.html</trackback:ping><description><![CDATA[1、服务器向指定客户端推送数据<br />
<br />
完成聊天室之类的项目时，利用DWR推模式向所有客户端推送数据，的确是很方便，只要客户端的访问页面确定就可以了。但是，若需要对访问同一页面的两个客户端（特别是根据用户身份作不同处理），加以区分，推送不同数据时，就没这么简单了。<br />
<br />
有两种方式可以解决这个问题：<br />
&nbsp;&nbsp;&nbsp; a)、服务端不处理，只管往客户端推送数据，由客户端对收到的数据进行过滤，然后再显示出来。但这种方式的缺点很明显，数据包多且不安全。<br />
&nbsp;&nbsp;&nbsp; b)、对每个客户端进行单儿标识。DWR中以ScriptSession来代表一个客户端连接，我们可以通过设置ScriptSession的属性，来达到标识客户端的作用。如将sessionid或用户登录名保存在相应的ScriptSession属性中，向客户端推送数据时，根据这个属性加以过滤。相应的代码片段如下：<br />
<br />
<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;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;返回有效的ScriptSession.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;"> user<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@return</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;@SuppressWarnings(</span><span style="color: #000000;">"</span><span style="color: #000000;">unchecked</span><span style="color: #000000;">"</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;ScriptSession&nbsp;getCurrentSession(String user){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ScriptSession&nbsp;xSession&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;Collection</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">ScriptSession</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;sessions&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;HashSet</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">ScriptSession</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sessions.addAll(sctx.getScriptSessionsByPage(PAGE_MAIN));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(ScriptSession&nbsp;session&nbsp;:&nbsp;sessions)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">查询与消息接收者相符的客户端页面,并输出消息内容</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String xuser&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(String)session.getAttribute(SESSION_ATTRNAME_USER);<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;">xuser </span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;"> </span><span style="color: #000000;">xuser </span><span style="color: #000000;">.equals(</span><span style="color: #000000;">user</span><span style="color: #000000;">)){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xSession&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;session;<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;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;xSession;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;清除已有连接,&nbsp;标识当前连接用户(登录或刷新页面时，进行必要的清理).<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;"> user<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;session<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;cleanDwrConnection(user,ScriptSession&nbsp;session){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;jid&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;StringUtils.parseBareAddress(user);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ScriptSession&nbsp;oldSession&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;getCurrentSession(jid);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(oldSession&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;oldSession&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;session){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oldSession.invalidate();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oldSession&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;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;WebContextFactory.get().getScriptSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.setAttribute(SESSION_ATTRNAME_USER,&nbsp;jid);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br />
2、使用DWR推模式的实现中，刷新页面引起长连接丢失问题<br />
<br />
&nbsp;&nbsp;&nbsp; 最近在做web版即时消息客户端时，遇到这样一个问题：为了减少无用的服务连接，只在登录后才激活长连接（dwr.engine.setActiveReverseAjax(true)，注销后取消长连接）。登录客户端后，用了一段时间后，无法收消息了（消息无法推送到客户端）。后来调试后，发现ScriptSession实例没有绑定物理连接信息(conduits:m:root为空)。测试后发现，当刷新页面后，会产生一个新的ScriptSession实例，而这个ScriptSession的conduits:m:root为空，所以怎么都无法将数据推送到客户端去了。<br />
<br />
&nbsp;&nbsp;&nbsp; 客户端激活长连接后(dwr.engine.setActiveReverseAjax(true);)，对应的ScriptSession实例会绑定物理连接信息，而刷新页面刷新而不重新激活长连接，新产生的ScriptSession是没有绑定物理连接信息的，一旦绑定物理连接信息的ScriptSession被销毁后，就产生了这个问题。<br />
<br />
&nbsp;&nbsp;&nbsp; <br />
<br />
<img src ="http://www.blogjava.net/josson/aggbug/189810.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2008-03-31 16:41 <a href="http://www.blogjava.net/josson/archive/2008/03/31/189810.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IE与FireFox的兼容性问题</title><link>http://www.blogjava.net/josson/archive/2008/01/31/178654.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Thu, 31 Jan 2008 04:52:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2008/01/31/178654.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/178654.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2008/01/31/178654.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/178654.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/178654.html</trackback:ping><description><![CDATA[<div class="post-body">
<li><strong>window.event</strong><br />
IE：有window.event对象
<br />
FF：没有window.event对象。可以通过给函数的参数传递event对象。如onmousemove=doMouseMove(event)<br />
<br />
</li>
<li><strong>鼠标当前坐标</strong><br />
IE：event.x和event.y。
<br />
FF：event.pageX和event.pageY。
<br />
通用：两者都有event.clientX和event.clientY属性。<br />
<br />
</li>
<li>
<strong>鼠标当前坐标(加上滚动条滚过的距离)</strong><br />
IE：event.offsetX和event.offsetY。
<br />
FF：event.layerX和event.layerY。
<br />
通用：event.clientY+document.documentElement.scrollTop（加垂直滚动条）。
<br />
通用：event.clientX+document.documentElement.scrollLeft（加水平滚动条）。<br />
<br />
<p>示例：</p>
</li>
<div class="Code">&lt;script&gt; <br />
function&nbsp;xyzb(xy){
<br />
&nbsp; xl = xy.clientX+document.documentElement.scrollLeft;
<br />
&nbsp; yr = xy.clientY+document.documentElement.scrollTop;
<br />
&nbsp; document.getElementById("xys").innerHTML=xl+","+yr; <br />
}
<br />
&lt;/script&gt;
<br />
&lt;div&nbsp;id="xys"&nbsp;style="width:500px;height:500px;border:1px&nbsp;solid;"&nbsp;onmousemove="xyzb(event);"&gt;&lt;/div&gt;</div>
<br />
<br />
<li>
<strong>标签的x和y的坐标位置：style.posLeft 和 style.posTop</strong><br />
IE：有。
<br />
FF：没有。
<br />
通用：object.offsetLeft 和 object.offsetTop。<br />
<br />
</li>
<li>
<strong>窗体的高度和宽度</strong><br />
IE：document.body.offsetWidth和document.body.offsetHeight。注意：此时页面一定要有body标签。
<br />
FF：window.innerWidth和window.innerHegiht，以及document.documentElement.clientWidth和document.documentElement.clientHeight。
<br />
通用：document.body.clientWidth和document.body.clientHeight。<br />
<br />
</li>
<li>
<strong>添加事件</strong><br />
IE：element.attachEvent("onclick", func);。
<br />
FF：element.addEventListener("click", func, true)。
<br />
通用：element.onclick=func。虽然都可以使用onclick事件，但是onclick和上面两种方法的效果是不一样的，onclick只有执行一个过程，而attachEvent和addEventListener执行的是一个过程列表，也就是多个过程。例如：element.attachEvent("onclick",
func1);element.attachEvent("onclick", func2)这样func1和func2都会被执行。<br />
<br />
</li>
<li>
<strong>标签的自定义属性</strong><br />
IE：如果给标签div1定义了一个属性value，可以div1.value和div1["value"]取得该值。
<br />
FF：不能用div1.value和div1["value"]取。
<br />
通用：div1.getAttribute("value")。<br />
<br />
</li>
<li>
<strong>父节点、子节点和删除节点</strong><br />
IE：parentElement、parement.children，element.romoveNode(true)。
<br />
FF：parentNode、parentNode.childNodes，node.parentNode.removeChild(node)。<br />
<br />
</li>
<li>
<strong>画图</strong><br />
IE：VML。
<br />
FF：SVG。<br />
<br />
</li>
<li>
<strong>CSS：透明</strong><br />
IE：filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60)。
<br />
FF：opacity:0.6。<br />
<br />
</li>
<li>
<strong>CSS：圆角</strong><br />
IE：不支持圆角。
<br />
FF：-moz-border-radius:4px，或者-moz-border-radius-topleft:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-bottomright:4px;。<br />
<br />
</li>
<li>
<strong>CSS：双线凹凸边框</strong><br />
IE：border:2px outset;。
<br />
FF：-moz-border-top-colors: #d4d0c8 white;-moz-border-left-colors: #d4d0c8
white;-moz-border-right-colors:#404040 #808080;-moz-border-bottom-colors:#404040
#808080;。 </li>
</div>
<br />
<br />
<img src ="http://www.blogjava.net/josson/aggbug/178654.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2008-01-31 12:52 <a href="http://www.blogjava.net/josson/archive/2008/01/31/178654.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dhtmlxTree 使用示例</title><link>http://www.blogjava.net/josson/archive/2008/01/30/178548.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Wed, 30 Jan 2008 07:53:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2008/01/30/178548.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/178548.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2008/01/30/178548.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/178548.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/178548.html</trackback:ping><description><![CDATA[http://dhtmlx.com 包含目录树、菜单、工具条等很多js控件，功能十分强大。<br />
<br />
现将dhtmlxTree 使用样例记录如下(包括目录树、上下文菜单)：<br />
1、所需js文件<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">dhtmlxcommon.js<br />
dhtmlxtree.js<br />
dhtmlxtree_json.js<br />
<br />
//菜单控件所需的js<br />
dhtmlxprotobar.js<br />
dhtmlxmenubar.js<br />
dhtmlxmenubar.js</span></div>
<span style="color: rgb(0, 0, 0);"><br />
</span>2、sample.html代码：<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">html</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">head</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">meta&nbsp;http</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">equiv</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Content-Type</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;content</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">text/html;&nbsp;charset=utf-8</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">title</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">无标题文档</span><span style="color: rgb(0, 0, 0);">&lt;/</span><span style="color: rgb(0, 0, 0);">title</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">script&nbsp;src</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">./dhtmlxcommon.js</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;&lt;/</span><span style="color: rgb(0, 0, 0);">script</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">script&nbsp;src</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">./dhtmlxtree.js</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;&lt;/</span><span style="color: rgb(0, 0, 0);">script</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">script&nbsp;language</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">JavaScript</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;src</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">./extend/dhtmlxtree_json.js</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;&lt;/</span><span style="color: rgb(0, 0, 0);">script</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">script&nbsp;language</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">JavaScript</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;src</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">./dhtmlxprotobar.js</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;&lt;/</span><span style="color: rgb(0, 0, 0);">script</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">script&nbsp;language</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">JavaScript</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;src</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">./dhtmlxmenubar.js</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;&lt;/</span><span style="color: rgb(0, 0, 0);">script</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">script&nbsp;language</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">JavaScript</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;src</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">./dhtmlxmenubar_cp.js</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;&lt;/</span><span style="color: rgb(0, 0, 0);">script</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">link&nbsp;rel</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">STYLESHEET</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;type</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">text/css</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;href</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">./dhtmlxtree.css</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">link&nbsp;rel</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">STYLESHEET</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;type</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">text/css</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;href</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">./context.css</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">link&nbsp;rel</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">STYLESHEET</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;type</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">text/css</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;href</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">./dhtmlxmenu.css</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;/</span><span style="color: rgb(0, 0, 0);">head</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">body</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">div&nbsp;id</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">treeBox</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;style</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">width:200;height:200</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;&lt;/</span><span style="color: rgb(0, 0, 0);">div</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">script</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">init&nbsp;menu&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;aMenu</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;dhtmlXContextMenuObject('</span><span style="color: rgb(0, 0, 0);">120</span><span style="color: rgb(0, 0, 0);">',</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">images/</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />
&nbsp;&nbsp;aMenu.menu.loadXML(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">./_context.xml</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />
&nbsp;&nbsp;aMenu.setContextMenuHandler(onMenuClick);<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;tree</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;dhtmlXTreeObject('treeBox',</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">100%</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">100%</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">);<br />
&nbsp;&nbsp;tree.setImagePath(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">images/</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />
&nbsp;&nbsp;tree.enableCheckBoxes(</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">);<br />
&nbsp;&nbsp;tree.enableDragAndDrop(</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">);<br />
&nbsp;&nbsp;tree.enableContextMenu(aMenu);&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">link&nbsp;context&nbsp;menu&nbsp;to&nbsp;tree</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;tree.loadCSV(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">./data.txt</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">for&nbsp;loading&nbsp;from&nbsp;file</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">&nbsp;onMenuClick(id,s){&nbsp;alert(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Menu&nbsp;item&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">id</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;was&nbsp;clicked</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">s);&nbsp;}<br />
</span><span style="color: rgb(0, 0, 0);">&lt;/</span><span style="color: rgb(0, 0, 0);">script</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;/</span><span style="color: rgb(0, 0, 0);">body</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;/</span><span style="color: rgb(0, 0, 0);">html</span><span style="color: rgb(0, 0, 0);">&gt;</span></div>
<br />
3、数据文件data.txt<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(128, 0, 0);">1,0,node&nbsp;1&nbsp;<br />
2,1,node&nbsp;1.1&nbsp;<br />
3,2,node&nbsp;1.1.1&nbsp;<br />
4,0,node&nbsp;2<br />
bd2f46a212ffae3b011305afd5eb0108,4,node&nbsp;2.1<br />
6,1,node&nbsp;1.2</span></div>
<br />
4、菜单文件_context.xml<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;?</span><span style="color: rgb(255, 0, 255);">xml&nbsp;version='1.0'&nbsp;</span><span style="color: rgb(0, 0, 255);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">menu&nbsp;</span><span style="color: rgb(255, 0, 0);">absolutePosition</span><span style="color: rgb(0, 0, 255);">="auto"</span><span style="color: rgb(255, 0, 0);">&nbsp;mode</span><span style="color: rgb(0, 0, 255);">="popup"</span><span style="color: rgb(255, 0, 0);">&nbsp;maxItems</span><span style="color: rgb(0, 0, 255);">="8"</span><span style="color: rgb(255, 0, 0);">&nbsp;&nbsp;globalCss</span><span style="color: rgb(0, 0, 255);">="contextMenu"</span><span style="color: rgb(255, 0, 0);">&nbsp;globalSecondCss</span><span style="color: rgb(0, 0, 255);">="contextMenu"</span><span style="color: rgb(255, 0, 0);">&nbsp;globalTextCss</span><span style="color: rgb(0, 0, 255);">="contextMenuItem"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">MenuItem&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="Red"</span><span style="color: rgb(255, 0, 0);">&nbsp;src</span><span style="color: rgb(0, 0, 255);">="./images/red.gif"</span><span style="color: rgb(255, 0, 0);">&nbsp;&nbsp;id</span><span style="color: rgb(0, 0, 255);">="edit_Red"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">MenuItem&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="Green"</span><span style="color: rgb(255, 0, 0);">&nbsp;src</span><span style="color: rgb(0, 0, 255);">="./images/green.gif"</span><span style="color: rgb(255, 0, 0);">&nbsp;&nbsp;id</span><span style="color: rgb(0, 0, 255);">="edit_Green"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">MenuItem&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="Blue"</span><span style="color: rgb(255, 0, 0);">&nbsp;src</span><span style="color: rgb(0, 0, 255);">="./images/blue.gif"</span><span style="color: rgb(255, 0, 0);">&nbsp;&nbsp;id</span><span style="color: rgb(0, 0, 255);">="edit_Blue"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">MenuItem&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="Other<img src="http://www.blogjava.net/Images/dot.gif" alt="" />"</span><span style="color: rgb(255, 0, 0);">&nbsp;src</span><span style="color: rgb(0, 0, 255);">=""</span><span style="color: rgb(255, 0, 0);">&nbsp;id</span><span style="color: rgb(0, 0, 255);">="outher"</span><span style="color: rgb(255, 0, 0);">&nbsp;width</span><span style="color: rgb(0, 0, 255);">="120px"</span><span style="color: rgb(255, 0, 0);">&nbsp;panelWidth</span><span style="color: rgb(0, 0, 255);">="120"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">MenuItem&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="Yellow"</span><span style="color: rgb(255, 0, 0);">&nbsp;src</span><span style="color: rgb(0, 0, 255);">="./images/yellow.gif"</span><span style="color: rgb(255, 0, 0);">&nbsp;&nbsp;id</span><span style="color: rgb(0, 0, 255);">="edit_Yellow"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">MenuItem&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="White"</span><span style="color: rgb(255, 0, 0);">&nbsp;src</span><span style="color: rgb(0, 0, 255);">="./images/white.gif"</span><span style="color: rgb(255, 0, 0);">&nbsp;&nbsp;id</span><span style="color: rgb(0, 0, 255);">="edit_White"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">MenuItem</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">menu</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span></div>
<br />
注：dhtmlxTree 标准版不支持菜单功能，所以需要对<span style="color: rgb(0, 0, 0);">dhtmlxtree.js做些修改，在脚本的最后面加上如下方法：<br />
</span>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">dhtmlXTreeObject.prototype.enableContextMenu</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(menu)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(menu)&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.cMenu</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">menu<br />
};</span></div>
<span style="color: rgb(0, 0, 0);"><br />
</span>
<img src ="http://www.blogjava.net/josson/aggbug/178548.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2008-01-30 15:53 <a href="http://www.blogjava.net/josson/archive/2008/01/30/178548.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IE7 对话框样式</title><link>http://www.blogjava.net/josson/archive/2008/01/21/176669.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Mon, 21 Jan 2008 01:46:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2008/01/21/176669.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/176669.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2008/01/21/176669.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/176669.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/176669.html</trackback:ping><description><![CDATA[<br />
<strong>1、模态窗口自适应:<br />
在Internet Explorer中定义window.open 和 window.showModalDialog以打开一个网页对话框的时候,在不同版本的Windows和不同版本的IE中,窗口的大小和样式都是不同的。</strong>
在IE7中更是有了很大的不同,状态栏,主要内容被默认保留(下详),还加了一个只读状态的地址栏.窗口的最小尺寸被限定在了250*150：<br />
<img src="http://www.blogjava.net/images/blogjava_net/josson/comparing_ie6_to_ie7.png" alt="" border="0" /><br />
<br />
如上图所示：在ie7中，定义的高度仅仅是窗体内容高度，状态栏及地址栏的高度都不算在内的；而ie6则包含了状态栏及地址栏的高度。所以，我们需要依据不同的操作系统及ie版本，高度自适应的js代码如下：<br />
<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 128, 0);">/*</span><span style="color: rgb(0, 128, 0);">*<br />
&nbsp;*&nbsp;模态窗口高度调整.<br />
&nbsp;*&nbsp;根据操作系统及ie不同版本,重新设置窗口高度,避免滚动条出现.<br />
&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">&nbsp;resetDialogHeight(){<br />
&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(window.dialogArguments&nbsp;</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">忽略非模态窗口</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;ua&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;navigator.userAgent;<br />
&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;height&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;document.body.offsetHeight;<br />
&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(ua.lastIndexOf(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">MSIE&nbsp;6.0</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">)&nbsp;</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">){<br />
&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(ua.lastIndexOf(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Windows&nbsp;NT&nbsp;5.1</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">)&nbsp;</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">alert("xp.ie6.0");</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;height&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;document.body.offsetHeight;<br />
&nbsp;&nbsp;&nbsp;&nbsp;window.dialogHeight</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">(height</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">102</span><span style="color: rgb(0, 0, 0);">)</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">px</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(ua.lastIndexOf(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Windows&nbsp;NT&nbsp;5.0</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">)&nbsp;</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">alert("w2k.ie6.0");</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;height&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;document.body.offsetHeight;<br />
&nbsp;&nbsp;&nbsp;&nbsp;window.dialogHeight</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">(height</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">49</span><span style="color: rgb(0, 0, 0);">)</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">px</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br />
&nbsp;&nbsp;}<br />
}<br />
}</span></div>
<br />
模态窗口页面加上如下代码：<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">窗口加载后，判断系统及其ie版本调整高度</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">window.onload&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;resetDialogHeight;</span></div>
<br />
<br />
<strong>2、ie7中模态窗口提交时新开窗口问题:</strong><br />
<span style="font-size: 12pt;"><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"> </span></span><span style="font-size: 12pt;">IE 7.0</span><span style="font-size: 12pt;">对模态窗口</span><span style="font-size: 12pt;">&lt;base target='_self'&gt;</span><span style="font-size: 12pt;">属性的放置位置更加严格。&lt;base&gt;标签必须放置在&lt;head&gt;标签对中，否则提交表单时总是会新开窗口</span><span style="font-size: 12pt;">。示例如下 ：<br />
</span>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">html</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">head</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">title</span><span style="color: rgb(0, 0, 255);">&gt;标题</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">title</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">base&nbsp;</span><span style="color: rgb(255, 0, 0);">target</span><span style="color: rgb(0, 0, 255);">="_self"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
..&nbsp;..&nbsp;..<br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">head</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">body&nbsp;</span><span style="color: rgb(255, 0, 0);">onload</span><span style="color: rgb(0, 0, 255);">="pageClose();"</span><span style="color: rgb(255, 0, 0);">&nbsp;scroll</span><span style="color: rgb(0, 0, 255);">="no"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
..&nbsp;..&nbsp;..<br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">body</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">html</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
<br />
<img src ="http://www.blogjava.net/josson/aggbug/176669.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2008-01-21 09:46 <a href="http://www.blogjava.net/josson/archive/2008/01/21/176669.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>iframe 高度自适应</title><link>http://www.blogjava.net/josson/archive/2008/01/17/175914.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Thu, 17 Jan 2008 05:56:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2008/01/17/175914.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/175914.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2008/01/17/175914.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/175914.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/175914.html</trackback:ping><description><![CDATA[1、目的<br />
系统通过一内嵌页面(iframe)
来展现网页内容（也包括内嵌页中再嵌一个网页），这将会引起如下几个问题：<br />
a.不同的网页内容多少不一致，导致iframe的高度无法与实现内容或浏览器高度相匹配。<br />
b.窗口缩放时，不能iframe不能进行自动调整。<br />
<br />
针对这两个问题，写了一些js方法，使iframe自动适应内容或浏览器高度。<br />
<br />
2、js代码<br />
在主框回页面中包括如下js方法:<br />
<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: #008000;">/*</span><span style="color: #008000;">*<br />
&nbsp;*&nbsp;内嵌页面的高度设置<br />
&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;handleFrameLoad()&nbsp;{<br />
&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;hDoc&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;getBodyHeight(document);<br />
&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;tblmain&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;&nbsp;document.getElementById('tblMain');<br />
&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;mFrame&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;window.mainFrame;<br />
&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;hFrameDoc&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;getFrameHeight(mFrame);<br />
&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;hTable&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;hDoc</span><span style="color: #000000;">-</span><span style="color: #000000;">80</span><span style="color: #000000;">; </span><span style="color: #008000;">//减去该页面除iframe外其他控件所占的高度.</span><span style="color: #000000;"><br />
&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(hFrameDoc&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;hTable)&nbsp;hTable&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;hFrameDoc;<br />
&nbsp;tblmain.style.height&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;hTable;<br />
&nbsp;mFrame.height&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;hTable;<br />
&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(window.mainFrame.moduleRight&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; </span><span style="color: #008000;">//表示该内嵌页，包含</span><span style="color: #008000;">内嵌</span><span style="color: #008000;">的页面，页iframe的id固定为moduleRight。</span><br />
<span style="color: #000000;">&nbsp;&nbsp;&nbsp; initFrameHeight(mFrame,hTable);<br />
&nbsp;}<br />
}<br />
<br />
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br />
&nbsp;*&nbsp;获取当前页面的高度<br />
&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;getBodyHeight(doc){<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(doc.all)&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;doc.body.offsetHeight;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;doc.body.scrollHeight;<br />
}<br />
<br />
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br />
&nbsp;*&nbsp;获取内嵌页中的高度.<br />
&nbsp;*&nbsp;若另含子内嵌(</span><span style="color: #000000;">moduleRight</span><span style="color: #008000;">)页时,应考虑该页面的高度.<br />
&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;getFrameHeight(mFrame){<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;h1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;mFrame.document.body.offsetHeight;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;h2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;mFrame.document.body.scrollHeight;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(mFrame.moduleRight&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;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;h3&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;mFrame.moduleRight.document.body.scrollHeight;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(h3&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;h2)&nbsp;h2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;h3;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;h2;<br />
}<br />
<br />
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br />
&nbsp;*&nbsp;设置子内嵌页面的高度.<br />
&nbsp;* 通过设置iframe所在table的高度来调整。<br />
&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;initFrameHeight(frame,hFrame){<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;tbl </span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;frame.document.getElementById('tblMainFrame');<br />
&nbsp;&nbsp;tbl.style.height&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;hFrame;<br />
}</span></div>
<br />
3、其他设置<br />
主页面(main.jsp)，在加载完毕（onload）、窗口大小调整(onresize)，以及iframe的加载完毕时，需调用:handleFrameLoad，代码如下:<br />
<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: #0000ff;">&lt;</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" />&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">body&nbsp;</span><span style="color: #ff0000;">onload</span><span style="color: #0000ff;">="handleFrameLoad();"</span><span style="color: #ff0000;">&nbsp;onResize</span><span style="color: #0000ff;">="handleFrameLoad();"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" />&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">iframe&nbsp;</span><span style="color: #ff0000;">src</span><span style="color: #0000ff;">=""</span><span style="color: #ff0000;">&nbsp;id</span><span style="color: #0000ff;">="mainFrame"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="mainFrame"</span><span style="color: #ff0000;">&nbsp;border</span><span style="color: #0000ff;">=0&nbsp;</span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">=100%&nbsp;</span><span style="color: #ff0000;">height</span><span style="color: #0000ff;">=100%&nbsp;</span><span style="color: #ff0000;">frameborder</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;">&nbsp;marginwidth</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;">&nbsp;hspace</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;">&nbsp;scrolling</span><span style="color: #0000ff;">="no"</span><span style="color: #ff0000;">&nbsp;onload</span><span style="color: #0000ff;">="handleFrameLoad();"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" />&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
&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 />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">html</span></div>
<br />
其他内嵌页如下(注：此处的iframe高度设为100%，其高度由父页面通过设置table&lt;<span style="color: #0000ff;">tblMainFrame</span>&gt;的高度来进行调整)：<br />
<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: #0000ff;">&lt;</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" />&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">body&nbsp;</span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="body"</span><span style="color: #ff0000;">&nbsp;style</span><span style="color: #0000ff;">="overflow:hidden;margin:0px;padding:0px"</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;">table&nbsp;</span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">="100%"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="100%"</span><span style="color: #ff0000;">&nbsp;id</span><span style="color: #0000ff;">="tblMainFrame"</span><span style="color: #ff0000;">&nbsp;border</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> align</span><span style="color: #0000ff;">="center"</span><span style="color: #ff0000;">&nbsp;cellpadding</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;">&nbsp;cellspacing</span><span style="color: #0000ff;">="0"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">='content'&nbsp;</span><span style="color: #ff0000;">height</span><span style="color: #0000ff;">=100%</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;">iframe&nbsp;</span><span style="color: #ff0000;">src</span><span style="color: #0000ff;">="about:blank"</span><span style="color: #ff0000;">&nbsp;width</span><span style="color: #0000ff;">="100%"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="100%"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="moduleRight"</span><span style="color: #ff0000;">&nbsp;id</span><span style="color: #0000ff;">="moduleRight"</span><span style="color: #ff0000;">&nbsp;frameborder</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;">&nbsp;hspace</span><span style="color: #0000ff;">="0"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tr</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;">table</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&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 />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">html</span></div>
<br />
4、样例下载: <a title="iframe auto adjust sample" href="http://www.blogjava.net/Files/josson/iframe_autoadjust_sample.rar">sample</a><br />
<img src ="http://www.blogjava.net/josson/aggbug/175914.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2008-01-17 13:56 <a href="http://www.blogjava.net/josson/archive/2008/01/17/175914.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DWR Reverse 一些细节</title><link>http://www.blogjava.net/josson/archive/2008/01/04/172705.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Fri, 04 Jan 2008 04:37:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2008/01/04/172705.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/172705.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2008/01/04/172705.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/172705.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/172705.html</trackback:ping><description><![CDATA[1、web.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%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet</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">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">dwr-invoker</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-name</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">servlet-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">org.directwebremoting.servlet.DwrServlet</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-class</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">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&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">activeReverseAjaxEnabled</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 />
&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">true</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 />
&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 />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-mapping</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">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">dwr-invoker</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-name</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">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/dwr/*</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 />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-mapping</span><span style="color: #0000ff">&gt;</span></div>
<br />
2、client端将 setActiveReverseAjax设为true<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%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000">dwr.engine.setActiveReverseAjax(</span><span style="color: #0000ff">true</span><span style="color: #000000">);</span></div>
<br />
使用Reverse AJAX，client端就不用指定call back function，当执行server端的method时，会自动调用client端javascript来执行。<br />
<br />
3、Server端通过ScriptSession，找到对到的client端JS方法<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%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000">//</span><span style="color: #008000">取得当前执行页面</span><span style="color: #008000"><br />
</span><span style="color: #000000">WebContext&nbsp;wctx&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;WebContextFactory.get();<br />
String&nbsp;currentPage&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;wctx.getCurrentPage();<br />
</span><span style="color: #008000">//</span><span style="color: #008000">取得目前执行中的ScriptSession</span><span style="color: #008000"><br />
</span><span style="color: #000000">ScriptSession&nbsp;scriptSession&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;wctx.getScriptSession();<br />
</span><span style="color: #008000">//</span><span style="color: #008000">或是取得某page开启中的client&nbsp;ScriptSession</span><span style="color: #008000"><br />
</span><span style="color: #000000">Collection&nbsp;sessions&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;wctx.getScriptSessionsByPage(</span><span style="color: #000000">"</span><span style="color: #000000">/ajax/client.jsp</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">根据ScriptSession来执行client端的&nbsp;DWRUtil</span><span style="color: #008000"><br />
</span><span style="color: #000000">Util&nbsp;utilThis&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000"> Util(wctx.getScriptSession());<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">调用WRUtil，在客户端生成相应的脚本，实现消息的输出</span><span style="color: #008000"><br />
</span><span style="color: #000000">utilAll.removeAllOptions(</span><span style="color: #000000">"</span><span style="color: #000000">chatlog</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
utilAll.addOptions(</span><span style="color: #000000">"</span><span style="color: #000000">chatlog</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;messages,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">text</span><span style="color: #000000">"</span><span style="color: #000000">);</span></div>
<br />
4、网上的范例<br />
chat.jsp页面，点击发送按钮，调用javascript的sendMessage()方法将消息发送出(注意这里没有指定call back function。)。<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%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000">function&nbsp;sendMessage()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;JavaChat.addMessage();<br />
}</span></div>
<br />
服务端JavaChat代码，调用DWRUtil，在客户端生成脚本，将消息输出到页面中。<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%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000">//</span><span style="color: #008000">JavaChat.java</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;addMessage(String&nbsp;messsage){<br />
&nbsp;&nbsp;&nbsp; Util&nbsp;utilAll&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000"> Util(sessions);<br />
&nbsp;&nbsp;&nbsp;&nbsp;utilAll.addScriptSessions(wctx.getScriptSessionsByPage(</span><span style="color: #000000">"</span><span style="color: #000000">/chat.jsp</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;utilAll.removeAllOptions(</span><span style="color: #000000">"</span><span style="color: #000000">chatlog</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;utilAll.addOptions(</span><span style="color: #000000">"</span><span style="color: #000000">chatlog</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;message,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">text</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
}</span></div>
<br />
<img src ="http://www.blogjava.net/josson/aggbug/172705.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2008-01-04 12:37 <a href="http://www.blogjava.net/josson/archive/2008/01/04/172705.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>不错的Javascript组件.</title><link>http://www.blogjava.net/josson/archive/2008/01/04/172697.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Fri, 04 Jan 2008 04:11:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2008/01/04/172697.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/172697.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2008/01/04/172697.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/172697.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/172697.html</trackback:ping><description><![CDATA[<a href="http://dhtmlx.com">http://dhtmlx.com/</a><br />
<br />
包括树、菜单、表格、工具条等。。。<br />
<img src ="http://www.blogjava.net/josson/aggbug/172697.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2008-01-04 12:11 <a href="http://www.blogjava.net/josson/archive/2008/01/04/172697.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用 Continuations 和 Reverse Ajax 创建事件驱动 Web 应用程序</title><link>http://www.blogjava.net/josson/archive/2007/12/24/169954.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Mon, 24 Dec 2007 02:19:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2007/12/24/169954.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/169954.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2007/12/24/169954.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/169954.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/169954.html</trackback:ping><description><![CDATA[该文展示如何结合使用 Jetty servlet 引擎和 DWR 简捷有效地实现一个 Comet Web 应用程序，以及其中的一些细节及原理。<br />
<br />
文章地址：<a href="http://www.ibm.com/developerworks/cn/java/j-jettydwr/">http://www.ibm.com/developerworks/cn/java/j-jettydwr/</a><br />
<br />
一些问题：<br />
１、web.xml配配置，DWR使用2.0RC3以下版本时须全用选项：pollAndCometEnabled代替<span style="color: #000000;">activeReverseAjaxEnabled</span>，如下：<br />
<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;">&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet</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;">servlet-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">dwr-invoker</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet-name</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;">servlet-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">org.directwebremoting.servlet.DwrServlet</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">&lt;!-- 2.0 RC3以上版本使用.</span><span style="color: #0000ff;"><br />
&nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #800000;">init-param</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&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;">activeReverseAjaxEnabled</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 />
&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;">true</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 />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">init-param</span><span style="color: #0000ff;">&gt;<br />
&nbsp;&nbsp;&nbsp; --&gt;</span><br />
<span style="color: #000000;">&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 />
&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;">pollAndCometEnabled</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 />
&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;">true</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 />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">init-param</span><span style="color: #0000ff;">&gt;<br />
</span><span style="color: #000000;">&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 />
&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;">initApplicationScopeCreatorsAtStartup</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 />
&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;">true</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 />
&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 />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet-mapping</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;">servlet-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">dwr-invoker</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet-name</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;">url-pattern</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">/dwr/*</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 />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet-mapping</span><span style="color: #0000ff;">&gt;</span></div>
<br />
选项说明（http://getahead.org/dwr/server/servlet 可查询更多参数的说明）：<br />
1)、<span style="color: #000000;">activeReverseAjaxEnabled </span><br />
true 表示激活轮询和 Comet 功能。2.0 RC3以前版本，参数名为：<span style="color: #000000;">pollAndCometEnabled。</span><span style="color: #000000;"><br />
<br />
2)、</span><span style="color: #000000;">initApplicationScopeCreatorsAtStartup　</span>通知 DWR 在应用程序启动时初始化 <code>ReverseAjaxTracker</code>。这将在对 bean 生成第一个请求时改写延迟初始化（lazy initialization）的常规行为 —— 在本例中这是必须的，因为客户机不会主动对 <code>ReverseAjaxTracker</code> 调用方法。<br />
<img src ="http://www.blogjava.net/josson/aggbug/169954.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2007-12-24 10:19 <a href="http://www.blogjava.net/josson/archive/2007/12/24/169954.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DWR 站点收藏</title><link>http://www.blogjava.net/josson/archive/2007/12/24/169945.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Mon, 24 Dec 2007 02:06:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2007/12/24/169945.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/169945.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2007/12/24/169945.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/169945.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/169945.html</trackback:ping><description><![CDATA[里面有很多DWR使用的经验技巧，有一定的参考价值：<br />
<br />
http://www.javatang.com/archives/tag/dwr<br />
<img src ="http://www.blogjava.net/josson/aggbug/169945.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2007-12-24 10:06 <a href="http://www.blogjava.net/josson/archive/2007/12/24/169945.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DWR 跨域请求</title><link>http://www.blogjava.net/josson/archive/2007/12/24/169941.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Mon, 24 Dec 2007 01:53:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2007/12/24/169941.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/169941.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2007/12/24/169941.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/169941.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/169941.html</trackback:ping><description><![CDATA[1、实现DWR跨域支持<br />
<br />
a.配置web.xml文件，dwr定义时加入以下参数设置：<br />
<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: #0000ff;">&lt;</span><span style="color: #800000;">init-param</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&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;">allowGetForSafariButMakeForgeryEasier</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 />
&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;">true</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: #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: #0000ff;">&lt;</span><span style="color: #800000;">init-param</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&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;">crossDomainSessionSecurity</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 />
&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;">false</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: #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: #0000ff;">&lt;</span><span style="color: #800000;">init-param</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&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;">allowScriptTagRemoting</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 />
&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;">true</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: #0000ff;">&lt;/</span><span style="color: #800000;">init-param</span><span style="color: #0000ff;">&gt;</span></div>
<br />
b.客户端调用：<br />
<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;">//客户端调用时，须指定调用路径，否则默认调用的是当前页面所在服务端的/dwr，而不是实际的/dwr服务。<br />
//故未设置Remote._path时，很可能提示你"</span>dwr/call/plaincall/XXX.ZZZ.dwr<span style="color: #000000;">"的信息。<br />
//Remote 为dwr.xml中定义的java类对应的jascript名称<br />
Remote._path&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;'http:</span><span style="color: #008000;">//</span><span style="color: #008000;">otherdomain.com/webapp/dwr';<br />
//或:dwr.engine._defaultPath = 'http://</span><span style="color: #008000;">otherdomain.com</span><span style="color: #008000;">/webapp/dwr';<br />
</span><span style="color: #008000;">
</span><span style="color: #000000;">Remote.someFunction();</span></div>
<br />
更详细的说明可参见官网 <strong>Remoting Options </strong>章节（http://getahead.org/dwr/browser/engine/options）。<br />
<br />
2、DWR的Session支持<br />
<br />
DWR通过 <strong>WebContext</strong> / <strong>WebContextFactory</strong> 来取得<strong>HttpServletRequest</strong>、<strong>HttpServletResponse、</strong><strong>HttpSession</strong>、<strong>ServletContext、</strong> <strong>ServletConfig</strong>等对象。（DWR2.0）实现可参见DWR内部脚本，engine.js文件"<strong>dwr.engine._getJSessionId</strong>"部份代码。<br />
<br />
更多详细信息见官网API：http://getahead.org/dwr/server/javaapi。<br />
<br />
所以SESSION根据jsessionid来确定的，jsessionid存放在cookie中，若客户端禁止cookie的话，jsessionid每次都新生成，所以无法确保在服务端的SESSION唯一。跨域调用DWR时，浏览器默认禁止第三方cookie，所以会有正常使用SESSION功能。设置Internet选项，"隐私"，"高级"，开始对第三方cookie的支持，即可解决这个问题。<br />
<br />
<img src ="http://www.blogjava.net/josson/aggbug/169941.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2007-12-24 09:53 <a href="http://www.blogjava.net/josson/archive/2007/12/24/169941.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一些正则表达式</title><link>http://www.blogjava.net/josson/archive/2007/11/21/162227.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Wed, 21 Nov 2007 14:38:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2007/11/21/162227.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/162227.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2007/11/21/162227.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/162227.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/162227.html</trackback:ping><description><![CDATA["^\\d+$"　　//非负整数（正整数 + 0） <br />
"^[0-9]*[1-9][0-9]*$"　　//正整数 <br />
"^((-\\d+)|(0+))$"　　//非正整数（负整数 + 0） <br />
"^-[0-9]*[1-9][0-9]*$"　　//负整数 <br />
"^-?\\d+$"　　　　//整数 <br />
"^\\d+(\\.\\d+)?$"　　//非负浮点数（正浮点数 + 0） <br />
"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"　 //正浮点数 <br />
"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"　　//非正浮点数（负浮点数 + 0） <br />
"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"　 //负浮点数 <br />
"^(-?\\d+)(\\.\\d+)?$"　　//浮点数 <br />
"^[A-Za-z]+$"　　//由26个英文字母组成的字符串 <br />
"^[A-Z]+$"　　//由26个英文字母的大写组成的字符串 <br />
"^[a-z]+$"　　//由26个英文字母的小写组成的字符串 <br />
"^[A-Za-z0-9]+$"　　//由数字和26个英文字母组成的字符串 <br />
"^\\w+$"　　//由数字、26个英文字母或者下划线组成的字符串 <br />
"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"　　　　//email地址 <br />
"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"　　//url <br />
"^[A-Za-z0-9_]*$"
<img src ="http://www.blogjava.net/josson/aggbug/162227.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2007-11-21 22:38 <a href="http://www.blogjava.net/josson/archive/2007/11/21/162227.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript才数据验证方法若干</title><link>http://www.blogjava.net/josson/archive/2007/11/21/162225.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Wed, 21 Nov 2007 14:31:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2007/11/21/162225.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/162225.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2007/11/21/162225.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/162225.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/162225.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: #008000;">/*</span><span style="color: #008000;">*<br />
*&nbsp;校验是否全由数字组成<br />
</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isDigit(s)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;patrn</span><span style="color: #000000;">=/^</span><span style="color: #000000;">[</span><span style="color: #000000;">0</span><span style="color: #000000;">-</span><span style="color: #000000;">9</span><span style="color: #000000;">]{</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">20</span><span style="color: #000000;">}$</span><span style="color: #000000;">/</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">patrn.exec(s))&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;"><br />
}<br />
<br />
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br />
*&nbsp;校验登录名：只能输入5-20个以字母开头、可带数字、&#8220;_&#8221;、&#8220;.&#8221;的字串<br />
</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isRegisterUserName(s)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;patrn</span><span style="color: #000000;">=/^</span><span style="color: #000000;">[a</span><span style="color: #000000;">-</span><span style="color: #000000;">zA</span><span style="color: #000000;">-</span><span style="color: #000000;">Z]{</span><span style="color: #000000;">1</span><span style="color: #000000;">}([a</span><span style="color: #000000;">-</span><span style="color: #000000;">zA</span><span style="color: #000000;">-</span><span style="color: #000000;">Z0</span><span style="color: #000000;">-</span><span style="color: #000000;">9</span><span style="color: #000000;">]</span><span style="color: #000000;">|</span><span style="color: #000000;">[._]){</span><span style="color: #000000;">4</span><span style="color: #000000;">,</span><span style="color: #000000;">19</span><span style="color: #000000;">}$</span><span style="color: #000000;">/</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">patrn.exec(s))&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;"><br />
}<br />
<br />
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br />
*&nbsp;校验用户姓名：只能输入1-30个以字母开头的字串<br />
</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isTrueName(s)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;patrn</span><span style="color: #000000;">=/^</span><span style="color: #000000;">[a</span><span style="color: #000000;">-</span><span style="color: #000000;">zA</span><span style="color: #000000;">-</span><span style="color: #000000;">Z]{</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">30</span><span style="color: #000000;">}$</span><span style="color: #000000;">/</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">patrn.exec(s))&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;"><br />
}<br />
<br />
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br />
*&nbsp;校验密码：只能输入6-20个字母、数字、下划线<br />
</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isPasswd(s)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;patrn</span><span style="color: #000000;">=/^</span><span style="color: #000000;">(\w){</span><span style="color: #000000;">6</span><span style="color: #000000;">,</span><span style="color: #000000;">20</span><span style="color: #000000;">}$</span><span style="color: #000000;">/</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">patrn.exec(s))&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;"><br />
}<br />
<br />
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br />
*&nbsp;校验普通电话、传真号码：可以&#8220;+&#8221;开头，除数字外，可含有&#8220;-&#8221;<br />
</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isTel(s)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;patrn</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;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">1</span><span style="color: #000000;">}(\d){</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">3</span><span style="color: #000000;">}[&nbsp;]</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;">((\d)</span><span style="color: #000000;">|</span><span style="color: #000000;">[&nbsp;]){</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">12</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;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">patrn.exec(s))&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;"><br />
}<br />
<br />
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br />
*&nbsp;校验手机号码：必须以数字开头，除数字外，可含有&#8220;-&#8221;<br />
</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isMobil(s)<br />
{<br />
</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;patrn</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;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">1</span><span style="color: #000000;">}(\d){</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">3</span><span style="color: #000000;">}[&nbsp;]</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;">((\d)</span><span style="color: #000000;">|</span><span style="color: #000000;">[&nbsp;]){</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">12</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;">;<br />
</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">patrn.exec(s))&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;"><br />
}<br />
<br />
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br />
*&nbsp;校验邮政编码<br />
</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isPostalCode(s)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;patrn</span><span style="color: #000000;">=/^</span><span style="color: #000000;">[a</span><span style="color: #000000;">-</span><span style="color: #000000;">zA</span><span style="color: #000000;">-</span><span style="color: #000000;">Z0</span><span style="color: #000000;">-</span><span style="color: #000000;">9</span><span style="color: #000000;">&nbsp;]{</span><span style="color: #000000;">3</span><span style="color: #000000;">,</span><span style="color: #000000;">12</span><span style="color: #000000;">}$</span><span style="color: #000000;">/</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">patrn.exec(s))&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;"><br />
}<br />
<br />
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br />
*&nbsp;校验搜索关键字<br />
</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isSearch(s)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;patrn</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;">%^&amp;*</span><span style="color: #000000;">()</span><span style="color: #000000;">+=|</span><span style="color: #000000;">\\\][\]\{\}:;'\,.</span><span style="color: #000000;">&lt;&gt;/?</span><span style="color: #000000;">]{</span><span style="color: #000000;">1</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;">%^&amp;</span><span style="color: #000000;">()</span><span style="color: #000000;">+=|</span><span style="color: #000000;">\\\]<br />
&nbsp;&nbsp;&nbsp;&nbsp;[\]\{\}:;'\,.</span><span style="color: #000000;">&lt;&gt;?</span><span style="color: #000000;">]{</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">19</span><span style="color: #000000;">}$</span><span style="color: #000000;">/</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">patrn.exec(s))&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;"><br />
}<br />
<br />
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br />
*&nbsp;检查是否是有效的IP地址<br />
</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isIpAddr(addr)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;patrn</span><span style="color: #000000;">=/^</span><span style="color: #000000;">[</span><span style="color: #000000;">0</span><span style="color: #000000;">-</span><span style="color: #000000;">9</span><span style="color: #000000;">.]{</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">20</span><span style="color: #000000;">}$</span><span style="color: #000000;">/</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">patrn.exec(s))&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;"><br />
} <br />
</span></div>
<img src ="http://www.blogjava.net/josson/aggbug/162225.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2007-11-21 22:31 <a href="http://www.blogjava.net/josson/archive/2007/11/21/162225.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript常用检测脚本(三）表单验证</title><link>http://www.blogjava.net/josson/archive/2007/05/22/119046.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Tue, 22 May 2007 01:49:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2007/05/22/119046.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/119046.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2007/05/22/119046.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/119046.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/119046.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/*-------------------------------------------------------------------------------说明：JavaScript脚本，验证表单中...&nbsp;&nbsp;<a href='http://www.blogjava.net/josson/archive/2007/05/22/119046.html'>阅读全文</a><img src ="http://www.blogjava.net/josson/aggbug/119046.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2007-05-22 09:49 <a href="http://www.blogjava.net/josson/archive/2007/05/22/119046.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript常用检测脚本(二)</title><link>http://www.blogjava.net/josson/archive/2007/05/22/119041.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Tue, 22 May 2007 01:31:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2007/05/22/119041.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/119041.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2007/05/22/119041.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/119041.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/119041.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: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;用途：检查输入字符串是否只由英文字母和数字和下划线组成<br>&nbsp;*&nbsp;输入：s,&nbsp;字符串<br>&nbsp;*&nbsp;返回：如果通过验证返回true,否则返回false<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isNumberOr_Letter(&nbsp;s&nbsp;){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;regu&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">^[0-9a-zA-Z\_]+$</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;re&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;RegExp(regu);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(re.test(s))&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;用途：检查输入字符串是否只由英文字母和数字组成<br>&nbsp;*&nbsp;输入：s,&nbsp;字符串<br>&nbsp;*&nbsp;返回：如果通过验证返回true,否则返回false<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isNumberOrLetter(&nbsp;s&nbsp;){</span><span style="color: #008000;">//</span><span style="color: #008000;">判断是否是数字或字母</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;regu&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">^[0-9a-zA-Z]+$</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;re&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;RegExp(regu);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(re.test(s))&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;用途：检查输入字符串是否只由汉字、字母、数字组成<br>&nbsp;*&nbsp;输入：value,&nbsp;字符串<br>&nbsp;*&nbsp;返回：如果通过验证返回true,否则返回false<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isChinaOrNumbOrLett(&nbsp;s&nbsp;){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;regu&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">^[0-9a-zA-Z\u4e00-\u9fa5]+$</span><span style="color: #000000;">"</span><span style="color: #000000;">;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;re&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;RegExp(regu);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(re.test(s))&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br><br>}<br><br></span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;用途：判断是否是日期<br>&nbsp;*&nbsp;输入：date：日期；fmt：日期格式<br>&nbsp;*&nbsp;返回：如果通过验证返回true,否则返回false<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isDate(&nbsp;date,&nbsp;fmt&nbsp;)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(fmt</span><span style="color: #000000;">==</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)&nbsp;fmt</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">yyyyMMdd</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;yIndex&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;fmt.indexOf(</span><span style="color: #000000;">"</span><span style="color: #000000;">yyyy</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(yIndex</span><span style="color: #000000;">==-</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;year&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;date.substring(yIndex,yIndex</span><span style="color: #000000;">+</span><span style="color: #000000;">4</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;mIndex&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;fmt.indexOf(</span><span style="color: #000000;">"</span><span style="color: #000000;">MM</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(mIndex</span><span style="color: #000000;">==-</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;month&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;date.substring(mIndex,mIndex</span><span style="color: #000000;">+</span><span style="color: #000000;">2</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;dIndex&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;fmt.indexOf(</span><span style="color: #000000;">"</span><span style="color: #000000;">dd</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(dIndex</span><span style="color: #000000;">==-</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;day&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;date.substring(dIndex,dIndex</span><span style="color: #000000;">+</span><span style="color: #000000;">2</span><span style="color: #000000;">);<br>&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;">isNumber(year)</span><span style="color: #000000;">||</span><span style="color: #000000;">year</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">2100</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;year</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">1900</span><span style="color: #000000;">"</span><span style="color: #000000;">)&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&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;">isNumber(month)</span><span style="color: #000000;">||</span><span style="color: #000000;">month</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">12</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;month</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">01</span><span style="color: #000000;">"</span><span style="color: #000000;">)&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(day</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">getMaxDay(year,month)&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;day</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">01</span><span style="color: #000000;">"</span><span style="color: #000000;">)&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>}<br>&nbsp;<br></span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;用途：获取每月的最后一天日期值.<br>&nbsp;*&nbsp;输入：date：年份；month：月份<br>&nbsp;*&nbsp;返回：如果通过验证返回true,否则返回false<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;getMaxDay(year,month)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(month</span><span style="color: #000000;">==</span><span style="color: #000000;">4</span><span style="color: #000000;">||</span><span style="color: #000000;">month</span><span style="color: #000000;">==</span><span style="color: #000000;">6</span><span style="color: #000000;">||</span><span style="color: #000000;">month</span><span style="color: #000000;">==</span><span style="color: #000000;">9</span><span style="color: #000000;">||</span><span style="color: #000000;">month</span><span style="color: #000000;">==</span><span style="color: #000000;">11</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">30</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(month</span><span style="color: #000000;">==</span><span style="color: #000000;">2</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(year</span><span style="color: #000000;">%</span><span style="color: #000000;">4</span><span style="color: #000000;">==</span><span style="color: #000000;">0</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">year</span><span style="color: #000000;">%</span><span style="color: #000000;">100</span><span style="color: #000000;">!=</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;year</span><span style="color: #000000;">%</span><span style="color: #000000;">400</span><span style="color: #000000;">==</span><span style="color: #000000;">0</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: #000000;">"</span><span style="color: #000000;">29</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br>&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;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">28</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">31</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;用途：字符1是否以字符串2结束<br>&nbsp;*&nbsp;输入：str1：字符串；str2：被包含的字符串<br>&nbsp;*&nbsp;返回：如果通过验证返回true,否则返回false<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isLastMatch(str1,str2){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;index&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;str1.lastIndexOf(str2);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(str1.length</span><span style="color: #000000;">==</span><span style="color: #000000;">index</span><span style="color: #000000;">+</span><span style="color: #000000;">str2.length)&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;用途：字符1是否以字符串2开始<br>&nbsp;*&nbsp;输入：str1：字符串；str2：被包含的字符串<br>&nbsp;*&nbsp;返回：如果通过验证返回true,否则返回false<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isFirstMatch(str1,str2){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;index&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;str1.indexOf(str2);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(index</span><span style="color: #000000;">==</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;用途：字符1是包含字符串2<br>&nbsp;*&nbsp;输入：str1：字符串；str2：被包含的字符串<br>&nbsp;*&nbsp;返回：如果通过验证返回true,否则返回false<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isMatch(str1,str2){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;index&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;str1.indexOf(str2);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(index</span><span style="color: #000000;">==-</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;用途：检查输入的起止日期是否正确，规则为两个日期的格式正确，且结束如期&gt;=起始日期<br>&nbsp;*&nbsp;输入：startDate：起始日期(字符串),&nbsp;&nbsp;&nbsp;endDate：结束如期(字符串)<br>&nbsp;*&nbsp;返回：如果通过验证返回true,否则返回false<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;checkTwoDate(&nbsp;startDate,endDate&nbsp;)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(&nbsp;</span><span style="color: #000000;">!</span><span style="color: #000000;">isDate(startDate)&nbsp;)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</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;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&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;</span><span style="color: #000000;">!</span><span style="color: #000000;">isDate(endDate)&nbsp;)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</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;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&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;startDate&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;endDate&nbsp;)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</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;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>}</span></div>
<br><img src ="http://www.blogjava.net/josson/aggbug/119041.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2007-05-22 09:31 <a href="http://www.blogjava.net/josson/archive/2007/05/22/119041.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript常用检测脚本（一）</title><link>http://www.blogjava.net/josson/archive/2007/05/17/118055.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Thu, 17 May 2007 05:00:00 GMT</pubDate><guid>http://www.blogjava.net/josson/archive/2007/05/17/118055.html</guid><wfw:comment>http://www.blogjava.net/josson/comments/118055.html</wfw:comment><comments>http://www.blogjava.net/josson/archive/2007/05/17/118055.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/josson/comments/commentRss/118055.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josson/services/trackbacks/118055.html</trackback:ping><description><![CDATA[<span class="x14">JavaScript脚本，用于检查网页提交表单的输入数据。<br><br>
<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: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;用途：校验ip地址的格式<br>&nbsp;*&nbsp;输入：strIP：ip地址<br>&nbsp;*&nbsp;返回：如果通过验证返回true,否则返回false；<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isIP(strIP)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(isNull(strIP))&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;re</span><span style="color: #000000;">=/^</span><span style="color: #000000;">(\d</span><span style="color: #000000;">+</span><span style="color: #000000;">)\.(\d</span><span style="color: #000000;">+</span><span style="color: #000000;">)\.(\d</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: #008000;">//</span><span style="color: #008000;">匹配IP地址的正则表达式</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(re.test(strIP)){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(&nbsp;RegExp.$</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">256</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;RegExp.$</span><span style="color: #000000;">2</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">256</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;RegExp.$</span><span style="color: #000000;">3</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">256</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;RegExp.$</span><span style="color: #000000;">4</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">256</span><span style="color: #000000;">)&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;用途：检查输入字符串是否为空或者全部都是空格<br>&nbsp;*&nbsp;输入：str<br>&nbsp;*&nbsp;返回：<br>&nbsp;*&nbsp;如果全是空返回true,否则返回false<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isNull(&nbsp;str&nbsp;){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;str&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">""</span><span style="color: #000000;">&nbsp;)&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;regu&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;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;re&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;RegExp(regu);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;re.test(str);<br>}<br><br></span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;用途：检查输入对象的值是否符合整数格式<br>&nbsp;*&nbsp;输入：str&nbsp;输入的字符串<br>&nbsp;*&nbsp;返回：如果通过验证返回true,否则返回false<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isInteger(&nbsp;str&nbsp;){&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;regu&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</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;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">1</span><span style="color: #000000;">}[</span><span style="color: #000000;">0</span><span style="color: #000000;">-</span><span style="color: #000000;">9</span><span style="color: #000000;">]{</span><span style="color: #000000;">1</span><span style="color: #000000;">,}$</span><span style="color: #000000;">/</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;regu.test(str);<br>}<br><br></span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;用途：检查输入手机号码是否正确<br>&nbsp;*&nbsp;输入：s,&nbsp;字符串<br>&nbsp;*&nbsp;返回：如果通过验证返回true,否则返回false<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;checkMobile(&nbsp;s&nbsp;){&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;regu&nbsp;</span><span style="color: #000000;">=/^</span><span style="color: #000000;">[</span><span style="color: #000000;">1</span><span style="color: #000000;">][</span><span style="color: #000000;">3</span><span style="color: #000000;">][</span><span style="color: #000000;">0</span><span style="color: #000000;">-</span><span style="color: #000000;">9</span><span style="color: #000000;">]{</span><span style="color: #000000;">9</span><span style="color: #000000;">}$</span><span style="color: #000000;">/</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;re&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;RegExp(regu);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(re.test(s))&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;用途：检查输入字符串是否符合正整数格式<br>&nbsp;*&nbsp;输入：s,&nbsp;字符串<br>&nbsp;*&nbsp;返回：如果通过验证返回true,否则返回false<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isNumber(&nbsp;s&nbsp;){&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;regu&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">^[0-9]+$</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;re&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;RegExp(regu);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(s.search(re)&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;">)&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br><br></span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;用途：检查输入字符串是否是带小数的数字格式,可以是负数<br>&nbsp;*&nbsp;输入：s,&nbsp;字符串<br>&nbsp;*&nbsp;返回：如果通过验证返回true,否则返回false<br></span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isDecimal(&nbsp;str&nbsp;){&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(isInteger(str))&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;re&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</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;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">1</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;">(\d</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;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(re.test(str))&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(RegExp.$</span><span style="color: #000000;">1</span><span style="color: #000000;">==</span><span style="color: #000000;">0</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">RegExp.$</span><span style="color: #000000;">2</span><span style="color: #000000;">==</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&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;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br><br>&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;用途：检查输入对象的值是否符合端口号格式<br>&nbsp;*&nbsp;输入：str&nbsp;输入的字符串<br>&nbsp;*&nbsp;返回：如果通过验证返回true,否则返回false<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isPort(&nbsp;str&nbsp;){&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;(isNumber(str)&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;str</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">65536</span><span style="color: #000000;">);<br>}<br><br>&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;用途：检查输入对象的值是否符合E-Mail格式<br>&nbsp;*&nbsp;输入：str&nbsp;输入的字符串<br>&nbsp;*&nbsp;返回：如果通过验证返回true,否则返回false<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isEmail(&nbsp;str&nbsp;){&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;myReg&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">/^</span><span style="color: #000000;">[</span><span style="color: #000000;">-</span><span style="color: #000000;">_A</span><span style="color: #000000;">-</span><span style="color: #000000;">Za</span><span style="color: #000000;">-</span><span style="color: #000000;">z0</span><span style="color: #000000;">-</span><span style="color: #000000;">9</span><span style="color: #000000;">]</span><span style="color: #000000;">+</span><span style="color: #000000;">@([_A</span><span style="color: #000000;">-</span><span style="color: #000000;">Za</span><span style="color: #000000;">-</span><span style="color: #000000;">z0</span><span style="color: #000000;">-</span><span style="color: #000000;">9</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;">[A</span><span style="color: #000000;">-</span><span style="color: #000000;">Za</span><span style="color: #000000;">-</span><span style="color: #000000;">z0</span><span style="color: #000000;">-</span><span style="color: #000000;">9</span><span style="color: #000000;">]{</span><span style="color: #000000;">2</span><span style="color: #000000;">,</span><span style="color: #000000;">3</span><span style="color: #000000;">}$</span><span style="color: #000000;">/</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(myReg.test(str))&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>}<br><br>&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;用途：检查输入字符串是否符合金额格式<br>&nbsp;*&nbsp;格式定义为带小数的正数，小数点后最多三位<br>&nbsp;*&nbsp;输入：s,&nbsp;字符串<br>&nbsp;*&nbsp;返回：如果通过验证返回true,否则返回false<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;isMoney(&nbsp;s&nbsp;){&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;regu&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">^[0-9]+[\.][0-9]{0,3}$</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;re&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;RegExp(regu);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(re.test(s))&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>}</span></div>
<br></span><img src ="http://www.blogjava.net/josson/aggbug/118055.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josson/" target="_blank">josson</a> 2007-05-17 13:00 <a href="http://www.blogjava.net/josson/archive/2007/05/17/118055.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>