js怎么监听移动端键盘展开事件

JavaScript013

js怎么监听移动端键盘展开事件,第1张

目的 : 监听移动端键盘展开事件

工具 : 移动端, js

思路 : 可以通过监听窗口大小的改变来实现,当端键盘展开时,窗口的大小发生改变,依据此基础进行判断.

js 移动端关于页面布局,如果底部有position:fixed的盒子,又有input,当软键盘弹出收起都会影响页面布局。这时候Android可以监听resize事件,代码如下,而iOS没有相关事件。

方法一实现代码:

//获取当前页面高度

var winHeight = $(window).height()   

$(window).resize(function(){

   var thisHeight=$(this).height()

    if(winHeight - thisHeight >50){

        //窗口发生改变(大),故此时键盘弹出

         //当软键盘弹出,在这里面操作

    }else{

        //窗口发生改变(小),故此时键盘收起

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

    }

})

方法二:监控键盘

监控的方式其实筛选下来也不过两种:

① 时钟setInterval不停监控

② 系统级别的监控,比如键盘出现时候通知window一个事件,但是很遗憾现在还没有这个事件,但是这个事件等于

input类元素获取焦点 == 弹出虚拟键盘

input类元素失去焦点 == 收起虚拟键盘

但是我们前面已经说过,上面的原则不一定可靠,所以该种方案也未必可靠了

基于系统监控这点,我们还可以监控resize事件或者scroll事件,但是经过我的测试,setInterval表现比较好.于是,我们简单写一段代码,可靠是否满足需求:

window.alert = function (msg) {

  $('body').append('<div>' + msg + '</div>')

}

function fixedWatch(el) {

  if(document.activeElement.nodeName == 'INPUT'){

    el.css('position', 'static')

  } else {

    el.css('position', 'fixed')

  }

}

setInterval(function () {

  fixedWatch($('#headerview header'))

}, 500)

如上:移动端键盘展开事件即可被监听.

window对象有两个方法来实现定时功能,即

window.setTimeout()

,用来在制定时间后运行

window.setInterval()

,用来指定每隔一段时间重复运行

以及window.clearInterval()用来清除定时

用按钮的

onmousedown

,

onmouseup

,

onclick

事件组合来实现以下功能

代码如下

<script>

var

plusview

var

minusview

var

a=0

function

hello(){

document.getElementById("resultspan").innerHTML="5秒钟后显示我!!!长案按钮显示效果"

}

window.setTimeout("hello()",5000)

function

viewpluslong()

{

plusview=window.setInterval("viewplus()",100)

}

function

stopplus()

{

window.clearInterval(plusview)

}

function

viewminuslong()

{

minusview=window.setInterval("viewminus()",100)

}

function

stopminus()

{

window.clearInterval(minusview)

}

function

viewplus()

{

a=a+1

document.getElementById("resultspan").innerHTML=a.toString()

}

function

viewminus()

{

a=a-1

document.getElementById("resultspan").innerHTML=a.toString()}

</script>

<html>

<input

id="buttondown"

type="button"

value="<<

-减

"

onclick="viewminus()"

onmousedown="viewminuslong()"

onmouseup="stopminus()"

/>

<input

id="buttonup"

type="button"

value="加

+

>>"

onclick="viewplus()"

onmousedown="viewpluslong()"

onmouseup="stopplus()"

/>

(按住按钮不放可连续缩放)

</br>

result

is

:

<span

id="resultspan"

style="color:red"></span>

</html>