我的 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/