javascript - Windows 8 应用栏窃取焦点

标签 javascript windows-8 microsoft-metro

我目前正在使用 HTML+Javascript 在 Windows 8 上开发应用程序。 我在我的应用程序中使用 iFrame,并为键盘事件添加了 keyeventlisteners。

但是,当我右键单击鼠标时,应用栏会出现,它会偷走我的应用程序的焦点,所以现在所有的键盘事件都没有做任何事情。但是,如果再次右键单击以关闭应用栏,一切都会再次正常工作。

有谁知 Prop 有焦点的应用栏是否是微软设计的?或者它是一种将焦点带回到我的 iFrame 的方法吗?

谢谢!

最佳答案

这是故意的;这是为了让用户可以使用任何他们想要显示应用栏的方法,然后使用键盘来控制它。验证行为的一个好方法是在 VS 中创建默认的“网格模板”应用程序,取消注释 Appbar,添加一些额外的按钮,然后测试行为。

但是请注意,粘性 应用栏和非粘性 应用栏之间的预期存在差异。在非粘性的情况下,焦点需要移动到应用栏,因为没有其他方法可以在不导致应用栏消失的情况下到达它(使用键盘时)。但是,对于粘滞,它只能通过使用手势(右键单击、win-z 或轻扫触摸)来消除,默认情况下焦点不放在其中是可以的。

您的解决方案可能是在文档级别附加偶数处理程序,而不是在 IFRAME 中,由于两种上下文之间消息传递的性质,这将很复杂。

关于javascript - Windows 8 应用栏窃取焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12187540/

相关文章:

javascript - 为什么 `setTimeout` 不能正常工作?

windows-8 - 如何检测 Windows 8 设备是否在 WiFi/LAN 或 3G 互联网连接上?

microsoft-metro - 从自定义外壳运行 Metro 应用程序

javascript - WinJS UI JS/HTML 控件可以在 Metro 之外使用吗

javascript - 添加脚本后 Div 消失

javascript - 如何在 JavaScript 中拼接多个元素(不遵循连续顺序)?

jquery - 0x800a139e - JavaScript 运行时错误 : SyntaxError

css - 如何知道 Metro Viewstete 没有全屏

javascript - WebStorm/PhpStorm 中的 Babel 文件观察器未定义 require 错误

sockets - 无法在 Windows 8 Metro 风格应用程序中使用 IPAddress 或类似类型