vue在ios端键盘弹起底部空白

在iOS微信端使用Vue项目时,遇到键盘收起后底部出现空白的问题。原因是iOS第三方键盘未正确监听键盘隐藏事件。通过引入jQuery并监听键盘显示和隐藏来调整页面高度。在main.js中引入jQuery,并参考Android键盘监听方法,例如使用window.resize事件,当高度差大于140px时判断为键盘弹出或收起。亲测在Android上,focusin事件能触发,但focusout事件在键盘收起后因光标仍留在input框而无法触发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述,在ios微信端打开项目,输入信息,收起键盘后底部有空白。

原因:ios第三方键盘在收起时没有监听到

可以通过js控制键盘的显示和隐藏时页面的高度

首先引入jquery :npm install jquery --save-dev

webpack.base.conf文件中添加配置:

plugins:[
  new webpack.ProvidePlugin({
    $:"jquery",
    jQuery:"jquery",
    "windows.jQuery":"jquery"
  })
],

在main.js中引入jquery: import $ from 'jquery';然后就可以开始使用了

var u = navigator.userAgent, app = navigator.appVersion;
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //判断是否是ios,函数只在ios下执行
if(isiOS){
  $(document).on('focusin',function(){
    let lengths = $(".changeHeight").height();
    let  val = lengths + 500;
    $(".changeHeight").height(val);
  })
  $(document).on("focusout",function(){
    let lengths = $(".changeHeight").height();
    let  val = lengths - 500;
    $(".changeHeight").height(val);
  })
}

之前在查找资料的时候也看到一些童鞋写的关于android方便监听键盘的方法,保存一下,以供参考:

移动端软键盘的监听(弹起和收起)

1 Android监听 resize

var winHeight = $(window).height();  //获取当前页面高度
$(window).resize(function () {
 
var thisHeight = $(this).height();
 
if ( winHeight - thisHeight > 140 ) {
   
//键盘弹出
 
} else {
   
//键盘收起
 
}
})

140是一个预估值的阀值,用来排除其他的resize操作。仅resize的高度差大于140时,才被识别为软键盘交互,否则不是。如浏览器的工具栏、搜索栏的隐藏,window的窗口页会有一个较小的变化。

resize键盘监听方法二:

var originalHeight=document.documentElement.clientHeight ||document.body.clientHeight;

window.οnresize=function(){

    //键盘弹起与隐藏都会引起窗口的高度发生变化

       Var resizeHeight=document.documentElement.clientHeight || document.body.clientHeight;

        if(resizeHeight-0<originalHeight-0){

         //当软键盘弹起,在此处操作

         }else{

         //当软键盘收起,在此处操作

         }

}

写在最后的话:通过亲测安卓端可以触发focusin事件,但是无法触发focuout,是因为在键盘收起后光标依然在input输入框中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值