解决iOS浏览器中无法用focus事件调出手机键盘的问题

今天在做一个H5项目的时候,发现使用JS的focus命令在iOS浏览器(包括微信)中无法调出键盘。试过N种方法都不起作用,谷歌了一些国外的帖子后,才知道iOS下,通过JS调用键盘是被禁止的,亦或许是一个bug。在这种情况下,其实focus事件已经执行了,只是iPhone键盘跳不出来,比较蛋疼。

因此在输入框上调用focus事件,无论原生,还是jQuery类似下面的JS代码无效:

$("#inputElement").focus();

但是可以监听其他点击事件,在回调中添加这个命令就可以了,比如

1
2
3
4
//用户点击#element元素可以激活小键盘
$("#element").on("click",function(){
	$("#inputElement").focus();
});

并且像这样迂回也是可以的

1
2
3
4
5
6
7
$("#element1").on("click",function(){
	$("#inputElement").focus();
});
//用户点击#element2元素也可以激活小键盘
$("#element2").on("click",function(){
	$("#inputElement1").click();
});

但是像这样又没门儿了!

1
2
3
4
5
$("#element1").on("click",function(){
	$("#inputElement").focus();
});
//js凭空捏造的点击事件无效
$("#element1").click();

于是乎,和iOS对自动播放视频音乐等限制一样,必须由用户的一个真实手动操作去触发键盘的跳出,完全用JS去创造事件是不行的。知道了这一点后,我们可以找一些理由诱使用户去点击页面上的某个元素,从而达到弹出键盘的目的。

本站所有文章均为原创,欢迎转载,请注明文章出处:https://blog.brain1981.com/1465.html。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

如本文对你有用,请在页面右侧栏扫码领取我的支付宝红包,作为打赏吧 (喂到底是我赏你还是你赏我啊-_-!)

关注我们的微信公众号-JennyStudio 本站记录了近几年的工作中遇到的一些技术问题和解决过程,“作品集”还收录了本人的大部分作品展示。除了本博客外,我们的工作室网站 – JennyStudio,内有更多作品回顾和展示。
您也可以扫描左边的二维码,关注我们的微信公众号,在微信上查看我们的案例。

1 关于 “解决iOS浏览器中无法用focus事件调出手机键盘的问题” 的评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注