【发布时间】:2015-10-15 09:54:57
【问题描述】:
问题:
我有一个大约 90 个用户的小组,这非常重要,因此当其中一两个商业客户希望在他们的 Web 应用程序中更改 UI 时,他们通常会获得专门的开发资源。但是,对于我们来说,准确了解整个群体如何使用应用程序很重要,因为这个群体往往对他们的 UI 外观有强烈的个人看法,而且他们都以不同的方式使用应用程序。我在识别他们对硬件与软键盘的使用方面遇到了最大的麻烦。理想情况下,我正在寻找一个简单的答案,“使用新的Window.TabletMode == true!”我认为不存在这个简单的答案。
研究:
- 所以问题Detect virtual keyboard vs. hardware keyboard 是我看到的唯一一个非常相似的问题,但它把一半的时间集中在使用 JavaScript 键盘来替换软键盘上,所以答案讨论了如何使键盘特定于数字、日期等. 此外,他正在寻找我只需要 IE11+ 支持的跨浏览器解决方案。最后,我可以依赖对接的硬件键盘和特定品牌(戴尔)。最后,我可以依赖 Windows/IE11,因此与这个 3 年前的问题相比,可能还有其他方法。我使用混合平板电脑也使功能检查的方法变得毫无用处,因为我已经知道设备上已经提供了所有功能(触摸等)。
- 我可以 check the Registry 进行 UI 设置,但我真的需要坚持使用 JavaScript 或类似的东西。
- Android 有未记录但已知的events,表示键盘的显示和隐藏。但是,没有一个用户会使用 Android。
- IE 应该在更改发生时收到WM_SETTINGCHANGE message,但我无法确定这是否可用于 JavaScript API。我认为这将是一条更具体的消息(如果有的话),所以我找不到任何与这个搜索词和 JavaScript 相关的信息。
代码:
window.orientation 属性返回 0 表示纵向视图,返回 90 或 -90 表示横向视图。
结合window.innerHeight,我可以使用类似...
var portrait;
$(window).on("orientationchange",function(event){
if (event.orientation == 0)
{
portrait = true;
}
else //if not, it's landscape
{
portrait = false;
}
});
然后我将使用window.innerHeight 结合portrait 的值来确定宽高比是否看起来像我打开了一个键盘。考虑到我相当狭窄的限制,这种方法确实可以在全屏模式下工作,但是如果浏览器不是全屏模式怎么办?我敢肯定还有很多其他理由不为此编写一个骇人听闻的比率计算。此外,我最大的愿望当然是在任何浏览器和任何屏幕尺寸上都可以做到这一点。
我可以处理这些事情:我需要在加载文档时设置变量,并找出一种方法来确定输入何时变得相关。我可能需要检查一些浏览器功能。也许我会增加使用和不使用硬件键盘打字的计数器。一旦我达到某个数字(比如说 5 次击键),我就会向我的数据跟踪端点发送一个 POST 请求,让它知道会话 12345 使用了软键盘(或硬键盘)。之后,我会取消订阅事件处理程序。但是我工作这部分不太关心,因为我不认为我会卡在任何事情上,但我不希望任何人花时间美化或开发一个巨大的例子。
环境:
- 硬件应该都是带有 IE11+ 的戴尔平板电脑/笔记本电脑混合体(具体型号待定)。我讨厌做一些特定于 IE 的东西,但如果它在 IE11+ 上运行,那是完全可以接受的。
- 我应该能够引入任何类型的 JavaScript 库建议,但请记住,JQuery 2.2 和 Knockout 2.1 已经存在,所以“重量”很少为使用 JQuery 的解决方案添加。
- 我可能无法获得批准来编写使用 ActiveX 的应用程序或其他需要安装本地应用程序的笨拙的自定义方法,因为我的公司大约有 50,000 个用户,并且部署对于 90 个用户来说,维护起来会过于复杂。
- 屏幕尺寸都应该是 11 英寸,但我很遗憾使用特定的尺寸和分辨率,因为这样的答案在我或未来的读者的应用中非常有限。
对读者的影响:
我看到医疗亭/EMR 领域正在逐渐远离 Ipad,因为 Ipad 限制了许多 UI 选择,以支持具有凝聚力的体验。如果医生希望进行非常具体的 UI 更改,他们尤其会经常引起高级 IT 领导者的注意。 Microsoft 倾向于允许对浏览器的工作方式进行大量非标准干预和(最近)更多标准类型的干预。由于这个原因,以及许多医疗团体对 .NET 开发能力的重视,我认为很多这种运动都将转向 Windows 平板电脑。
【问题讨论】:
-
经过深思熟虑,问得好,非常详细的问题。抱歉,我不知道答案。
-
您是否检查过 keypressed(或 keydown/keyup)事件以查看 IE 是否设置了可以帮助您识别源是硬件键盘还是软件键盘的属性?您是否也将滚动位置视为一个指标(例如,如果滚动位置在焦点或模糊时发生变化,或者没有相应的触摸移动,则可能表示键盘显示/隐藏)?
-
@EdBallot 好电话,Ed。当我第一次看到它时,我没有正确阅读它,但看看 touchmoves 可能会很好。这是偷偷摸摸的,但有时偷偷摸摸是你所拥有的最好的。然而,关键事件并没有帮助。
标签: javascript browser keyboard tablet screen-orientation