我的Flex应用程序非常以键盘为导向。它使用100%的浏览器窗口,我希望用户能够立即开始使用它 - 只要它加载。
但是,当鼠标点击其中的某个位置时,应用程序似乎只是首次“激活”(即激活事件触发),这对于我的键盘式应用来说非常不方便。
我可以在加载期间/之后的某个时刻强制激活我的应用程序吗?
我希望每次页面加载时都不必显示一些愚蠢的“点击内部激活”叠加层...
附录
在某些浏览器([咳嗽] Chrome [/ cough])中,只要用户离开浏览器(甚至触摸地址栏),焦点就会丢失,并且在切换回来时不重新获得。因此,解决方案不仅要考虑页面加载时的第一个焦点,还要考虑“重新聚焦”。
答案 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