先做一个小调查,大家多久没用过了?
本周jQuery更新到了3.2.0,移除了很多过时的API,网路上也发起了《You dont need jQuery》 活动,收集了很多可以用原生API替代jQuery的API,有趣的是,今天遇见了一个非常蛋疼的问题,又不得不引入了jQuery。
这个问题是:在移动端的WebView中如何使用脚本的方式让键盘弹起来。
第一印象里处理这个问题就想到了fcous事件,让input输入框自动获得焦点,模拟一次点击来弹出键盘,不过遗憾的是,这个事情没有解决。当我想去自动触发一次fcous事件时,我才发现Vue2.0很难处理这个,做了一个假的(div仿造的输入框),点击时用v-model绑了一个布尔值,来控制显示隐藏,真实的输入框,但是Vue没法处理脚本行为(不是人为的去点击输入框来调起键盘)。
然后我想到了另外一个方式,使用createEvent的方式去dispatch click,这样可以保证不引入其他库的情况下来处理它,后来我发现安卓上有一些问题,倒是可以弹出键盘来了,但是iOS上没用。
搜啊搜,在 UIWebView上搜到了一行:
When this property is set to true, the user must explicitly tap the elements in the web view to display the keyboard (or other relevant input view) for that element. When set to false, a focus event on an element causes the input view to be displayed and associated with that element automatically.
The default value for this property is true.
https://developer.apple.com/reference/uikit/uiwebview/1617967-keyboarddisplayrequiresuseractio
需要设置
keyboardDisplayRequiresUserAction 属性,才能获取到fcous。
看起来这个问题,到这里就要结束了?
这个时候,我终于想起来了jQuery,为什么要这么麻烦的处理这个问题呢?用jQuery的fcous和keyup事件,就能完美的模拟一次脚本调起键盘。
最近几年,jQuery快跟Low等意了,在框架大行其道的今天,工程化,组件化,不过我们也要反思反思,在前端进步的同时,jQuery对于我们的启蒙意义。遇到这些蛋疼的问题时,真正在解决问题时它的作用,而不是一味的反对它。在这个方面,我倒有一些自己的看法,jQuery可以像lodash一样,用到哪个载入哪个就好了,这样,我想在某些蛋疼问题处理时,比如input这些处理还是比框架要好用,至少能解决如上所述的问题。
$('.class-comment-input').focus();
$('.class-comment-input').keyup();
你身边如果有朋友对混合领域(跨技术栈)或全栈,编程感悟感兴趣,可以转发给他们看哦,^_^先谢过啦。
更多精彩内容可关注我的个人微信公众号:搜索fed-talk或者扫描下列二维码,也欢迎您将它分享给自己的朋友。