Dojo 1.7 Dialog和ToolTip 教程

原文:http://dojotoolkit.org/documentation/tutorials/1.7/dialogs_tooltips/ 

原文作者:David Walsh

译者:Elaine Liu

Dojo 1.7  难度级别:初级

用户交互是构建富客户端网络应用的第一要素。浏览器提供了alert和对话框作为基本的用户交互方式,但这些基本的交互非常简陋并且不够灵活。因此,Dijit,这个Dojo工具包提供的用户界面框架,提供了由dijit/Tooltip, dijit/Dialog, 以及dijit/TooltipDialog等widget在内的一系列跨浏览器的,可扩展的,可定制主题的控件,来弥补了浏览器的基本交互功能存在的不足。在本教程中,你将会学习以上控件,包括使用范例以及相关细节。


了解Tooltips

原生的“Tooltip”是在浏览器内使用title属性创建DoM节点。这些Tooltip就像他们看起来那样简陋:不能控制显示时长,不能包含富文本,不同浏览器之间的呈现也很不一致。Dijit的dijit/Tooltip 类解决了以上所有问题:
  • 允许在Tooltip内包含HTML内容
  • 提供了控制Tooltip显示的位置和时长的方法
  • 当浏览器大小变化时可以对Tootips进行重定位和大小调整
  • 提供4中优雅美观的Tooltip显示主题
  • 实现了可靠的跨浏览器的策略,允许其显示在Flash元素上
  • 懒汉创建模式 - 只有当Tooltip必须显示的时候才创建Tooltip节点
使用dijit/Tooltip跟使用任何Dijit控件的步骤一样:在页面添加所需要的样式单,给body节点添加相应的css类名,并且请求该控件的JavaScript类



当主题和控件类都加载好之后,可以使用如下编程方式来创建一个Tooltip


重要的dijit/Tooltip属性包括:

  • ConnectId - 一个ID或者DOM节点数组,用于存放Tooltip将要连接的对象
  • label - 置于Tooltip内部的HTML或者文本内容
  • showDelay - Tooltip显示的延时
常用的dijit/Tooltip方法包括:

  • addTarget - 如果还未连接目标,则可调用此方法添加连接目标
  • close - 关闭Tooltip实例,即将其置为不可见
  • open - 打开Tooltip实例,即将其置为可见
  • removeTarget - 将某个节点从Tooltip连接目标队列中移除
  • set - 允许改变属性值,多是Tooltip的内容,比如(myTip.set("label","New content!"))

dijit/Tooltip对象还有一个可以配置的defaultPosition队列属性,可用于控制Tooltip实例显示位置的顺序。这个队列可以根据开发者的需要而改变。


Tooltip.defaultPosition = ["above", "below", "after", "before"];
注意:改变Tooltip.defaultPosition将适用于所有的Tooltip实例

dijit/Tooltip使用示例

下面是dijit/Tooltip最普通的使用例子

声明式创建Tooltip


查看示例

编程式创建Tooltip


查看示例


另一个示例——作品细节


基本的Tooltip控件提供了丰富的信息表达特性,但如果你需要一个控件能够提供更多的功能,那么Dijit的Dialog控件将是一个完美的选择!

了解Dialog

当需要从用户这里得到信息,或者提供一个提示,浏览器原生的提供了alert和confirm方法,但是这些都太呆板简陋了。幸运的是,Dojo Toolkit提供了一个很好的选择:dijit/Dialog。 就像dijit/Tooltiip一样,dijit/Dialog允许包含HTML内容并且定制主题。下面是一个dijit/Dialog的用法:

一个关于dijit/Dialog的重要因素是Dialog的实例是累加在一个“栈”上面的,这样你可以将多个Dialog实例叠加在一起。Displaying dialogs are also backed up by an iFrame so that they are ensured to always be "on top" of other elements. 多个Dialog共享同一个dijit/DialogUnderlay实例。
重要的dijit/Dialog属性包括:
  • content - Dialog中包含的HTML或者文本内容
  • draggable - 表示这个Dialog是否可以拖动
  • href - 如果Dialog的内容是由一个Ajax调用得到,则href指向内容文件的路径
  • loadingMessage - 当Ajax内容还在加载的时候,Dialog中显示的消息。
  • open - 返回true如果该Dialog实例正处于打开状态
  • title - Dialog的名称
常用的dijit/Dialog方法
  • hide - 隐藏dialog和underlay
  • refresh - 如果该Dialog是基于Ajax的,刷新Dialog的内容
  • show - 显示dialog和underlay
dijit/Dialog同时还提供了Dijit 控件具有的callback方法,例如onShow, onHide, onLoad, onClick等等。

dijit/Dialog示例

以下是dijit/Dialog常见的例子:

示例——使用条例


查看示例

对话框栈


查看示例

Ajax对话框与Black Underlay


查看示例


了解dijit/TooltipDialog

Dijit TooltipDialog 控件融合了Tooltip和Dialog的优点,创建了一个可以获得focus的,可包含丰富弹出内容的元素。TooltipDialog控件经常以下拉对话框的形式由其他的控件触发打开,比如由dijit/form/DropDownButton打开。Tooltip和TooltipDialog的区别在于TooltipDialog可以一直停留保持打开状态直至用户点击该控件以外的元素才关闭。这样Tooltip就可以包含可点击的链接,表单元素等。
dijit/TooltipDialog具有和Tooltip和Dialog相同的属性方法和事件。

dijit/TooltipDialog示例

下拉按钮


查看示例

在你需要一个可交互的弹出内容,又不想使用一个完整的Dialog时,TooltipDialog是最好不过的选择。

结论

Dojo工具包不仅使你能够更轻松的完成基本的交互任务,而且提供了跨浏览器一致的,灵活的,可定制主题的控件。本文讨论的控件提供了是浏览器自带的基本功能额外的选择。欢迎使用dijit的Tooltip,Dialog以及TooltipDialog来丰富你的网站!

posted on 2012-05-29 10:11  springside5  阅读(1203)  评论(0编辑  收藏  举报