【问题标题】:windows 8 appbar steals focuswindows 8 appbar 抢焦点
【发布时间】:2012-08-24 15:07:42
【问题描述】:
我目前正在使用 HTML+Javascript 在 Windows 8 上开发应用程序。
我在我的应用程序中使用 iFrame,并为键盘事件添加了 keyeventlisteners。
但是,当我右键单击鼠标时,appbar 会出现,它会偷走我的应用程序的焦点,所以现在所有的键盘事件都没有做任何事情。但是,如果再次右键单击以关闭应用栏,一切都会再次正常。
有谁知道有焦点的应用栏是否是微软设计的?还是将焦点带回我的 iFrame 的一种方式?
谢谢!
【问题讨论】:
标签:
javascript
windows-8
microsoft-metro
【解决方案1】:
这是故意的;这样用户就可以使用他们想要显示应用栏的任何方法,然后使用键盘来控制它。验证行为的一个好方法是在 VS 中创建默认的“网格模板”应用,并取消注释 Appbar,添加一些额外的按钮,然后测试行为。
但是,请注意,粘性 应用栏和非粘性 应用栏之间的期望有所不同。在非粘性的情况下,需要将焦点移动到应用栏,因为没有其他方法可以在不导致应用栏关闭的情况下(使用键盘时)。然而,对于sticky,它只能通过使用手势(右键单击,或win-z,或轻扫触摸)来解除,默认情况下不将焦点放在它是可以的。
您的解决方案可能是在文档级别而不是在 IFRAME 中附加您的偶数处理程序,由于两个上下文之间消息传递的性质,这会很复杂。