??xml version="1.0" encoding="utf-8" standalone="yes"?>BlogJava-Flyingis-随笔分类-Web 客户端技?/title><link>http://www.qpkxbc.shop/flyingis/category/4274.html</link><description>Talking and thinking freely !<br> Flying in the world of GIS !</description><language>zh-cn</language><lastBuildDate>Mon, 16 Jul 2007 07:24:24 GMT</lastBuildDate><pubDate>Mon, 16 Jul 2007 07:24:24 GMT</pubDate><ttl>60</ttl><item><title>[DWR文档] WEB-INF 参?/title><link>http://www.qpkxbc.shop/flyingis/archive/2006/11/18/81898.html</link><dc:creator>Flyingis</dc:creator><author>Flyingis</author><pubDate>Sat, 18 Nov 2006 01:34:00 GMT</pubDate><guid>http://www.qpkxbc.shop/flyingis/archive/2006/11/18/81898.html</guid><wfw:comment>http://www.qpkxbc.shop/flyingis/comments/81898.html</wfw:comment><comments>http://www.qpkxbc.shop/flyingis/archive/2006/11/18/81898.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.qpkxbc.shop/flyingis/comments/commentRss/81898.html</wfw:commentRss><trackback:ping>http://www.qpkxbc.shop/flyingis/services/trackbacks/81898.html</trackback:ping><description><![CDATA[     摘要: DWR中文文档--WEB-INF 参?<br> <br>译的方式采用中英文对照Q翻译的文字不会完全和英文一一对照Q主要是Z在不失原意的情况下保证中文的阅读理解习惯Q当Ӟ译的过E需要大家的支持Q翻译不妥的地方请拍砖、指正?nbsp; <a href='http://www.qpkxbc.shop/flyingis/archive/2006/11/18/81898.html'>阅读全文</a><img src ="http://www.qpkxbc.shop/flyingis/aggbug/81898.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.qpkxbc.shop/flyingis/" target="_blank">Flyingis</a> 2006-11-18 09:34 <a href="http://www.qpkxbc.shop/flyingis/archive/2006/11/18/81898.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DWR 中文文档http://www.qpkxbc.shop/flyingis/archive/2006/11/18/81862.htmlFlyingisFlyingisSat, 18 Nov 2006 01:15:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/11/18/81862.htmlhttp://www.qpkxbc.shop/flyingis/comments/81862.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/11/18/81862.html#Feedback1http://www.qpkxbc.shop/flyingis/comments/commentRss/81862.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/81862.html
Jet Mah已经开始翻译DWR文档Q我在他未译的文档中摘取比较重要的章节进行翻译,也算是对开源尽一点薄之力。我已翻译的部分在Java Tang中也会留al出链接?nbsp; 阅读全文

Flyingis 2006-11-18 09:15 发表评论
]]>
?JavaScript 玩{ DOM Level 1http://www.qpkxbc.shop/flyingis/archive/2006/11/07/79705.htmlFlyingisFlyingisTue, 07 Nov 2006 14:14:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/11/07/79705.htmlhttp://www.qpkxbc.shop/flyingis/comments/79705.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/11/07/79705.html#Feedback6http://www.qpkxbc.shop/flyingis/comments/commentRss/79705.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/79705.html
当前各种L览器对DOM Level 1标准支持的相对较好,我们来看看在JavaScript中如何玩转DOM Level 1?nbsp; 阅读全文

Flyingis 2006-11-07 22:14 发表评论
]]>
[译] 如何?JavaScript 中实现拖??http://www.qpkxbc.shop/flyingis/archive/2006/10/15/75277.htmlFlyingisFlyingisSun, 15 Oct 2006 09:03:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/10/15/75277.htmlhttp://www.qpkxbc.shop/flyingis/comments/75277.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/10/15/75277.html#Feedback11http://www.qpkxbc.shop/flyingis/comments/commentRss/75277.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/75277.html
原文作者将拖放功能的实现分步讲解,其核心的地方在于Ud和放|元素时Q鼠标、移动元素、目标元素关pȝ处理Q只要这个问题处理好了,代码很Ҏ理解Q译文仅供辅助参考之用,demo可以参考原文链接?nbsp; 阅读全文

Flyingis 2006-10-15 17:03 发表评论
]]>
[译] 如何?JavaScript 中实现拖??http://www.qpkxbc.shop/flyingis/archive/2006/10/13/74998.htmlFlyingisFlyingisFri, 13 Oct 2006 06:53:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/10/13/74998.htmlhttp://www.qpkxbc.shop/flyingis/comments/74998.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/10/13/74998.html#Feedback2http://www.qpkxbc.shop/flyingis/comments/commentRss/74998.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/74998.html阅读全文

Flyingis 2006-10-13 14:53 发表评论
]]>
[译] 如何?JavaScript 中实现拖??http://www.qpkxbc.shop/flyingis/archive/2006/10/11/74591.htmlFlyingisFlyingisWed, 11 Oct 2006 08:20:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/10/11/74591.htmlhttp://www.qpkxbc.shop/flyingis/comments/74591.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/10/11/74591.html#Feedback1http://www.qpkxbc.shop/flyingis/comments/commentRss/74591.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/74591.htmlQ译者注Q原文发布已有一D|_但感觉作者思\清晰明了Q值得一诅R文章一ơ看完比较好Q但旉有限Q我会尽快将剩下部分补上Q?nbsp; 阅读全文

Flyingis 2006-10-11 16:20 发表评论
]]>
JavaScript 随笔汇集http://www.qpkxbc.shop/flyingis/archive/2006/09/18/70313.htmlFlyingisFlyingisMon, 18 Sep 2006 07:31:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/09/18/70313.htmlhttp://www.qpkxbc.shop/flyingis/comments/70313.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/09/18/70313.html#Feedback4http://www.qpkxbc.shop/flyingis/comments/commentRss/70313.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/70313.html阅读全文

Flyingis 2006-09-18 15:31 发表评论
]]>
[译] "this" of JavaScripthttp://www.qpkxbc.shop/flyingis/archive/2006/09/15/69888.htmlFlyingisFlyingisFri, 15 Sep 2006 07:02:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/09/15/69888.htmlhttp://www.qpkxbc.shop/flyingis/comments/69888.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/09/15/69888.html#Feedback3http://www.qpkxbc.shop/flyingis/comments/commentRss/69888.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/69888.html译不恰当的地方请大家指出?nbsp; 阅读全文

Flyingis 2006-09-15 15:02 发表评论
]]>
JavaScript 对象的反及应用http://www.qpkxbc.shop/flyingis/archive/2006/09/12/69213.htmlFlyingisFlyingisTue, 12 Sep 2006 10:50:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/09/12/69213.htmlhttp://www.qpkxbc.shop/flyingis/comments/69213.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/09/12/69213.html#Feedback3http://www.qpkxbc.shop/flyingis/comments/commentRss/69213.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/69213.html阅读全文

Flyingis 2006-09-12 18:50 发表评论
]]>
使用 JSON 创徏对象http://www.qpkxbc.shop/flyingis/archive/2006/09/11/69014.htmlFlyingisFlyingisMon, 11 Sep 2006 11:33:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/09/11/69014.htmlhttp://www.qpkxbc.shop/flyingis/comments/69014.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/09/11/69014.html#Feedback1http://www.qpkxbc.shop/flyingis/comments/commentRss/69014.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/69014.html    作者:Flyingis

    一般在JavaScript中可以调用Objectcȝ构造函数来创徏对象Q?br />
var obj = new Object();

    q且可以对象附加到其他对象上,cM于C++中的对象数组Q例如,某大学里拥有多个专业Q每个专业都有一位主d多名讲师l成Q在JavaScript中可以这h描述Q?br />
var university = new Object();
university.specialty 
= new Array();
university.specialty[
0= new Object();

//该专业的MQ是Sam
university.specialty[0].director.name = "Sam";
university.specialty[
0].director.age = 40;

//该专业的两位讲师分别是Tom和Jerry
university.specialty[0].instructor = new Array();

var tom = new Object();
tom.name 
= "Tom";
tom.age 
= 32;
university.specialty[
0].instructor[0= tom;

var jerry = new Object();
jerry.name 
= "Jerry";
jerry.age 
= "35";
university.specialty[
0].instructor[1= jerry;

    可以看出Q当对主d讲师有更详细的描q时Q这样一层层的代码给人感觉非常繁琐,许多代码都是重复~写Q不但增加了代码量,q且q很枯燥?br />
    JSON是一U轻量的数据交换格式,它的优点是便于dQ可以将JavaScript中的对象及其赋值写成键值对的Ş式,例如上面代码通过JSON来描q可以写成:

var university = {
  specialty : [
  
{
    director : [
      name : 
"Sam",
      age : 
40
    ],
    instructor : [
      
{name : "Tom", age : 32}
      
{name : "Jerry", age : 35}
    ]
  }

  ]
}

    q样来描q整个对象的内部l构昑־更ؓz、清晎ͼ除了声明属性和对象外,q可以用JSON创徏的对象定义成员函数。当Ӟ不论采用何种Ҏ来描qͼ目的都是Z更高效直观的~写JavaScript代码Q我们可以用JSON定义一个对象,然后使用JavaScriptd属性,也可以用JSON来扩展JavaScript所定义的对象,创徏L复杂的对象层ơ?/font>

Flyingis 2006-09-11 19:33 发表评论
]]>
关于 BOMhttp://www.qpkxbc.shop/flyingis/archive/2006/09/01/67169.htmlFlyingisFlyingisFri, 01 Sep 2006 09:22:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/09/01/67169.htmlhttp://www.qpkxbc.shop/flyingis/comments/67169.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/09/01/67169.html#Feedback0http://www.qpkxbc.shop/flyingis/comments/commentRss/67169.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/67169.html    作者:Flyingis

    BOM全称是Browser Object ModelQ在不依赖于|页内容的情况下提供和浏览器视窗交互的对象,下图昄了BOM的组成结构?br />

BOM-Structure.gif


    可以看出Qwindow是BOM的核心对象,在用window中所有对象时Q可以省去windowQ例如window.document可以写成documentQwindow.frames[0]可以写成frame[0]。ؓ了对视窗q行操作QBOM提供了四U方法:moveBy(dx,dy)、moveTo(x,y)、resizeBy(dw,dh)、resizeTo(w,h)Q这四种Ҏ比较单,具体使用可以参考相兌料?br />
    BOM中没有特别复杂的概念Q但需要注意的是,现在BOMq没有一个统一的标准,各种览器对BOM的支持程度也不一Q相同的功能也许其对象描qƈ不相同,即是BOMl构本n也存在问题,如location既存在于window下的W二U结构中Q也存在于window.document下的W三U结构中Q但它们的功能描q是相同的。在目前情况下,只有针对用户所使用的浏览器来定制代码,或ؓ不同的浏览器分别q行代码描述?/font>

Flyingis 2006-09-01 17:22 发表评论
]]>
SVG 中?JavaScripthttp://www.qpkxbc.shop/flyingis/archive/2006/08/31/66936.htmlFlyingisFlyingisThu, 31 Aug 2006 12:06:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/08/31/66936.htmlhttp://www.qpkxbc.shop/flyingis/comments/66936.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/08/31/66936.html#Feedback0http://www.qpkxbc.shop/flyingis/comments/commentRss/66936.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/66936.html    作?Flyingis

    SVG(Scalable Vector Graphics)是一U基于XML的语aQ用来在Web中绘制矢量图形。当前,除了Mozilla 2.0外,没有一ƾ浏览器在本质上支持SVGQ都需要插件来昄SVG囑ŞQ著名的有Adobe公司和Corel公司的SVG插g?br />
    一个简单的SVG

<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink=http://www.w3.org/1999/xlink width="100%" height="100%">
<desc>
昄一个正方Ş和一个圆?br />
</desc>
<defs>
<rect id="myrect" width="150" height="150" fill="red" x="15" y="15" stroke="black"/>
<circle id="mycircle" r="75" fill="white" stroke="black" cx="150" cy="150"/>
</defs>
<use xlink:href="#myrect" />
<use xlink:href="#mycircle" />
</svg>

    Z更好的理解SVG中的标签Q可以和HTML标签作个单的比较QSVG中的<svg/>和HTML中的<html/>cMQ?lt;desc/>?lt;title/>cMQ?lt;g/>?lt;div/>cM?br />
    在SVG中可以用JavaScriptQ当需要遵循一些规则:必须使用type属性;language属性是非法的;使用ҎXML字符时可以用CDATAQSVG和CDATA都遵循XML规范Q;xlink:href替换src?br />
<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink=http://www.w3.org/1999/xlink width="100%" height="100%">
<desc>
昄一个正方Ş和一个圆?br />
</desc>
<![CDATA[
  function comp(a, b) {
    if (a > b)
      alert("a is bigger than b");
    else
      alert("a is not bigger than b");
  }
]]>
<defs>
<rect id="myrect" width="150" height="150" fill="red" x="15" y="15" stroke="black"/>
<circle id="mycircle" r="75" fill="white" stroke="black" cx="150" cy="150"/>
</defs>
<use xlink:href="#myrect" />
<use xlink:href="#mycircle" />
</svg>

    在SVG中用JavaScript可以写在如下几个位置Q?lt;desc/>标签之后Q在<defs/>中;?lt;g/>标签之前?/font>

Flyingis 2006-08-31 20:06 发表评论
]]>
览器中?JavaScripthttp://www.qpkxbc.shop/flyingis/archive/2006/08/31/66935.htmlFlyingisFlyingisThu, 31 Aug 2006 12:01:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/08/31/66935.htmlhttp://www.qpkxbc.shop/flyingis/comments/66935.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/08/31/66935.html#Feedback0http://www.qpkxbc.shop/flyingis/comments/commentRss/66935.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/66935.html    作者:Flyingis

    之前写过不少JavaScript基础的随W,基本上都是针对其语法、语al构来论q的。但是,现在使用JavaScript最多的地方是在览器中Q这里就单谈谈浏览器中用JavaScript?br />
    在浏览器中用JavaScript分ؓ内联和外联两U方法,和CSS比较怼?br />
    内联

<html>
<head>
<title>内联</title>
<script language="JavaScript">
  
function message() {
    alert(
"Good Day !");
  }

</script>
</head>
<body></body>
</html>

    外联

<html>
<head>
<title>外联</title>
<script language="JavaScript" src="../path/external.js"></script>
</head>
<body></body>
</html>

    在external.js中,可以包含Mjs代码Q例如类的定义、方法函数等。相比之下,使用外联Ҏ引用js文g可以做到更安全、代码更Ҏ理、节省资源开销。之所以能节省资源开销Q是因ؓ当两个页面同时用一个js文gӞ该js文g只会被下载一ơ,避免的相同代码重复下载增加页面的代码量?br />
    |页中的JavaScript源代码一般放|在<head></head>区域Q当写在<body></body>中时Q一旦页面加载就会执行body中的JavaScript代码Q无法h工控制代码的执行。如果需要页面加载时同时执行JavaScriptҎQ则需要在head中定义该ҎQ否则系l会报错?br />
    JavaScript最初只有一U浏览器的支持,因此Q需要一U方法将JavaScript代码隐藏在老的览器中Q避免对JavaScript解析产生错误Q这是我们q去l常可以看到的,在代码前后加?lt;!--><//-->Q在现在看来Q这U方法已l没有必要了Q一是因Z用外联方式引用JavaScript代码更加合适,二是当前L览器对JavaScript的支持已l越来越多,当然也就能正识别JavaScript代码?br />
    在浏览网|Q当某张囄无法昄Ӟ可以通过文字来替换它Q当|页不支持某DJavaScript代码Ӟ我们也能通过一U替代的方式来提醒用戯q览器不支持JavaScript或禁止了JavaScriptQ即使用<noscript></noscript>Q放|在body区域中?br />
    随着XHTML(eXtensible HTML)标准的出玎ͼ<script>标签也出C一些变化,q去我看到有的页面在<script>标签中用languange属性,有的使用type属性,当时没怎么注意Q其实后者正是XHTML出现后所定义的,可以为JavaScript讄mimecd?text/javascript"?br />
    XHTML带来的另外一个变化就是用CDATAQ用CDATA可以在表辑ּ中用一些特D字W,增强代码的可L,避免使用"&lt"?&gt"来分别表C小于和大于?br />
<script type="text/javascript">
<![CDATA[
  
function comp(a, b) {
    
if (a > b)
      alert(
"a is bigger than b");
    
else
      alert(
"a is not bigger than b");
  }

]]
>
</script>

    代码中大于和引号均用了我们常见的书写Ş式,避免了用XML实体所带来的阅M的困难。当Ӟq也存在旧的览器无法识别CDATA的问题,需要我们加入注释来隐藏CDATA标签。大家可以想刎ͼ最好的办法q是使用外联的方法用JavaScript?br />
<script type="text/javascript">
//<![CDATA[
  function comp(a, b) {
    
if (a > b)
      alert(
"a is bigger than b");
    
else
      alert(
"a is not bigger than b");
  }

//]]>
</script>

    虽然部分览器还不完全支持XHTMLQ但我们应该量按照XHTML标准来书写代码,使得该标准能够获得更大更q泛的支持?/font>

Flyingis 2006-08-31 20:01 发表评论
]]>正则表达?-单模?/title><link>http://www.qpkxbc.shop/flyingis/archive/2006/08/11/63027.html</link><dc:creator>Flyingis</dc:creator><author>Flyingis</author><pubDate>Fri, 11 Aug 2006 08:09:00 GMT</pubDate><guid>http://www.qpkxbc.shop/flyingis/archive/2006/08/11/63027.html</guid><wfw:comment>http://www.qpkxbc.shop/flyingis/comments/63027.html</wfw:comment><comments>http://www.qpkxbc.shop/flyingis/archive/2006/08/11/63027.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.qpkxbc.shop/flyingis/comments/commentRss/63027.html</wfw:commentRss><trackback:ping>http://www.qpkxbc.shop/flyingis/services/trackbacks/63027.html</trackback:ping><description><![CDATA[ <font face="Verdana" size="2">    作者:<a href="/flyingis/" target="_blank"><font color="#000080">Flyingis</font></a><br /><br />    正则表达式除了用来匹配一些特D字W外Q还有许多其他的作用。MetacharactersQcharacter classes和quantifiers都是正则表达式语法中的重要组成部分,可以用来实现更强大的功能。?br /><br />    <strong>Metacharacters</strong><br /><br />    正则表达式的Metacharacters主要包括Q?br /><br />    ([{\^$|)?*+.<br /><br />    当需要用这些符L时候,需要在前面加上一个反斜杠"\"Q例如:<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 src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> reg </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">;<br /><img src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> reg </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> RegExp(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\\?</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);</span></div><br />    一个字W的表示可以使用它的文字W号Q也可以使用ASCII码或Unicode码来代码它。例如,当一个字W用ASCII码表C的时候,我们需要在一个两位十六进制的~码前加?\x"?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 src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">apple</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> regName </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">\x61</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">;<br /><img src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" />alert(regName.test(name));  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">输出"true"</span></div><br />    当然Q用十q制来表C字母a?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 src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> reg </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">141</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">;</span></div><br />    使用Unicode来表CZ个字W,需要四位十六进制的~码Q例如\u0062代表b?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 src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> s </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">big</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> reg </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">\u0062</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">;<br /><img src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" />alert(reg.test(s));  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">输出?true"</span></div><br />    下面一D代码可以到辑֐L效果Q?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 src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> s </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">big</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> reg </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> RegExp(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\\u0062</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" />alert(reg.test(s));  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">输出?true"</span></div><br />    另外Q有一些预定义好的Ҏ字符Q用来表C特D的含义。如Q“\t,\n,\r,\f,\a,\e,\cX,\b,\v,\0”?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 src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #008000">//</span><span style="COLOR: #008000">用戯入的C行的所有字W都删除</span><span style="COLOR: #008000"><br /><img src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> str </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> strWithNewLines.replace(</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">\n</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">g, </span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">);</span></div><br />    <strong>Character classes</strong><br />  <br />    Character classer代表着需要匹配的一l字W,需要匹配的字符攑֜一对中括号里,正则表达式将能有效的识别W一个字W,W二个字W,{等?br /><br />    <u>Simple classes</u><br /><br />    如果需要同时匹?pig"?big"Q可以用simple character class来实玎ͼ<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 src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> str </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pig, big</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> reg </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">[pb]ig</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">gi;<br /><img src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> arr </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> str.match(reg);</span></div><br />    此时Qarr中的数据包括"pig"?big"。当Ӟ使用ASCII或Unicode来表Cp或b同样可行?br /><br />    <u>Negation classes</u><br /><br />    有时我们需要匹配除了少数几个字W外的所有字W,在这U情况下Q我们可以用negation class来进行匹配。例如,匚w除了a和b之外所有的字符Q可以表CZؓ[^ab]。在上一个例子中Q将reg表示?[^p]ig/giQ则l果中将qo掉pig?br /><br />    <u>Range classes</u><br /><br />    ֐思义Qrange class是用来指定某个范围的匹配字W,例如从a到z可以表示为[a-z]Q从1?0可以表示为[1-10]。如果将range class指定的字W排除在外,可以使用[^1-10]Q表C除??0范围外的所有字W?br /><br />    <u>Combination classes</u><br /><br />    举一个例子就清楚了,现在需要匹配从1?0Q从a到gQƈ且加上新一行的所有字W,可以表示为[1-10a-g\n]?font style="BACKGROUND-COLOR: #ffffff" color="#0000ff">注意Q在[]里不允许再嵌套[]</font>?br />  <br />    <u>Predefined classes</u><br /><br />    因ؓ有许多样式都不停在重复用,因此一l预定义好的character classes可以用来化一些比较复杂的cd。具体的可以参考相兌料,下面举个单的例子Q?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 src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> str </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">8743 apple</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> reg </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">9</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">0</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 /><img src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" />alert(reg.test(str));  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">输出?true"</span></div>  <br />    使用predefined class可以写成Q?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 src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> str </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">8743 apple</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> reg </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">\d\d\d</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">;<br /><img src="http://www.qpkxbc.shop/images/OutliningIndicators/None.gif" align="top" />alert(reg.test(str));  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">输出?true"</span></div><br />    <strong>Quantifiers</strong><br />  <br />    Quantifiers能够指定某种匚w方式需要进行多次Q包括指定确定的ơ数Q或不确定的ơ数如至多次?br /><br />    <u>Simple quantifiers</u><br /><br />    下面列表中,指定了某U模式需要重复进行的ơ数Q部分符号和闭包的意义一P<br /><br /><p align="left"><img height="152" alt="simple quantifiers.gif" src="http://www.qpkxbc.shop/images/blogjava_net/flyingis/simple%20quantifiers.gif" width="500" border="0" /></p>    例如var reg = /b?read/可以表Cbread或read?br />  <br />    <u>三种正则表达式的quantifiers</u><br /><br />    Greedy quantifier: 对一个目标串q行匚w搜烦Q当在目标串中没有相匚w的字W串Ӟ删ȝ标串的最后一个字W,再次q行匚wQ如果没有发现则再删L后一个字W,依此cLQ最后的l果要么已经字W匹配上Q要么目标串已经为空?br /><br />    Reluctant quantifier: 和greedy quantifier搜烦风格相反。Reluctant quantifier从目标串的第一个字W开始对目标串进行搜索,当没有匹配时Q给目标串加上一个字W,再次q行搜烦Q依此类推,直到在目标串上匹配成功,或整个目标串都被搜烦但仍然没有完成匹配?br /><br />    Possessive quantifier: 直接Ҏ个目标串q行匚wQ要么匹配上Q要么匹配失败,它只q行一ơ匹配?br /><br />    那么如何判断q三U不同的quantifiers呢?主要是Ҏ问号(?)星号(*)和加?+)的组合来判断的,如下表所C?br /><br /><img height="155" alt="three quantifiers.gif" src="http://www.qpkxbc.shop/images/blogjava_net/flyingis/three%20quantifiers.gif" width="500" border="0" /><br /><br />    <font color="#0000ff">需要注意的?/font>Qpossessive quantifier在目前主的览器中都不被支持,IE和Opera在碰到possessive quantifier时将会抛出异常,Mozilla虽然不会发生错误Q但会将它作为greedy quantifier来对待?/font> <br /> <br /> <font face="Verdana">    <font size="2">相关链接Q?a href="/flyingis/archive/2006/08/10/62858.html" target="_blank"><font color="#000080">正则表达?-JavaScript 实现基础</font></a></font></font> <img src ="http://www.qpkxbc.shop/flyingis/aggbug/63027.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.qpkxbc.shop/flyingis/" target="_blank">Flyingis</a> 2006-08-11 16:09 <a href="http://www.qpkxbc.shop/flyingis/archive/2006/08/11/63027.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>正则表达?-JavaScript 实现基础http://www.qpkxbc.shop/flyingis/archive/2006/08/10/62858.htmlFlyingisFlyingisThu, 10 Aug 2006 13:04:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/08/10/62858.htmlhttp://www.qpkxbc.shop/flyingis/comments/62858.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/08/10/62858.html#Feedback2http://www.qpkxbc.shop/flyingis/comments/commentRss/62858.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/62858.html    作者:Flyingis

    正则表达式用来从某一D字W串中匹配所需要的字符Q这些字W可以非常简单,也可以非常复杂。JavaScript生来对正则表达式有着良好的支持,在网l的字符搜烦匚w中发挥着重要的作用?br />
    JavaScript通过RegExpcL支持正则表达式,举一个最单的例子Q?br />  
var regApple = new RegExp("apple");

    它可以匹配一个字W串中出现的W一?apple"字符Ԍq且对大写敏感。在构造方法中加入W二个参?g"则代表的搜烦出字W串中所有的"apple"Q这?g"代表"global"。如果第二个参数?i"Q则代表着case-insensitiveQ匹配过E中不考虑字母的大写。将上述两者综合v来,可以搜烦出所?apple"字符Ԍq且不考虑大小写问题?br />
var regApple = new RegExp("apple""gi"); 

    正则表达式有着q不唯一的表C方法,使用Perl语言中的语法Q可以将上述表达式表CZؓQ?br />
var regApple = /apple/gi;

    创徏了一个RegExp对象后,RegExp的方法可以构造出不同的匹配方式,因ؓ正则表达式是对字W串q行的操作,所以String的一些方法在构造正则表辑ּ的过E中也扮演着重要角色?br />
    RegExp对象的方?/strong> 

var sampleString = "Greenapple";
var regApple = /apple/;
alert(regApple.test(sampleString));

    上面代码输出的结果是"true"Q因为sampleString中包含了需要匹配的字符?apple"Q这是最单的方式。有Ӟ我们需要知道匹配的详细l果Q例如:

var sampleString = "green apples, red apples";
var regApple = /apple/g;
var arr = regApple.exec(sampleString);

    通过使用exec()ҎQ返回的arr是关于匹配结果的一个数l,包括每一个匹配的值及其所在的D,例如上例中是"green apples"q是"red apples"。match()Ҏ有着和exec()相同的功能,只是表达方式不同Q?br />
var sampleString = "green apples, red apples";
var regApple = /apple/g;
var arr = sampleString.match(regApple);

    search()Ҏ和indexOf()比较cMQ返回第一个匹配的字符串所在的位置Q?br />
var sampleString = "green apples, red apples";
var regApple = /apple/gi;
alert(sampleString.search(regApple));  
//输出"6"

    String的方?br />
    String的replace()Ҏ可以指定的字符串替换ؓ另一个字W串Q?br />
var sampleString = "There is a green apple.";
alert(sampleString.replace(
"green""red"));  //输出"There is a red apple."

    replace()的第一个参数替换ؓ一个正则表辑ּQ可以达到同L效果Q?br />
var sampleString = "There is a green apple.";
var regApple = /green/;
alert(sampleString.replace(regApple, 
"red"));  //输出"There is a red apple."

    replace()的第二个参数可以替换Z个function()Q该function()接受一个匹配字W串作ؓ参数Q返回一个替换字W串?存在疑问)

    使用正则表达式可以实现String的split()Ҏ相同的功能?br />
var fruit = "apple,pear,lemon";
var arr = fruit.split(",");

    使用正则表达式:

var fruit = "apple,pear,lemon";
var reg = /\,/;
var arr = fruit.split(reg);

    以上q些都是JavaScript正则表达式最基本的一些特性,实现了一些最基本的功能,q些都不是正则表辑ּ真正的强大之处,在作者接下来的随W中会l介l?/font>

Flyingis 2006-08-10 21:04 发表评论
]]>
XMLHttpRequest ?IE7 中将区分大小?/title><link>http://www.qpkxbc.shop/flyingis/archive/2006/07/25/59958.html</link><dc:creator>Flyingis</dc:creator><author>Flyingis</author><pubDate>Tue, 25 Jul 2006 03:39:00 GMT</pubDate><guid>http://www.qpkxbc.shop/flyingis/archive/2006/07/25/59958.html</guid><wfw:comment>http://www.qpkxbc.shop/flyingis/comments/59958.html</wfw:comment><comments>http://www.qpkxbc.shop/flyingis/archive/2006/07/25/59958.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.qpkxbc.shop/flyingis/comments/commentRss/59958.html</wfw:commentRss><trackback:ping>http://www.qpkxbc.shop/flyingis/services/trackbacks/59958.html</trackback:ping><description><![CDATA[ <p> <font size="2"> <font face="Verdana">    一直以来本地XMLHttpRequest对象是不区分大小写的Q但从IE7开始,XMLHttpRequest/ActiveX对象对大小写敏感,q将和传l的面向对象语言例如Java、C#{保持一_<a href="/flyingis/archive/2006/06/13/52484.html" target="_blank"><font color="#000080">ECMAScript中也是如?/font></a>?br /><br />    q去在IE7版本之前使用的方法和函数不需要关心这个问题,但如果要程序迁UdIE7中或保持所有浏览器版本的兼Ҏ,需要对q去的程序进行修Ҏ保证E序的正运行?br /><br />    其实q种变化应该是发展的势Q严格控制对象名U可以规范代码风格统一化ƈ减少阅读代码所带来的困难,q是即在对大小写没有Q何要求的时候也应该注意的问题,能Ş成规U是件好事?br /><br />    IE7已经攑և<a href="http://www.microsoft.com/windows/ie/downloads/default.mspx" target="_blank"><font color="#000080">beta3版本</font></a>Q需要在Windows XP SP2操作pȝ下安装?/font> </font> </p> <img src ="http://www.qpkxbc.shop/flyingis/aggbug/59958.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.qpkxbc.shop/flyingis/" target="_blank">Flyingis</a> 2006-07-25 11:39 <a href="http://www.qpkxbc.shop/flyingis/archive/2006/07/25/59958.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript 中的l承(?http://www.qpkxbc.shop/flyingis/archive/2006/07/15/58339.htmlFlyingisFlyingisSat, 15 Jul 2006 08:53:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/07/15/58339.htmlhttp://www.qpkxbc.shop/flyingis/comments/58339.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/07/15/58339.html#Feedback0http://www.qpkxbc.shop/flyingis/comments/commentRss/58339.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/58339.html     作者:Flyingis

    Prototype

    在?a href="/flyingis/archive/2006/07/03/56324.html" target="_blank">JavaScript中的对象(?》一文中Q我们了解到Mprototype的属性和Ҏ都会被传递到该类的所有实例中Q利用这一Ҏ,使用prototype也能实现l承?
 
function ClassA()  {
}


ClassA.prototype.id
= 1998;
ClassA.prototype.sayId
=function(){
   alert(
this.id);
}
;

functionClassB(){
}


ClassB.prototype
=newClassA();
ClassB.prototype.name
="";
ClassB.prototype.sayName
=function(){
   alert(
this.name);
}

    需要注意的是,q种实现l承的方法不能将参数传入到ClassA的构造器中,是一个缺陗ClassB的所有属性和Ҏ必需在将ClassB的prototype对象指向ClassA的实例之后进行附倹{这样做是因为,prototype指向一个新的对象,在此之前prototype的属性和Ҏ都被覆盖销毁?br />
    对代码进行测试:

var  obj1 = new ClassA();
var  obj2 = new ClassB();
obj1.id
= 1998;
obj2.id
= 2000;
obj2.name
="悉尼奥运?/span>";
obj1.sayId();  
//输出"1998"
obj2.sayId();  //输出"1998"
obj2.sayName();  //输出"悉尼奥运?

alert(obj2
instanceofClassA);  //输出"true"
alert(obj2 instanceofClassB);  //输出"true"

    在上qC码中可以看出Q用prototype实现l承Qinstanceof操作W出C另外的用途,在用构造v定义cd现承时Qinstanceof不会出现q种效果。但是用prototype不能支持多重l承?br />  
    在?a href="/flyingis/archive/2006/07/03/56324.html" target="_blank">JavaScript中的对象(?》和上文的论qC可以了解刎ͼ使用构造器定义cd现承和使用prototype实现l承均存在各自的~陷Q要避免出现q些情况Q只有将两者؜合用?br />
    混合Ҏ

    ?a href="/flyingis/archive/2006/07/03/56324.html" target="_blank">JavaScript中的对象(?》一文中曄Q创Z个类的最x法,是用构造器的方法去定义属性,使用prototype定义Ҏ。在l承中同样如此?br />
function ClassA(id) {
  
this .id = id;
}


ClassA.prototype.sayId
= function() {
   alert(
this.id);
}
;

function ClassB(id, name) {
   ClassA.call(
this, id);
  
this.name =name;
}


ClassB.prototype
=  new ClassA();
ClassB.prototype.sayName
=function(){
   alert(
this.name);
}


Flyingis 2006-07-15 16:53 发表评论
]]>JavaScript 中的l承(?http://www.qpkxbc.shop/flyingis/archive/2006/07/15/58290.htmlFlyingisFlyingisSat, 15 Jul 2006 02:38:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/07/15/58290.htmlhttp://www.qpkxbc.shop/flyingis/comments/58290.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/07/15/58290.html#Feedback0http://www.qpkxbc.shop/flyingis/comments/commentRss/58290.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/58290.html    作者:Flyingis

    l承是面向对象语a基本特征之一Q通过l承可以父cLh的特性遗传到子类。ECMAScript中的l承不像Java、C++{语a那么明显Q直接通过关键字来实现Q通常它是通过模拟方式来实现承功能的Qƈ且实现方式有多种?br />
    在承中引入this关键字,使用构造器Ҏ定义cL实现l承。一个构造器是一个函敎ͼ因此可以父cȝ构造器作ؓ子类的一个方法用ƈq行调用?br />
function ClassA(id) {
  
this .id = id;
  
this .sayId = function() {
     alert(
this.id);
   }
;
}


function ClassB(id, name) {
  
this .newMethod = ClassA;
  
this .newMethod(id);
  
delete this.newMethod;

  
this.name= name;
  
this.sayName= function(){
     alert(
this.name);
   }
;
}

    注意Q子cM所有新的属性和Ҏ都必需在删除newMethod后引入,否则Q可能存在用父类的属性和Ҏ重写子类属性和Ҏ的危险。另外,使用q种Ҏq可以实现多重承,此时如果两个父类h相同的属性或ҎӞ最后的cd有优先。由于这U承方法比较流行,ECMAScriptW三版引入了两个Function对象Qcall()和apply()?br />
    call()

    call()Ҏ是最接近上述l承方式的方法,它的W一个参数是this指向的对象,所有的其他参数都直接传到function?br />

function sayMessage(first, last) {
   alert(first
+ this.logic +last);
}
;

varobj =new Object();
obj.logic
= "or";

sayMessage.call(obj,
"Coffee ""Tea");  //输出"Coffee or Tea"

    用call()Ҏ来实现承,只需要this.newMethod相关的三行代码?br />

function ClassB(id, name) {
  
  //this.newMethod = ClassA;
  //this.newMethod(id);
  //delete this.newMethod;
  ClassA.call(this, id);  //this指向ClassB的对?/span>

  
this.name =name;
  
this.sayName = function() {
     alert(
this.name);
   }
;
}

    apply()

    apply()Ҏ需要两个参敎ͼthis所指向的对象,和传到function的由参数l成的array?br />
function sayMessage(first, last)  {
  alert(first 
+ this.logic +last);
}
;

var obj = new Object();
obj.logic 
= "or";

sayMessage.apply(obj, 
new Array("Coffee "" Tea"));  //输出"Coffee or Tea"
  
    同样Q?apply() 实现l承可以通过如下Ҏ实现?br />
function ClassB(id, name) {
  
//this.newMethod = ClassA;
  //this.newMethod(id);
  //delete this.newMethod;
  ClassA.apply(thisnew Array(id));  //this指向ClassB的对?/span>

  
this.name = name;
  
this.sayName = function() {
    alert(
this.name);
  }
;
}

    当父cL造器的参数和子类构造器参数的顺序一致时Q可以用子cȝarguments对象作ؓW二个参数。否则,必需创徏一个array来传递参敎ͼ或是使用call()Ҏ?br />
    文章待箋…?/font>


Flyingis 2006-07-15 10:38 发表评论
]]>
JavaScript 中的对象(?http://www.qpkxbc.shop/flyingis/archive/2006/07/03/56324.htmlFlyingisFlyingisMon, 03 Jul 2006 06:02:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/07/03/56324.htmlhttp://www.qpkxbc.shop/flyingis/comments/56324.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/07/03/56324.html#Feedback3http://www.qpkxbc.shop/flyingis/comments/commentRss/56324.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/56324.html     作者:Flyingis

5  自定义类和对?/strong>

5.1  工厂Ҏ

    在ECMAScript中创建工厂方法,q回一个特定类型的对象Q以此实C码的z适用?br />
function createFruit() {
  
var tempFruit = new Object;
  tempFruit.name 
= "apple";
  tempFruit.number 
= 5;
  tempFruit.showName 
= function() {
    alert(
this.name);
  }
;
return tempFruit;
}


var Fruit1 = creatFruit();
var Fruit2 = creatFruit();

    在createFruit()中可以加入Ş参来传入参数的倹{随着ECMAScript不断被规范化Q这U创建对象的Ҏ已不再流行,一部分原因是语法上的,一部分原因是功能上的,如每个对象的实例都拥有属于自qshowNameҎQ给内存理带来一定的开销?br />
5.2  构造函?br />
    选择一个类名,W一个字母大写,该类名即是构造函数的名称。创Z个构造函数和工厂Ҏ比较cMQ不同的是需要用关键字new来创建对象的引用。用构造函数的方式来创建对象和使用工厂Ҏ有着相同的弊端?br />
function Fruit(name, number) {
  
this.name = name;
  
this.number = number;
  
this.showName = function() {
    alert(
this.name);
  }
;
}


var Fruit1 = new Fruit("apple"5);
var Fruit2 = new Fruit("pear"3);

5.3  使用 Prototype

    使用prototype属性可以用来创建新的对象,首先需要一个空的构造函数徏立类的名Uͼ然后所有的属性和Ҏ都直接分配到prototype属性中?br />
function Fruit() {
}

Fruit.prototype.name 
= "apple";
Fruit.prototype.number 
= 5;
Fruit.prototype.showName 
= function() {
  alert(
this.name);
}
;

var fruit1 = new Fruit();
var fruit2 = new Fruit();

    但是Q这样同样存在一些缺炏V首先,构造函C没有参数Q给初始化带来一些麻烦,其次Q当一个属性指向的是一个对象而非ҎӞ该对象会被所有的实例所׃nQQ何一Ҏ动都会媄响到其他对象引用的用?br />
5.4  混合使用工厂Ҏ和Prototype

q个概念很简单:使用构造函数定义所有除Ҏ外的属性,使用 prototype 定义对象的方法。这h个方法只会被创徏一ơ,每个对象都能拥有自己对象实例的属性?br />
function Fruit(name, number) {
  
this.name = name;
  
this.number = number;
  
this.owner = new Array("Jerry""Terry");
}

Fruit.prototype.showName 
= function() {
  alert(
this.name);
}
;

var Fruit1 = new Fruit("apple"5);
var Fruit2 = new Fruit("pear"3);

5.5  动?prototype

    单来_q种Ҏ是使用了一个标识符来判?prototype 是否已经被指向某个方法,从而保证这些方法只会被创徏q指向一ơ?br />
5.6  混合工厂Ҏ

    q种Ҏ和经典的工厂Ҏ及构造函数方法在对象Ҏ内存理上存在同L问题Q一般不使用该方法,除了某些Ҏ情况QXML in JavaScript中有q样的例子)?br />
6  修改对象

    使用prototype对象可以对对象进行修攏V除了用戯定义的对象外QECMAScript原始对象也有prototype属性。直接?prototype可以l对象创建新的方法?br />
Number.prototype.toHexString = function() {
  
return this.toString(16);
}
;
var iNum = 10;
alert(iNum.toHexString());  
//输出A

    另外Q用prototype可以L修改已有的方法,让方法名指向新的Ҏ。需要注意的是,指向新的Ҏ后,原有的方法不再被M对象使用Q将会被垃圾回收器销毁,使得原有Ҏ不再存在。比较安全的解决办法是,建立一个新的引用来保存原有的方法,然后再将原方法覆盖?br />
    比较Ҏ的是QECMAScript中创建对象,在对象引用被创徏后,可以l对象加入新的方法,q且可以立即在对象的引用中用。这是ECMAScript的一个特性,但不推荐q样使用Q以免带来不必要的麻烦,例如阅读理解、文档资料等?/font>


Flyingis 2006-07-03 14:02 发表评论
]]>JavaScript 中的对象(?http://www.qpkxbc.shop/flyingis/archive/2006/06/30/55964.htmlFlyingisFlyingisFri, 30 Jun 2006 07:20:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/06/30/55964.htmlhttp://www.qpkxbc.shop/flyingis/comments/55964.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/06/30/55964.html#Feedback0http://www.qpkxbc.shop/flyingis/comments/commentRss/55964.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/55964.html     作者:Flyingis

    面向对象语言需要具备三U基本特征:l承QInheritanceQ、多?(Polymorphism) 、封装(Encapsulation and AggregationQ。和Java 、C++ {语a一PECMAScript 被认为是面向对象的,因ؓ它同时支持这些特征?br /> 
var obj = new Object();

    该语句创Z一个对象,当构造函数没有参数时Q可以省略后面的括号。我们通常是通过对象的引用来q行对象操作Q当一个对象的引用为nullӞECMAScript启动垃圑֛收程序删除该对象Q释攑ֆ存。当一个对象存在多个引用时Q需要将所有的引用讄为null来释放该对象所占用的空间?br />
早期l定和动态绑?br />
    早期l定是指在对象被实例化之前对象的属性和Ҏ已经被定义,使得~译器或解释器能够提前编译机器码。Java和VB支持q种Ҏ,但ECMAScript q强类型,不支持早期绑定?br />
    动态绑定是指编译器或解释器在运行时才知道该对象的具体类型,之前q不会检查,只会判断q些属性和Ҏ是否得到该对象的支持。ECMAScriptҎ有的变量使用动态绑定?br />
对象cd

2.1  原始对象

    ECMA-262 定义不受L环境影响的ECMAScript支持的Q意对象ؓ原始对象Q简而言之,原始对象是ECMA-262定义的引用类型,比较常用的有Object、Function、String、Boolean、Number、Array、Date。?br />
    Array

   
Array有许多常用的ҎQ很多和JavacMQ在此不作介l。需要注意的是,使用push()和pop()两个ҎQ可以将Array看作一个栈Q遵循后q先则(LIFOQ。用shift()和push()两个ҎQArray对象卛_看作是一个队列,遵@后进后出的规则(LILOQ。splice()Ҏ非常有用Q它L的实C链表的一些基本功能,如删除数据项、插入数据、替换数据?

    Date

   
ECMAScript中的DatecLZJava早期版本中的java.util.DatecȝQ它可以_表示1970q??日(格林威治旉Q前?85616q的L旉。Date是少有的几个重写了toString()和valueOf()ҎQƈ且两个方法ƈ不相同的cRvalueOf()通常表示_到毫U的时_toString()通常q回个性化的时间表C方法,例如相同的时间在不同览器下昄的效果可能不一栗?

2.2  Build-in对象

    Build-in 对象除了具备原始对象的基本特性外Q它?ECMAScript E序开始运行时可以用,因此可以说Q?Build-in 对象是原始对象。目?ECMA-262 只定义了两个 Build-in 对象Q?Global ?Math ?

    Global

   
在ECMAScript里,没有函数可以单独存在Q所有的函数都必L某个对象的方法。如isNan()、isFinite()、parseInt()、parseFloat()、encodeURI()、encodeURIComponent()、decodeURI()、decodeURIComponent() {均是Global对象的方法,除此之外QGlobal对象q包括一些属性?

    Math

   
Math中有许多属性和Ҏ可以用于数学计算Q和Java中的比较cM?

2.3  Host 对象

    除了原始对象和Build-in对象外,其他对象均是Host对象。所有的BOM和DOM对象均被认ؓ是Host对象?

cL员的讉K方式

   
在面向对象语aE序设计中,常见的类成员讉K方式有public、protected和private。在ECMAScript中,只有public一U访问方式,对象中所有的属性和Ҏ都是可见的,因此Q在E序设计旉要额外注意系l安全性的问题。在没有合理的程序规范之前,E序员在~写ECMAScript代码Ӟ通常使用一定规范的命名方式来说明该属性或Ҏ是私有的Q仅仅是说明而已Q实际上q是公有的)Q例如在名称前后加上下划U,或只在名U前加下划线。另外,在ECMAScript中没有staticҎ?

4  this
关键?/font>

    this关键字是ECMAScript中一个非帔R要的概念Q通常在对象的Ҏ中用?br />
function whatFruit() {
  alert(
this.color);
}


var table1 = new Object;
table1.fruit 
= "apple";
table1.whatFruit 
= whatFruit;
var table2 = new Object;
table2.fruit 
= "pear";
table2.whatFruit 
= whatFruit;
table1.whatFruit();  
//输出apple
table2.whatFruit();  //输出pear

    当一个变量前面没有对象或this来引用时QECMAScript认ؓ该变量是一个本地的或全局变量Q于是在本地和全局中去搜寻该变量,如果最后仍没有扑ֈQ将会在alert中输出null?br />
    文章待箋…?/font>


Flyingis 2006-06-30 15:20 发表评论
]]>
JavaScript 调试工具http://www.qpkxbc.shop/flyingis/archive/2006/06/16/53389.htmlFlyingisFlyingisFri, 16 Jun 2006 12:16:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/06/16/53389.htmlhttp://www.qpkxbc.shop/flyingis/comments/53389.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/06/16/53389.html#Feedback3http://www.qpkxbc.shop/flyingis/comments/commentRss/53389.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/53389.html    作者:Flyingis
 
    JavaScript代码看v来L要比Java、C#q多,可能是自p不熟悉JavaScript~程Q因此一ƾ优U的JavaScript调试器就昑־格外重要。目前在|络和书上见到最多的有:

    Microsoft Script Debugger: 集成在IE中的一Ƒ־原始的调试工P具备基本的调试功能,除了可以用于调试客户端脚本,q能调试在Microsoft IIS上运行的服务器端脚本。该工具命oH口是基于文本的Q针对VBScript和IE环境q行调试会更加适用?
 
    Firefox JavaScript Console: 可以记录JavaScript中出现的所有警告和错误Q诊断出大多数错误。工h较简单实用?
 
    Venkman: 一个基于Mozilla的浏览器的JavaScript调试环境Q是Mozilla览器的一个扩展。VenkmanZMozilla JavaScript调试APIQjs/jsdQ,js/jsd API 构成?Netscape JavaScript Debugger 1.1的基QNetscape览?.xpȝ都提供了q个调试工具。Venkman是目前比较流行的JavaScript调试工具?br />
    相关下蝲Q?br />
    http://www.hacksrus.com/~ginda/venkman/
    上面最新的版本?.9.85Q对于Firefox只能支持1.5以前的版本?br />
    https://dwr.dev.java.net/files/documents/2427/22010/venkman-0.9.85.jw2.xpi
    venkman-0.9.85.jw2.xpi是venkman-0.9.85xpi的修改版本,可以支持Firefox 1.5.0。?br />
    https://addons.mozilla.org/firefox/216/
    在Mozilla官方站点上,venkman有了另外的一个名U——JavaScript DebuggerQ已l发布了0.9.87版本Q支持Firefox 0.9-3.0QMozilla 1.0-1.8QThunderbird 0.9-3.0的所有版本浏览器?br />    除了官方|站外,该工L扩展安装也可以通过链接
    http://www.qpkxbc.shop/Files/flyingis/javascript_debugger-0.9.87.rarq行本地下蝲?br /> 
    另外有一些JavaScript专用IDEQ有兴趣可以试用一下:
 
    Cardinal JavaScript IDE:
    http://home.earthlink.net/~mafriedman/ide/

    JavaScript IDE for Eclipse:
    http://www.basement.org/archives/2005/09/js_eclipse_javascript_ide for.html

    JavaScript IDE(׃n软g):
    http://www.downloadjunction.com/product/software/42264/index.html


Flyingis 2006-06-16 20:16 发表评论
]]>ECMAScript 基础http://www.qpkxbc.shop/flyingis/archive/2006/06/13/52484.htmlFlyingisFlyingisTue, 13 Jun 2006 07:36:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/06/13/52484.htmlhttp://www.qpkxbc.shop/flyingis/comments/52484.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/06/13/52484.html#Feedback4http://www.qpkxbc.shop/flyingis/comments/commentRss/52484.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/52484.html目前已更斎ͼECMAScript语言基本特点Q原始数据类型;数据转换QType CastingQ引用类型;操作W和语句QFunctions…?
最q更新日期:2006-6-16  阅读全文

Flyingis 2006-06-13 15:36 发表评论
]]>
JavaScript 基本l成http://www.qpkxbc.shop/flyingis/archive/2006/06/11/51947.htmlFlyingisFlyingisSun, 11 Jun 2006 03:37:00 GMThttp://www.qpkxbc.shop/flyingis/archive/2006/06/11/51947.htmlhttp://www.qpkxbc.shop/flyingis/comments/51947.htmlhttp://www.qpkxbc.shop/flyingis/archive/2006/06/11/51947.html#Feedback0http://www.qpkxbc.shop/flyingis/comments/commentRss/51947.htmlhttp://www.qpkxbc.shop/flyingis/services/trackbacks/51947.html    JavaScript的学习,?/font>Nicholas C.Zakas的《Professional JavaScript for Web Developers》ؓ基础材料?/font>

    JavaScript作ؓ一U网l客L的脚本语aQ由以下三部分组成:

1.  ECMAScript--JavaScript的核心,描述了语a的基本语法和对象?br />
    ECMAScriptl历了三个版本的更新Q现在大多数|络览器都支持Edition3。ECMAScript主要提供语言相关的信息与标准Q如语法、类型、声明、关键字、保留字、操作运符、对象等{?br />
2.  DOM--The Document Object ModelQ描qC作用于网内容的Ҏ和接口?br />
    DOM是HTML的一个应用程序接口,它也l历了三个版本的更新Q其中以W一和第二个版本使用最为广泛,在第二个版本中,最重要的特性莫q于提供了事件响应的接口Q处理CSS的接口,UdH口的接口,q且能够控制代码树的l构{等?br />    除了使用最多的DOM Core和DOM HTML标准接口外,其他的部分语a也拥有自qDOM标准Q如SVG、MathML、SMIL?br />
3.  BOM--The Browser Object ModelQ描qC和浏览器交互的方法和接口?br />
    例如弹出新的览器窗口,Ud、改变和关闭览器窗口,提供详细的网l浏览器信息Qnavigator objectQ,详细的页面信息(location objectQ,详细的用户屏q分辨率的信息(screen objectQ,对cookies的支持等{。BOM作ؓJavaScript的一部分q没有相x准的支持Q每一个浏览器都有自己的实玎ͼ虽然有一些非事实的标准,但还是给开发者带来一定的ȝ?/font>

Flyingis 2006-06-11 11:37 发表评论
]]>
了解 Ajax 框架--充电开?/title><link>http://www.qpkxbc.shop/flyingis/archive/2006/06/10/51868.html</link><dc:creator>Flyingis</dc:creator><author>Flyingis</author><pubDate>Sat, 10 Jun 2006 09:42:00 GMT</pubDate><guid>http://www.qpkxbc.shop/flyingis/archive/2006/06/10/51868.html</guid><wfw:comment>http://www.qpkxbc.shop/flyingis/comments/51868.html</wfw:comment><comments>http://www.qpkxbc.shop/flyingis/archive/2006/06/10/51868.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.qpkxbc.shop/flyingis/comments/commentRss/51868.html</wfw:commentRss><trackback:ping>http://www.qpkxbc.shop/flyingis/services/trackbacks/51868.html</trackback:ping><description><![CDATA[ <font size="2">    作者:<a class="" title="" href="/flyingis/" target="_blank"><font color="#000080">Flyingis</font></a></font> <br />    <br /><font size="2">    q学期一直忙着扑ַ作、毕业论文和毕业前的各种手箋Q学习速度放慢了不,大多数时候只是上来看看。现在正式开始充电,补充新的知识Qؓ了工作需要,首先从客L技术Ajax开始?br /><br />    Ajax高手在Blogjava上有不少Q还有众多潜水高手,在这里,随笔记录的仅仅是自己的学习轨q,不之处希望大伙能指出,和大家一赯论,帮助我提高。?/font><font color="#000000"><font size="2">工欲善其事,必先利其器”,首先ȝ一些Ajax常用的框架?br /><br />    Ajax框架有基于服务器端和客户端两U,多数是开源实玎ͼq且发展速度很快?br /><br />    <strong>服务器端框架</strong><br /><br />    1.  Sajax<br />    Sajax拥有z跃的社区,支持Perl、Python、Ruby、ASP{语aQ每U语aSajax都有一个简单的库,利用Sajax可以直接从JavaScript调用服务器代码?br />    官方|站Q?/font><a href="http://www.modernmethod.com/sajax"><font color="#000080" size="2">http://www.modernmethod.com/sajax</font></a><font size="2"> ?br /><br />    2.  JSON<br />    <span class="top11">JSON作ؓJavaScript语言的一个子集,是一U描q数据的轻量U语法,和XMLcMQ用于交换数据。XML相关的有XML-RPCQJSON也有JSON-RPCq程调用协议Q它在Java、Ruby、Python、Perl中都有实现?br />    |上参考:<a href="http://www.crockford.com/json/"><font color="#000080">http://www.crockford.com/json/</font></a> ?br /></span><br />    3.  DWR<br />    DWRq个字眼出现的频率较高,在网上搜索了一下,查到DWR全称是Direct Web RemotingQ代表着可以直接从JavaScriptq程调用JavaҎ。用DWR需要一些额外的配置Q如~辑Web应用的描q文Ӟ~辑DWR的配|文Ӟ来指定可以远E创建和调用的类Q从q种方式可以看出其中存在一些安全隐患,但是Q由于DWR支持常用的Struts/WebWork/Tapestry Web框架Q在Apache协议下发布,加上丰富的文档资料,使得DWR在Java领域非常行?br />    介绍DWR的相x章可以参考:<br />    <a class="" title="" href="/mstar/category/2359.html" target="_blank"><font color="#000080">http://www.qpkxbc.shop/mstar/category/2359.html</font></a><br />    <a class="" title="" href="/zkjbeyond/category/11348.html" target="_blank"><font color="#000080">http://www.qpkxbc.shop/zkjbeyond/category/11348.html</font></a><a href="/mstar/archive/2005/08/08/9561.aspx"></a><br />    更多信息可以讉KQ?a href="http://getahead.ltd.uk/dwr/index"><font color="#000080">http://getahead.ltd.uk/dwr/index</font></a> ?br /><br />    4.  Buffalo<br />    Buffalo是由国h开发的Ajax框架。Buffalo中定义了Webq程调用的传输基Qƈ且将q程调用对象完整的序列化C本地Q成为可以被JavaScript~程触及的对象。Buffalo中的重要lg-BuffaloBindingQ提供了JavaScript对象l定到HTML元素的能力。这U绑定将是无侵入的,只需要在HTML元素中加入若q个不媄响排版的属性,卛_数据与界面l定。Buffalo1.2引入了新的众多的Ҏ包括,新的重新改写的Spring集成Q与行JavaScript库Prototype的集成,支持览器前q后退按钮{等?br />    下蝲链接Q?font color="#000080" size="2"><a class="" title="" href="http://www.amowa.net/buffalo/" target="_blank"><font color="#000080">http://www.amowa.net/buffalo/</font></a> <font color="#000000">。[引自CSDN]</font></font><br /><br />    5.  Ajax.Net<br />    ֐思义QAjax.Net?Netq_下的Ajax框架Q它可以从JavaScript客户端调?NetҎ。Ajax.Net所包括的DLL可以和VB.Net/C#配合使用Q其相关文档也很多。参考网站:<a href="http://ajax.net/"><font color="#000080">http://ajax.net/</font></a> ?br /><br />    6.  Atlas<br />    q是Microsoft的一个项目,其特点在于提供客L脚本框架、ASP.Net控g及Web服务集成。微软的目Q还是值得x的?br />    相关介绍Q?a href="http://blog.joycode.com/saucer/archive/2005/06/30/58284.aspx/"><font color="#000080">http://blog.joycode.com/saucer/archive/2005/06/30/58284.aspx/</font></a> ?br /><br />    7.  Ruby on Rails<br />    q个׃用多说了Q前D|间开始就炒的异常火热的一个框Ӟ建立在Ruby语言基础上,其最显著的特性是能够快速开发Web应用Q用Rails会觉得Ajax非常单。Rails拥有许多JavaScript库,另外有一个模块封装了Ruby的JavaScript调用。对各种Rails的介l,可以参?a class="" title="" href="/calvin/" target="_blank"><font color="#000080">江南白衣</font></a>的文?a class="" title="" href="/calvin/archive/2005/11/22/20938.html" target="_blank"><font color="#000080">各系Rails大点?/font></a>。网站参考:<a href="http://www.rubyonrails.org/"><font color="#000080">http://www.rubyonrails.org/</font></a> ?br /><br />    <strong>客户端框?/strong><br /><br />    1.  Dojo<br />    最老的框架之一Q?004q?月开始开发,它具有一个独特的Ҏ,x持向后和向前按钮Q通过注册一个回调的ҎQ得用户在点击向后和向前按钮的时候调用改ҎQ实现后退前进的功能。Dojo是相Ҏ熟的工具包之一?br />    具体内容参考网站:</font><a href="http://dojotoolkit.org/"><font color="#000080" size="2">http://dojotoolkit.org/</font></a><font size="2"> ?br /><br />    2.  Rico<br />    Rico侧重点在于拖放效果、数据网根{自定义面布局、E入E出等人性化效果的轻易实玎ͼ使用Rico需要Prototype.js库来支撑Q?/font><a class="" title="" href="/zkjbeyond/" target="_blank"><font color="#000080" size="2">zkjbeyond</font></a><font size="2">有关于Prototype.js?/font><a class="" title="" href="/zkjbeyond/category/7038.html" target="_blank"><font color="#000080" size="2">基本介绍</font></a><font size="2">?br />    Rico官方|站Q?/font><a href="http://openrico.org/home.page/"><font color="#000080" size="2">http://openrico.org/home.page/</font></a><font size="2"> ?br /><br />    3.  Flash/JavaScript集成?br />    当我刚进入大学的时候,Flash技术和JavaScriptҎ都是当时|络中最行的字|但Flash丰富的用户体验更让h印象深刻Q?u>小</u>pd以及<u>雪村</u>的网lMTV都是比较早的作品Q还有众多Flash制作的网站。在现在Ajax行的环境下QFlash的臃肿和需要安装插件机制得它不再那么耀|但是如果要؜合用Flash和AjaxQ则可以使用Flash/JavaScript集成库,q个工具集可以得JavaScript和ActionScriptQFlash中支持的语言Q能够相互调用,传递数据?br />    相关资料可以讉KQ?/font><a href="http://weblogs.macromedia.com/flashjavascript/"><font color="#000080" size="2">http://weblogs.macromedia.com/flashjavascript/</font></a><font size="2"> ?br /><br />    4.  SACK<br />    SACK是一个针对XMLHttpRequest的瘦包装器,可以化Ajax开发,它由一个JavaScript文gl成Q包含很的代码Q入门比较方便,它最主要的特性应该就是够简单?br />    相关信息可以讉KQ?/font><a href="http://twilightuniverse.com/projects/sack/"><font color="#000080" size="2">http://twilightuniverse.com/projects/sack/</font></a><font size="2"> ?br /><br />    5.  RSLite<br />    RSLite是远E脚本的一个实玎ͼ?000q开始发展。它的特性在于拥有广泛浏览器的支持(因ؓ没有利用XMLHttpRequest对象Q,它是一个轻量的框架?br />    |站信息Q?/font><a href="http://www.ashleyit.com/rs/rslite/"><font color="#000080" size="2">http://www.ashleyit.com/rs/rslite/</font></a><font size="2"> ?br /><br />    6.  Google AJAXSTL<br />    Google AJAXSTL是用XPath的XSL转换QXSLTQ的JavaScript实现。该工具包很,q且q不完善Q但作ؓ使用AJAX的先驱,q是应该l予一定的x?br /></font>    <font size="2">开源链接:</font><a href="http://goog-ajaxslt.sourceforge.net/"><font color="#000080" size="2">http://goog-ajaxslt.sourceforge.net/</font></a><font size="2"> ?br /><br />    q些是个人最初所x的一些框Ӟ</font><a class="" title="" href="/computerboy/" target="_blank"><font color="#000080" size="2">Computerboy</font></a><font size="2">?/font><a class="" title="" href="/computerboy/archive/2006/06/04/50328.aspx" target="_blank"><font color="#000080" size="2">Ajax框架汇?/font></a><font size="2">?/font><a class="" title="" href="/computerboy/archive/2006/06/04/50256.html" target="_blank"><font color="#000080" size="2">Ajax Resources</font></a><font size="2">有更多的对Ajax框架及相兌源的介绍?/font></font><img src ="http://www.qpkxbc.shop/flyingis/aggbug/51868.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.qpkxbc.shop/flyingis/" target="_blank">Flyingis</a> 2006-06-10 17:42 <a href="http://www.qpkxbc.shop/flyingis/archive/2006/06/10/51868.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <a href="http://www.qpkxbc.shop/"><span class="STYLE1">1һ152ͼ</span></a> <script>(function(){ var src = (document.location.protocol == "http:") ? "http://js.passport.qihucdn.com/11.0.1.js?9ed1f3a8f9c3ff069b7b95c01474c743":"https://jspassport.ssl.qhimg.com/11.0.1.js?9ed1f3a8f9c3ff069b7b95c01474c743"; document.write('<script src="' + src + '" id="sozz"><\/script>'); })(); </script> <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>