Javascript 如何确定混合平板电脑中硬件和软键盘的使用情况? 问题:

Javascript 如何确定混合平板电脑中硬件和软键盘的使用情况? 问题:,javascript,browser,keyboard,tablet,screen-orientation,Javascript,Browser,Keyboard,Tablet,Screen Orientation,我有一个大约90名用户的小组,这是非常重要的,因此当其中一两名商业客户希望在他们的web应用程序中更改UI时,他们通常会获得专用的开发资源。然而,对于我们来说,了解整个团队是如何使用应用程序是很重要的,因为这个团队往往对他们的UI外观有强烈的个人观点,并且他们使用应用程序的方式都不同。我在识别他们使用的硬件和软键盘方面遇到了最大的困难。最理想的情况是,我正在寻找一个简单的答案,“使用新的窗口。TabletMode==true!”我认为这个简单的答案不存在 研究: 所以这个问题是我看到的唯一一个

我有一个大约90名用户的小组,这是非常重要的,因此当其中一两名商业客户希望在他们的web应用程序中更改UI时,他们通常会获得专用的开发资源。然而,对于我们来说,了解整个团队是如何使用应用程序是很重要的,因为这个团队往往对他们的UI外观有强烈的个人观点,并且他们使用应用程序的方式都不同。我在识别他们使用的硬件和软键盘方面遇到了最大的困难。最理想的情况是,我正在寻找一个简单的答案,“使用新的
窗口。TabletMode==true
!”我认为这个简单的答案不存在

研究:
  • 所以这个问题是我看到的唯一一个非常相似的问题,但它将一半的时间集中在使用JavaScript键盘来取代软键盘上,所以答案讨论了如何使键盘特定于数字、日期等。此外,他正在寻找跨浏览器解决方案,我只需要IE11+支持。最后,我可以依赖于硬件键盘的对接和特定品牌(戴尔)。最后,我可以依赖Windows/IE11,因此与这个3年前的问题相比,可能还有其他方法。我使用的混合平板电脑也使得功能检查方法变得毫无用处,因为我已经知道所有功能(触摸等)都已在设备上可用
  • 我可以考虑UI设置,但我真的需要坚持使用JavaScript或类似的东西
  • 未记录但已知显示和隐藏键盘的信息。然而,没有一个用户会使用Android
  • IE应该在更改发生时收到一个通知,但我无法确定这是否可用于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
纵向
的值来确定宽高比是否像打开了键盘。考虑到我的局限性,这种方法可能真的可以在全屏上工作,但是如果浏览器不是全屏的呢?我相信还有很多其他原因不需要为此编写一个粗略的比率计算。此外,我最大的愿望当然是在任何浏览器和任何屏幕大小上都能做到这一点

我可以处理这些事情:我需要在加载文档时设置变量,并找到一种方法来确定何时输入变得相关。我可能需要检查一些浏览器功能。也许我会增加计数器,以便在有或没有硬件键盘的情况下打字。一旦我点击了某个数字(比如说5次击键),我就会向我的数据跟踪端点发送POST请求,让它知道会话12345使用了软键盘(或硬键盘)。之后,我会取消订阅事件处理程序。然而,我工作的这一部分没有那么令人担心,因为我不认为我会被困在任何事情上,但我不希望任何人花时间美化或发展一个巨大的例子

环境:
  • 硬件应全部为Dell平板电脑/笔记本电脑的混合产品(特定型号待定),配备IE11+。我不想让某些东西特定于IE,但如果它在IE11+上运行,它是完全可以接受的
  • 我应该能够引入任何类型的JavaScript库,但请记住,JQuery2.2和Knockout2.1已经存在,因此对于使用JQuery的解决方案,几乎没有添加“权重”
  • 我可能无法获得批准,无法编写使用ActiveX的应用程序,或者需要安装本地应用程序的其他重型定制方法,因为我的公司大约有50000个用户,而对于90个用户来说,这样的部署将过于复杂,难以维护
  • 屏幕尺寸都应该是11英寸,但我很难过使用特定的尺寸和分辨率,因为这样的答案对我或未来的读者来说在应用中是非常有限的
对读者的影响:
我看到医疗信息亭/电子病历空间正在远离iPad,因为iPad限制了许多用户界面选择,有利于提供内聚体验。特别是医生,如果他们希望进行非常具体的UI更改,他们通常会得到高级IT主管的注意。微软倾向于在浏览器的工作方式上允许大量非标准干预和(最近)更标准的干预。我认为这一运动的大部分都将转移到Windows平板电脑上,这是出于这个原因,也是因为许多医疗集团都非常重视.NET开发能力。

底线是:你不能得到你想要的东西。有了IE11,你实际上还有一些其他的挑战。您不能简单地使用with
promise=element.requestFullscreen()
,因为IE将首先向用户请求权限,API允许您检查功能,但不检查状态。此外,在Windows 8和8.1中,多个全屏应用程序可以共享桌面,这有点违反直觉

然而,如果您可以指望web应用程序可能是全屏的,那么您的“黑客”JavaScript解决方案可能是最好的答案。获取文档加载时的初始尺寸,并在按键时进行比较。作为补充说明,请记住,用户可能不会因为不在被告席而使用软件键盘。用户仍然需要显式打开软件键盘

如果你说“仅限Android”,这将是一个简单的解决方案,但你已经知道了