﻿<?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-Java JavaScript Web2.0-随笔分类-JavaScript</title><link>http://www.blogjava.net/tmpbuf/category/25362.html</link><description>WWW World, Jack's World</description><language>zh-cn</language><lastBuildDate>Mon, 01 Oct 2007 04:23:51 GMT</lastBuildDate><pubDate>Mon, 01 Oct 2007 04:23:51 GMT</pubDate><ttl>60</ttl><item><title>关于使用JavaScript解析XML的问题</title><link>http://www.blogjava.net/tmpbuf/archive/2007/10/01/150007.html</link><dc:creator>Jack L</dc:creator><author>Jack L</author><pubDate>Sun, 30 Sep 2007 19:15:00 GMT</pubDate><guid>http://www.blogjava.net/tmpbuf/archive/2007/10/01/150007.html</guid><wfw:comment>http://www.blogjava.net/tmpbuf/comments/150007.html</wfw:comment><comments>http://www.blogjava.net/tmpbuf/archive/2007/10/01/150007.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tmpbuf/comments/commentRss/150007.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tmpbuf/services/trackbacks/150007.html</trackback:ping><description><![CDATA[大家好，最近我在学习用JavaScript解析XML。但是有点郁闷。<br />
1）<br />
首先我有一个疑惑，网上都在讲如何从一个url载入一个xml文档，然后变成一个xmlDocument，但是能不能把一个字符串转化成一个xmlDocument呢？该如何操作呢？<br />
2）<br />
然后就是从网络载入xmlDocument的话，文件名的后缀一定要是xml才行。我在FireFox里面试过，把文件名的后缀xml去掉，程序就傻了。不光是用load方法如此，用XMLHttpRequest去获取文件也是如此。如果我使用动态服务端技术的话，比如JSP/PHP，服务端的url显然不会是&#8220;.xml&#8221;结尾，那么我又该怎样处理，才能使从服务端传回来的XML格式的数据在浏览器里变成xmlDocument对象呢？<br />
<img src ="http://www.blogjava.net/tmpbuf/aggbug/150007.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tmpbuf/" target="_blank">Jack L</a> 2007-10-01 03:15 <a href="http://www.blogjava.net/tmpbuf/archive/2007/10/01/150007.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript中容易犯的大小写问题</title><link>http://www.blogjava.net/tmpbuf/archive/2007/09/17/146011.html</link><dc:creator>Jack L</dc:creator><author>Jack L</author><pubDate>Mon, 17 Sep 2007 15:35:00 GMT</pubDate><guid>http://www.blogjava.net/tmpbuf/archive/2007/09/17/146011.html</guid><wfw:comment>http://www.blogjava.net/tmpbuf/comments/146011.html</wfw:comment><comments>http://www.blogjava.net/tmpbuf/archive/2007/09/17/146011.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tmpbuf/comments/commentRss/146011.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tmpbuf/services/trackbacks/146011.html</trackback:ping><description><![CDATA[JavaScript是区分大小写的语言，而HTML则不区分。<br />
在HTML可以用大写或小写甚至是大小写夹杂表达的地方，在JavaScript中却要多加留意。<br />
比如onclick事件，在JavaScript中一定要全部用小写<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, 128);">&nbsp;1</span>&nbsp;<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, 128, 128);">&nbsp;2</span>&nbsp;<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, 128, 128);">&nbsp;3</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</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);">JSTest</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, 128, 128);">&nbsp;4</span>&nbsp;<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, 128, 128);">&nbsp;5</span>&nbsp;<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, 128, 128);">&nbsp;6</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">input&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);">button</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&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);">btn1</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">btn1</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;ONClick</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">alert('hello,&nbsp;this&nbsp;is&nbsp;btn1');</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);">input</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;7</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">input&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);">button</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&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);">btn2</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">btn2</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);">input</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;8</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">script&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/javascript</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;charset</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">utf-8</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, 128, 128);">&nbsp;9</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ele</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">document.getElementById(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">btn2</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />
</span><span style="color: rgb(0, 128, 128);">10</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ele.onclick</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">function(){alert(</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">hello,&nbsp;this&nbsp;is&nbsp;btn2</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">);}<br />
</span><span style="color: rgb(0, 128, 128);">11</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</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, 128, 128);">12</span>&nbsp;<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, 128, 128);">13</span>&nbsp;<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>
很明显，第6行，在HTML中引用onclick与第10行在JavaScript中引用onclick事件是不同的。<br />
你可以把第6行"onclick"中的任何一个或若干字母写成大写或小写都没有关系，但是第10行中的onclick必须全部是小写。<br />
<br />
<img src ="http://www.blogjava.net/tmpbuf/aggbug/146011.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tmpbuf/" target="_blank">Jack L</a> 2007-09-17 23:35 <a href="http://www.blogjava.net/tmpbuf/archive/2007/09/17/146011.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GWT1.4中，PopupPanel的显示与布局</title><link>http://www.blogjava.net/tmpbuf/archive/2007/08/29/140999.html</link><dc:creator>Jack L</dc:creator><author>Jack L</author><pubDate>Wed, 29 Aug 2007 09:51:00 GMT</pubDate><guid>http://www.blogjava.net/tmpbuf/archive/2007/08/29/140999.html</guid><wfw:comment>http://www.blogjava.net/tmpbuf/comments/140999.html</wfw:comment><comments>http://www.blogjava.net/tmpbuf/archive/2007/08/29/140999.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tmpbuf/comments/commentRss/140999.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tmpbuf/services/trackbacks/140999.html</trackback:ping><description><![CDATA[
<SPAN style="font-family: Times New Roman;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; 在老版GWT中，PopupPanel有两个构造函数：</SPAN><BR style="font-family: Times New Roman;"><SPAN style="font-family: Times New Roman;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public PopupPanel()；</SPAN><BR style="font-family: Times New Roman;"><SPAN style="font-family: Times New Roman;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public PopupPanel(boolean autoHide)；</SPAN><BR style="font-family: Times New Roman;"><SPAN style="font-family: Times New Roman;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; 实例化我们的PopupPanel之后，可以设置显示的位置，然后调用show()显示。但是这样只能得到一个模态（modal）Panel，只要它处于可见（isVisible()返回true）状态，我们的页面就不能进行任何操作（除了已经运行起来的JS代码，像发送Ajax请求这样的后台操作），相当与整个Web应用因为</SPAN><SPAN style="font-family: Times New Roman;">显示</SPAN><SPAN style="font-family: Times New Roman;">该Panel而进入了暂停状态。</SPAN><BR style="font-family: Times New Roman;"><SPAN style="font-family: Times New Roman;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; 由于PopupPanel可以根据位置参数出现在页面任何地方，所以很适合于实现诸如页面角落上的提示框（比如在页面右上角显示&#8220;loading...&#8221;）等类似的小功能。但是这样的提示框不能暂停浏览器的运行，所以应该是一个非模态（non-modal）的Panel。于是我们通过一种方式来绕过没有适当构造函数的限制：</SPAN><BR style="font-family: Times New Roman;"><SPAN style="font-family: Times New Roman;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; 使用RootPanel.get().add(myPanel);来取代myPanel.show();</SPAN><BR style="font-family: Times New Roman;"><SPAN style="font-family: Times New Roman;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; 这样就得到了一个非模态的Panel。</SPAN><BR style="font-family: Times New Roman;"><BR style="font-family: Times New Roman;"><SPAN style="font-family: Times New Roman;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; 在新的GWT1.4中，PopupPanel有三个构造函数：</SPAN><BR style="font-family: Times New Roman;"><SPAN style="font-family: Times New Roman;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public PopupPanel()；</SPAN><BR style="font-family: Times New Roman;"><SPAN style="font-family: Times New Roman;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public PopupPanel(boolean autoHide)；</SPAN><BR style="font-family: Times New Roman;"><SPAN style="font-family: Times New Roman;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public PopupPanel(boolean autoHide, boolean modal)；</SPAN><BR style="font-family: Times New Roman;"><SPAN style="font-family: Times New Roman;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; 我们看到，我们可以通过构造函数指定是否需要一个模态Panel。如果我们使用第三个构造函数，而且把第二个参数设置为false的话，当我们对该PopupPanel实例调用show()方法的时候，就会得到一个非模态的Panel。<BR><SPAN style="font-family: Times New Roman;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; 但是，如果我们还要用RootPanel.get().add(myPanel)的话，浏览器将忽略我们设置的宽度，和弹出位置等信息，把myPanel添加到页面最下方一个元素的下面，而且其宽度与浏览器客户区的宽度相同。总之，绝不是你想要的结果。</SPAN><BR style="font-family: Times New Roman;"></SPAN><BR style="font-family: Times New Roman;"><SPAN style="font-family: Times New Roman;"><SPAN style="font-family: Times New Roman;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; 下面给出一个在页面右上角实现消息提示框的方法。</SPAN><BR>
<DIV style="border-left-color: rgb(204, 204, 204); padding-top: 4px; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%; "><SPAN style="color: #008080;">&#160;1</SPAN>&#160;<SPAN style="color: #0000ff;">private</SPAN><SPAN style="color: #000000;">&#160;</SPAN><SPAN style="color: #0000ff;">final</SPAN><SPAN style="color: #000000;">&#160;PopupPanel&#160;infoB</SPAN><SPAN style="color: #000000;">=</SPAN><SPAN style="color: #0000ff;">new</SPAN><SPAN style="color: #000000;">&#160;PopupPanel(</SPAN><SPAN style="color: #0000ff;">false</SPAN><SPAN style="color: #000000;">,</SPAN><SPAN style="color: #0000ff;">false</SPAN><SPAN style="color: #000000;">);</SPAN><SPAN style="color: #008000;">//</SPAN><SPAN style="color: #008000;">no&#160;auto-hide,&#160;non-modal&#160;popup</SPAN><SPAN style="color: #008000;"><BR></SPAN><SPAN style="color: #008080;">&#160;2</SPAN>&#160;<SPAN style="color: #008000;"></SPAN><SPAN style="color: #0000ff;">public</SPAN><SPAN style="color: #000000;">&#160;</SPAN><SPAN style="color: #0000ff;">void</SPAN><SPAN style="color: #000000;">&#160;infoBoard(String&#160;info){<BR></SPAN><SPAN style="color: #008080;">&#160;3</SPAN>&#160;<SPAN style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160; &#160; </SPAN><SPAN style="color: #0000ff;">if</SPAN><SPAN style="color: #000000;">(infoB</SPAN><SPAN style="color: #000000;">!=</SPAN><SPAN style="color: #0000ff;">null</SPAN><SPAN style="color: #000000;">)<BR></SPAN><SPAN style="color: #008080;">&#160;4</SPAN>&#160;<SPAN style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160; &#160;&#160; infoB.hide();&#160;&#160;&#160;&#160;<BR></SPAN><SPAN style="color: #008080;">&#160;5</SPAN>&#160;<SPAN style="color: #000000;">&#160;&#160;&#160;&#160;&#160; &#160;&#160; Label&#160;lb</SPAN><SPAN style="color: #000000;">=</SPAN><SPAN style="color: #0000ff;">new</SPAN><SPAN style="color: #000000;">&#160;Label(info);<BR></SPAN><SPAN style="color: #008080;">&#160;6</SPAN>&#160;<SPAN style="color: #000000;">&#160;&#160;&#160;&#160; &#160; &#160; infoB.setWidget(lb);<BR></SPAN><SPAN style="color: #008080;">&#160;7</SPAN>&#160;<SPAN style="color: #000000;">&#160;&#160;&#160; &#160; &#160;&#160; infoB.show();<BR></SPAN><SPAN style="color: #008080;">&#160;8</SPAN>&#160;<SPAN style="color: #000000;">&#160;&#160; &#160; &#160;&#160;&#160; </SPAN><SPAN style="color: #0000ff;">int</SPAN><SPAN style="color: #000000;">&#160;width</SPAN><SPAN style="color: #000000;">=</SPAN><SPAN style="color: #000000;">infoB.getOffsetWidth();<BR></SPAN><SPAN style="color: #008080;">&#160;9</SPAN>&#160;<SPAN style="color: #000000;">&#160; &#160; &#160;&#160;&#160;&#160; infoB.hide();<BR></SPAN><SPAN style="color: #008080;">10</SPAN>&#160;<SPAN style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</SPAN><SPAN style="color: #0000ff;">int</SPAN><SPAN style="color: #000000;">&#160;clientWidth</SPAN><SPAN style="color: #000000;">=</SPAN><SPAN style="color: #000000;">Window.getClientWidth();<BR></SPAN><SPAN style="color: #008080;">11</SPAN>&#160;<SPAN style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;infoB.setPopupPosition(clientWidth</SPAN><SPAN style="color: #000000;">-</SPAN><SPAN style="color: #000000;">width,&#160;</SPAN><SPAN style="color: #000000;">0</SPAN><SPAN style="color: #000000;">);<BR></SPAN><SPAN style="color: #008080;">12</SPAN>&#160;<SPAN style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;infoB.show();<BR></SPAN><SPAN style="color: #008080;">13</SPAN> <SPAN style="color: #000000;">}</SPAN></DIV>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;
基本思路是，先设置要显示的消息（info），然后因为是在右上角显示，所以要取得消息框的宽度（width），并取得浏览器客户区的宽度（clientWidth），计算（clientWidth-width）就得到了消息框的x坐标（准确地说是左上角那一点的x坐标）。<BR>&#160;&#160;&#160;&#160;&#160;&#160;&#160; 7～9的代码好像很奇怪，但只有这样才能取得消息框的宽度。当PopupPanel处于不可见状态时，调用getOffsetWidth()必将返回0。因为浏览器不知道宽度。原因如下：<BR>&#160;&#160;&#160;&#160;&#160;&#160;&#160; 你的PopupPanel可能会被CSS修饰，可能通过百分比设置了宽度，也可能设置了边框等属性，所以无法得知到底占用了多少个像素的宽度。只有处于可见状态时才能得到其宽度。<BR> </SPAN>  <img src ="http://www.blogjava.net/tmpbuf/aggbug/140999.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tmpbuf/" target="_blank">Jack L</a> 2007-08-29 17:51 <a href="http://www.blogjava.net/tmpbuf/archive/2007/08/29/140999.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GWT 1.4 stable 上线</title><link>http://www.blogjava.net/tmpbuf/archive/2007/08/29/140809.html</link><dc:creator>Jack L</dc:creator><author>Jack L</author><pubDate>Wed, 29 Aug 2007 03:00:00 GMT</pubDate><guid>http://www.blogjava.net/tmpbuf/archive/2007/08/29/140809.html</guid><wfw:comment>http://www.blogjava.net/tmpbuf/comments/140809.html</wfw:comment><comments>http://www.blogjava.net/tmpbuf/archive/2007/08/29/140809.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tmpbuf/comments/commentRss/140809.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tmpbuf/services/trackbacks/140809.html</trackback:ping><description><![CDATA[
<P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">1.4 RC已经升级为正式发行版了，上线时间差不多为今天的北京时间4:00 am</P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><A href="http://code.google.com/webtoolkit/" target="_blank">http://code.google.com/webtoolkit/</A></P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">这是论坛里的发布通知：</P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><A href="http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/e691e4059b3f991e " target="_blank">http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/e691e4059b3f991e</A></P><img src ="http://www.blogjava.net/tmpbuf/aggbug/140809.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tmpbuf/" target="_blank">Jack L</a> 2007-08-29 11:00 <a href="http://www.blogjava.net/tmpbuf/archive/2007/08/29/140809.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Namespace, YUI和Dojo对此问题的异同</title><link>http://www.blogjava.net/tmpbuf/archive/2007/08/28/140602.html</link><dc:creator>Jack L</dc:creator><author>Jack L</author><pubDate>Tue, 28 Aug 2007 11:10:00 GMT</pubDate><guid>http://www.blogjava.net/tmpbuf/archive/2007/08/28/140602.html</guid><wfw:comment>http://www.blogjava.net/tmpbuf/comments/140602.html</wfw:comment><comments>http://www.blogjava.net/tmpbuf/archive/2007/08/28/140602.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/tmpbuf/comments/commentRss/140602.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tmpbuf/services/trackbacks/140602.html</trackback:ping><description><![CDATA[


<P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">YUI和Dojo的widget都必须存在于自己的名字空间内，这些名字空间是预先建立好的。 那么，如果我们要建立自己的名字空间怎么办呢？（产生这种需求的原因通常是，我们要管理难以管理的JavaScript代码。）</P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><BR></P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">在YUI中：</P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">&#160;执行</P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">1. YAHOO.namespace ("myspace");</P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">&#160;然后你就拥有了YAHOO.myspace这个名字空间，可以进行类似如下的操作：</P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">2. YAHOO.myspace.alertHello=function() {alert("Hello");}</P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">实质上，YUI.namespace相当于建立了一个表项，准确地说是相联数组(associative array)的一项。 我们可以用以下两句代替上面的1、2语句</P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">1）YAHOO["myspace"]=new function(){};</P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">2）YAHOO["myspace"].alertHello=function(){ alert("Hello");};</P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">而且1、2与1）、2）可以交叉组合使用。</P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">&#160;不管你使用哪种方式创建自己的名字空间，都有两种方式调用alertHello</P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">a. YAHOO["myspace"].alertHello();</P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">b. YAHOO.myspace.alertHello();</P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"><BR></P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">在Dojo中：</P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">使用方式参考：<A href="http://dojotoolkit.org/book/dojo-book-0-4/part-4-more-widgets/writing-your-own-widget/custom-namespace" target="_blank">dojo_custom-namespace</A>；</P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">Dojo.require()提供了更强大的名字空间管理工具：Dojo用module来对应名字空间的含义。 我尚为对其相关函数的原理进行深入研究，也没有寻找等价的使用方式。</P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">&#160;但是，注意手册中这句话：&#8220;First of all, you'll want to create a directory structure ...&#8221;。也就是说，Dojo的module一定要对应一个js文件。</P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">所以dojo.require机制不是为了创建只存在于逻辑上的名字空间。 dojo.require一定会去下载相应的js文件，参考dojo 0.9的手册： <A href="http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/modules-and-namespaces/what-does-dojo-require-" target="_blank">dojo-require</A></P><P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><BR></P><img src ="http://www.blogjava.net/tmpbuf/aggbug/140602.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tmpbuf/" target="_blank">Jack L</a> 2007-08-28 19:10 <a href="http://www.blogjava.net/tmpbuf/archive/2007/08/28/140602.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>