apache-flex - 如何激活 Flex 应用程序,以便用户不必在其中单击即可开始获取键盘事件

标签 apache-flex

我的 Flex 应用程序主要面向键盘。它使用了 100% 的浏览器窗口,我希望用户能够在加载后立即开始使用它。

但是,当鼠标单击应用程序内部的某个位置时,应用程序似乎只是首先“激活”(即激活事件触发),这对于我的键盘密集型应用程序来说非常不方便。

我可以在应用程序加载期间/之后的某个时刻强制激活应用程序吗?

我希望我不必在每次页面加载时显示一些愚蠢的“单击内部激活”叠加层...

附录

在某些浏览器([咳嗽] Chrome [/咳嗽])中,只要用户离开浏览器(甚至触摸地址栏),焦点就会丢失,并且在切换回来时不会重新获得焦点。因此,解决方案不仅要考虑页面加载时的第一个焦点,还要考虑“重新聚焦”。

最佳答案

据我所知,该问题仅发生在某些浏览器(例如 Firefox)中。您可以使用一点 JavaScript 来更改该行为。编辑您的index.template.html并在 <head></head> 中添加以下代码片段标签:

<script type="text/javascript">
    function setFocusToSwf() {
        var swf = document.getElementById('${application}');
         if (swf) swf.focus();
    }
</script>

Flex Builder 将取代 ${application}编译您的应用程序时的占位符。

更改 <body>标记,以便在浏览器完成加载文档时调用您的新函数:

<body onload="setFocusToSwf()">

关于apache-flex - 如何激活 Flex 应用程序,以便用户不必在其中单击即可开始获取键盘事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4285473/

相关文章:

apache-flex - Adobe AIR 应用程序与传统桌面应用程序相比有何优势?

c# - C#和Flex之间的套接字通信问题

css - 如何从 TextInput 中删除投影?

apache-flex - 在 flex 中向 XML 添加子节点

apache-flex - AS3 : Whats determines the order of: for. .in

apache-flex - Flex AdvancedDataGrid 排序

ios - 外部SWF在iOS上播放速度非常慢

apache-flex - flex 4 - 在另一个组件之上放置一个组件?

flash - 删除 DataGrid 中的所有行

apache-flex - Flex 编译时间常数 - 时间戳