我想要在用户聚焦在一个标签上时,显示一个弹出窗口,并且当用户离开聚焦的时候关闭这
个弹出窗口。
使用focusIn 和focusOut 事件(在InteractiveObject 类的子类的所有实例都可用)来调用
PopUpManager 相关的方法。
在用户聚焦时启动一个窗口,你可以重用前两节的代码。不过就是把弹出窗口的启动从用户
点击LInkButton 切换到通过focusIn 事件来创建而已。组件接受到聚焦的时候就会发布
focusIn 事件,例如当用户按tab 切换到组件上或者点击了它。focusIn 事件的处理代码只需
要在之前章节的内容添加一点:
移除这句代码,如果用鼠标交互,不影响程序运行效果。如果用 tab 键切换焦点,就会出现错误。
systemManager.removeFocusManager(IFocusManagerContainer(popup))
对应的上下文:
Code View:
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute">
<mx:Canvas horizontalCenter="0" verticalCenter="0">
<mx:LinkButton id="lbl" label="Top" x="100" y="10"
focusIn="showDetail(event)" focusOut="closePopUp()" tabIndex="1"/>
<mx:LinkButton label="Left" x="10" y="100"
focusIn="showDetail(event)" focusOut="closePopUp()" tabIndex="3"/>
<mx:LinkButton label="Bottom" x="100" y="200"
focusIn="showDetail(event)" focusOut="closePopUp()" tabIndex="2"/>
<mx:LinkButton label="Right" x="200" y="100"
focusIn="showDetail(event)" focusOut="closePopUp()" tabIndex="4"/>
<mx:Canvas width="100" height="100" x="125" y="40"
backgroundColor="#ff0000" rotation="45">
</mx:Canvas>
<!-- tabIndex="0" TAB键无法使FOCUS到达该控件-->
<mx:TextInput x="50" y="280" tabIndex="0"/>
</mx:Canvas>
<mx:Script>
<![CDATA[
import mx.managers.IFocusManagerContainer;
import mx.managers.PopUpManager;
private const POPUP_OFFSET:int = 10;
private var popup:CustomPopUp;
private function showDetail(evt:FocusEvent):void {
//创建popup
popup =
CustomPopUp(PopUpManager.createPopUp(this,CustomPopUp,false));
popup.message = "This is the detail for " +
evt.target.label;
// popup定位
var pt:Point = new Point(0, 0);
pt = evt.target.localToGlobal(pt);
popup.x = pt.x + POPUP_OFFSET;
popup.y = pt.y + evt.target.height + POPUP_OFFSET;
systemManager.removeFocusManager(IFocusManagerContainer(popup))
}
private function closePopUp():void {
PopUpManager.removePopUp(popup);
}
]]>
</mx:Script>
</mx:Application>
当任意的弹出窗口被创建,默认情况,SystemManager 会被弹出窗口联结的FocusManager
激活。它允许基于刚创建的弹出窗口实现的聚焦循环(控制tab 顺序)。在这节,我们期
望一个不同的行为。当用户聚焦离开的时候(例如用户tab 出组件),弹出窗口因该关闭。
这就是从SystemManager 上移除了弹出窗口的FocusManager 所获得的。因此重新启动应用
程序的FocusManager。FocusOout 事件的处理函数closePopUp 包含了关闭弹出窗口的逻辑。
当这个应用程序运行中,重复按下tab 键的时候,聚焦会循环的在LinkButton 上产生,并
且相关的弹出窗口会被创建或者移除。
分享到:
相关推荐
popup 弹出框popup 弹出框popup 弹出框popup 弹出框popup 弹出框popup 弹出框popup 弹出框popup 弹出框popup 弹出框popup 弹出框
实现弹出窗口与主界面的分离,只要点击弹出窗口的其他部分就可以关闭弹出窗口。
jQuery popup javascript 弹出窗口 可遮盖IE6的select 点击其它地方自动隐藏 兼容IE,FF等浏览器
使用ArcGISAPI实现多个弹窗弹出;多个Popup窗体弹出,亲测可用。
popup.js是一款使用jQuery和CSS3制作并可以使用鼠标进行互动的3D弹出窗口插件。该3D弹出窗口插件使用简单,并且在旧的浏览器中会回退为非3D状态,兼容IE8+的所有现代浏览器。
QML弹出窗口组件,灯箱效果、动画效果,可拖拽 核心思路:一个mask层,一个最顶层,都用rectangle,禁止事件穿透,动画效果 http://www.cnblogs.com/surfsky/p/3998391.html
popup, MSN 风格的消息弹出窗口。很适合ASP.NET下使用。 用过的都知道。:-) 包括C#代码,和VB.net代码
jquery.popup 弹出层选择 提示
用jquery做弹出框popup时需要的参数的名称、类别、描述等
基于国外的 MacPopup 苹果风格,自己很喜欢,但是国外提供的 该控件 是基于flex 3的 ,所以在目前flex4为主流的 sdk 情况下,会出现错误。本控件 已经做了修正。可以直接运行。请指导。
今天用pop的弹出窗口里,出现一个问题,当网页出现滚动条里,不能遮挡住,解决Pop遮罩层无法遮挡滚动条下问题。 pop滚动条遮挡
通用jQuery对话框dialog或popup弹出层或提示窗口插件
Ultra Popup Blocker(简称UPB)是一种轻量级的Popup Blocker,旨在默认情况下从根本上阻止所有弹出窗口(即使是良好,无害,用户启动的窗口),同时让用户可以通过来临时或永久允许弹出窗口。 为什么要使用另一个弹...
ADF Table 选中某行,popup弹出编辑和添加例子
jQuery 通用dialog/popup弹出层,提示窗口插件,包括有弹出自定义的帮助窗口(根据位置自动判断在底部或头部弹出)、显示和隐藏Loading信息、显示自定义Loading信息、在指定容器内显示Loading信息、显示和隐藏Tip信息...
显示浮动自定义弹出窗口小部件的一种简单方法。 截屏 例子 截屏 例子 您可以通过以下命令运行示例。 cd ./example flutter create . flutter run 入门 dependencies : easy_popup : ^1.0.0 或者 dependencies...
Android弹出式WebView处理程序 这是一个Android Studio项目,... 该项目中的弹出窗口会在对话框中打开,可以通过关闭按钮或按“上一步”将其关闭,或者弹出窗口会自行关闭(就像大多数登录身份验证流程中发生的一样)。
在Popup和Child窗口之间转化(43KB)
关于弹出窗口的简单代码,以及PopupWindow中的简单问题的解决方法
-简化营销0.9.x中的重大更改现在,弹出窗口和叠加层是两个单独的层,以允许更多自定义。 有关样式示例,请参见 。全局API方法react-popup背后的想法是将其用作本机window.alert替代品。 具有一次仅显示一个弹出窗口...