Dannii
(Dannii)
1
我有一个与Discourse无关的项目,我真的很想能够检测到移动浏览器的虚拟键盘是否处于活动状态。我花了几天时间思考和寻找解决方案,才意识到我每天访问的Discourse论坛有一个非常流畅的移动虚拟键盘界面。它能够可靠地检测键盘并使回复框填充剩余空间,并在关闭键盘时切换回正常模式,这真是太棒了。
我还没有找到其他检测虚拟键盘的简单解决方案(Stack Overflow上的大多数答案都说不要尝试),但Discourse所做的似乎效果很好。不过,代码库庞大而复杂,我不知道在哪里可以找到相关的代码。所以,我希望熟悉Discourse移动界面的任何人都能指出代码,或者解释一下Discourse使用了哪些启发式方法?
2 个赞
pmusaraj
(Penar Musaraj)
2
我们使用 Visual Viewport API:https://developer.mozilla.org/en-US/docs/Web/API/Visual_Viewport_API。
您可以在我们的代码仓库的 JS 文件中搜索 visualViewport。由于输入框的位置,iOS 中存在一些怪异行为,因此我们在那里使用了一些更复杂的覆盖,相关文件是 app/assets/javascripts/discourse/app/lib/safari-hacks.js。
5 个赞