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

时间:2010-11-26 13:01:45

标签: flex

我的Flex应用程序非常以键盘为导向。它使用100%的浏览器窗口,我希望用户能够立即开始使用它 - 只要它加载。

但是,当鼠标点击其中的某个位置时,应用程序似乎只是首次“激活”(即激活事件触发),这对于我的键盘式应用来说非常不方便。

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

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

附录

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

2 个答案:

答案 0 :(得分:5)

AFAIK问题仅在某些浏览器中出现,例如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()">

答案 1 :(得分:1)

在创建时使用它以使其在chrome中运行:

ExternalInterface.call("function() { 
    var app = document.getElementById('App');
    if(app) {
        app.tabIndex = 0;
        app.focus();
    }
}");

Ravi Sankar Gonthina