??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
2 <head>
3 <title>JSTest</title>
4 </head>
5 <body>
6 <input type="button" id="btn1" value="btn1" ONClick="alert('hello, this is btn1');"></input>
7 <input type="button" id="btn2" value="btn2"></input>
8 <script type="text/javascript" charset="utf-8">
9 var ele=document.getElementById("btn2");
10 ele.onclick=function(){alert('hello, this is btn2');}
11 </script>
12 </body>
13 </html>
]]>
public PopupPanel()Q?/SPAN>
public PopupPanel(boolean autoHide)Q?/SPAN>
实例化我们的PopupPanel之后Q可以设|显C的位置Q然后调用show()昄。但是这样只能得C个模态(modalQPanelQ只要它处于可见QisVisible()q回trueQ状态,我们的页面就不能q行M操作Q除了已l运行v来的JS代码Q像发送Ajaxhq样的后台操作)Q相当与整个Web应用因ؓ昄该Panel而进入了暂停状态?/SPAN>
׃PopupPanel可以Ҏ位置参数出现在页面Q何地方,所以很适合于实现诸如页面角落上的提C框Q比如在面右上角显C?#8220;loading...”Q等cM的小功能。但是这L提示框不能暂停浏览器的运行,所以应该是一个非模态(non-modalQ的Panel。于是我们通过一U方式来l过没有适当构造函数的限制Q?/SPAN>
使用RootPanel.get().add(myPanel);来取代myPanel.show();
q样得C一个非模态的Panel?/SPAN>
在新的GWT1.4中,PopupPanel有三个构造函敎ͼ
public PopupPanel()Q?/SPAN>
public PopupPanel(boolean autoHide)Q?/SPAN>
public PopupPanel(boolean autoHide, boolean modal)Q?/SPAN>
我们看到Q我们可以通过构造函数指定是否需要一个模态Panel。如果我们用第三个构造函敎ͼ而且把第二个参数讄为false的话Q当我们对该PopupPanel实例调用show()Ҏ的时候,׃得到一个非模态的Panel?BR> 但是Q如果我们还要用RootPanel.get().add(myPanel)的话Q浏览器忽略我们设|的宽度Q和弹出位置{信息,把myPaneld到页面最下方一个元素的下面Q而且其宽度与览器客户区的宽度相同。MQ绝不是你想要的l果?/SPAN>
下面l出一个在面右上角实现消息提C框的方法?/SPAN>
2 public void infoBoard(String info){
3 if(infoB!=null)
4 infoB.hide();
5 Label lb=new Label(info);
6 infoB.setWidget(lb);
7 infoB.show();
8 int width=infoB.getOffsetWidth();
9 infoB.hide();
10 int clientWidth=Window.getClientWidth();
11 infoB.setPopupPosition(clientWidth-width, 0);
12 infoB.show();
13 }
你的PopupPanel可能会被CSS修饰Q可能通过癑ֈ比设|了宽度Q也可能讄了边框等属性,所以无法得知到底占用了多少个像素的宽度。只有处于可见状态时才能得到其宽度?BR>
]]>
http://code.google.com/webtoolkit/
q是论坛里的发布通知Q?/P>
http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/e691e4059b3f991e
在YUI中:
执行
1. YAHOO.namespace ("myspace");
然后你就拥有了YAHOO.myspaceq个名字I间Q可以进行类似如下的操作Q?/P>
2. YAHOO.myspace.alertHello=function() {alert("Hello");}
实质上,YUI.namespace相当于徏立了一个表,准确地说是相联数l?associative array)的一V?我们可以用以下两句代替上面的1?语句
1QYAHOO["myspace"]=new function(){};
2QYAHOO["myspace"].alertHello=function(){ alert("Hello");};
而且1??Q?Q可以交叉组合用?/P>
不管你用哪U方式创q名字I间Q都有两U方式调用alertHello
a. YAHOO["myspace"].alertHello();
b. YAHOO.myspace.alertHello();
在Dojo中:
使用方式参考:dojo_custom-namespaceQ?/P>
Dojo.require()提供了更强大的名字空间管理工PDojo用module来对应名字空间的含义?我尚为对其相兛_数的原理q行深入研究Q也没有L{h的用方式?/P>
但是Q注意手册中q句话:“First of all, you'll want to create a directory structure ...”。也是_Dojo的module一定要对应一个js文g?/P>
所以dojo.require机制不是Z创徏只存在于逻辑上的名字I间?dojo.require一定会M载相应的js文gQ参考dojo 0.9的手册: dojo-require