javascript – 如何识别混合平板电脑中硬件与软键盘的使用情况?

前端之家收集整理的这篇文章主要介绍了javascript – 如何识别混合平板电脑中硬件与软键盘的使用情况?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
问题:

我有一个大约90个用户的小组是非常重要的,所以当一个或两个这样的业务客户希望在他们的网络应用程序中改变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的任何东西.

码:

From W3Schools,

The window.orientation property returns 0 for portrait and 90 or -90 for landscape view.

结合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的戴尔平板电脑/笔记本电脑混合(特定型号TBD).我讨厌制作IE特定的东西,但是如果它在IE11上运行,这是完全可以接受的.
>我应该能够提出建议的任何类型的JavaScript库,但请记住,JQuery 2.2和Knockout 2.1已经存在,所以对于使用JQuery的解决方案,添加了很少的“权重”.
>我可能不能批准使用ActiveX或其他一些重型定制方法来编写一个需要安装本地应用程序的应用程序,因为我的公司有大约50,000个用户,对于90个用户的部署将会过于复杂维持.
>屏幕尺寸应该是11英寸,但我很难过,因为这样的答案对我或未来读者的应用来说将非常有限.

读者影响:

我在医疗信息亭/ EMR领域看到了Ipads的移动,因为Ipads限制了很多UI选择,有利于凝聚力的体验.如果他们希望有一个非常具体的用户界面改变,医生尤其会经常引起高层IT领导的关注. Microsoft倾向于允许许多非标准干预和(最近)更多的标准类型的干预,如何浏览器的工作原理.我认为,由于这个原因,很多这样的运动都是针对Windows平板电脑,也是因为许多医疗团体对.NET开发能力很大.

解决方法

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

但是,如果您可以依靠全屏的网络应用程序,您的“黑客”JavaScript解决方案可能是最佳答案.获取初始尺寸,当文档在按键期间加载和比较.作为附注,请记住,用户可能不会因为他或她不在码头而使用软件键盘.用户仍然需要显式打开软件键盘.

如果你说“只有Android”,这将是一个简单的解决方案,但你已经表明你知道在你的问题.如果你想使用一个桌面应用程序,那就是some MSDN documentation on a hardware token here,但是你又指出这个不够简单.

猜你在找的JavaScript相关文章