//定义移动端类型
function pageStats() {
let u = navigator.userAgent,
app = navigator.appVersion;
let obj = {};
obj.isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器
obj.isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
return obj;
}
//监听手机键盘是否弹出
function keyboard(res,size) {
let deviceType = pageStats();
if (deviceType.isiOS) {
setTimeout(function () {
let aaa = document.body.scrollTop;
console.log(aaa);
console.log(size.scrollTop);
if (aaa !== size.scrollTop) {
} else {
//ios端弹出失败回调
}, msg => {
});
}
console.log(aaa !== size.scrollTop); //true 键盘弹出成功
}, 1000)
}
if (deviceType.isAndroid) {
setTimeout(function () {
let bbb = document.body.clientHeight;
console.log(bbb);
console.log(size.windowHeight);
if (bbb !== size.windowHeight) {
} else {
//安卓端弹出失败回调
}, msg => {
});
}
console.log(bbb !== size.windowHeight); //true 键盘弹出成功
}, 1000)
}
}
//手机号输入框获取焦点是否成功
export function clickInput(res) {
let size = {
windowHeight: res.windowHeight,
scrollTop: res.scrollTop
};
res.hasFocus = document.hasFocus() && document.activeElement === res.$refs.phone;
if (res.hasFocus) {
console.log('input聚焦成功');
keyboard(res,size); //键盘是否弹出
} else { //TODO
//聚焦失败回调
console.log('input聚焦失败');
}
}

//写入一个js文件  在组件中引用并传值

例:

 <input type="tel" ref="phone"  @click="clickInput"/>
<script>
import {clickInput} from '../../assets/js/js文件名'; export default {
data() {
return {
deviceType: null,
scrollTop: 0,
windowHeight: 0
}
},
methods: {
clickInput(){
clickInput(this)
},
getSize () {//TODO 原生JS获取
this.scrollTop = document.body.scrollTop;//document.body.scrollTop() jquery;//用于ios键盘监听
this.windowHeight = document.body.clientHeight;//document.window.offsetHeight() jquery ;//用于Android键盘监听
}, }, mounted() {
this.getSize();
},
}

vue 监听手机键盘是否弹出及input是否聚焦成功的更多相关文章

  1. Android 另类方法监听软键盘的弹出收起事件

    http://www.cnblogs.com/csonezp/p/5065624.html 最近做的项目碰到个问题,a界面是fragment+recyclerview,b界面带个edittext,并且 ...

  2. c# 获取移动硬盘信息、监听移动设备的弹出与插入事件

    原文 http://www.cnblogs.com/coolkiss/p/3328825.html 备忘一下改功能,主要通过WMI来实现,对于监听外接设备的弹出和插入事件一开始使用IntPtr Wnd ...

  3. Android监听自身卸载,弹出用户反馈调查

    1,情景分析 在上上篇博客中我写了一下NDK开发实践项目,使用开源的LAME库转码MP3,作为前面几篇基础博客的加深理解使用的,但是这样的项目用处不大,除了练练NDK功底.这篇博客,我将讲述一下一个各 ...

  4. Android 应用监听自身卸载,弹出用户反馈调查

    监听卸载情景和原理分析 1,情景分析 在上上篇博客中我写了一下NDK开发实践项目,使用开源的LAME库转码MP3,作为前面几篇基础博客的加深理解使用的,但是这样的项目用处不大,除了练练NDK功底.这篇 ...

  5. Android 如何监听返回键,弹出一个退出对话框

    android 如何监听返回键点击事件,并创建一个退出对话框, 防止自己写的应用程序不小心点击退出键而直接退出.自己记录下这个简单的demo,备用. public class BackKeyTest ...

  6. [转]Android 如何监听返回键,弹出一个退出对话框

    本文转自:http://blog.csdn.net/sunnyfans/article/details/8094349 Android 如何监听返回键点击事件,并创建一个退出对话框, 防止自己写的应用 ...

  7. Flex里监听mouseDownOutside事件解决弹出窗口点击空白关闭功能

    其实当用户在使用 PopUpManager 打开的某个组件外部单击时,会从该组件分派一个mouseDownOutside事件 监听该事件就能实现点击空白处关闭窗口的功能 this.addEventLi ...

  8. e807. 设置进程监听对话框的延迟弹出

    By default, the progress monitor delays for a short period before it is displayed. There are two pro ...

  9. 使用Picker的时候,让input输入框使用焦点,手机键盘不弹出

    $("#address").click(function(){ document.activeElement.blur(); })

随机推荐

  1. java web中验证码生成的demo

    首先创建一个CaptailCode类 package com.xiaoqiang.code; import java.awt.*; import java.awt.font.FontRenderCon ...

  2. bzoj1668

    题解: 简单dp 注意最后往后面多取几个 求个最小值 代码: #include<bits/stdc++.h> using namespace std; ; int n,m,f[N],a[N ...

  3. 详解Python的作用域和命名空间

    最近在学习Python,不得不说,Python真的是一门很好用的语言.但是学习的过程中关于变量作用域(scope)的命名空间(namespace)的问题真的把我给搞懵了.在查阅了相关资料之后,觉得自己 ...

  4. R语言预测实战(游浩麟)笔记2

    特征构建技术 特征变换,对原始的某个特征通过一定的规则或映射得到新特征的方法,主要方法包括概念分层.标准化.离散化.函数变换以及深入表达.特征变换主要由人工完成,属于比较基础的特征构建方法. 概念分层 ...

  5. 其他知识点,API

    日期和Math 获取2017-06-10格式的日期 Date.now() //当前时间毫秒数 var dt=new Date() dt.getTime() //毫秒数 dt.getFullYear() ...

  6. springboot-mybatis多数据源以及踩坑之旅

    首先,springboot项目结构如下 springboot配置文件内容如下 动态数据源的配置类如下(必须保证能被ComponentScan扫描到): 1 package com.letzgo.con ...

  7. ansible-play中关于标签tages,handler,notify的使用

    --- - hosts: webser remote_user: root tasks: - name: install httpd package yum: name=httpd tages: in ...

  8. 2017年4月13日用VS写C程序遇到的一些问题

    在网上找到一篇展示计算机浮点数格式的文章,且有C代码如下: #include <stdio.h> #include <stdlib.h> #include <string ...

  9. while循环与 for循环

    import turtle turtle.setup(600,400,0,0) turtle.bgcolor('red') turtle.color('yellow') turtle.fillcolo ...

  10. kaliLinux 安装 telnet

    一.安装xinetd telnetd root@helm:~# apt-get install xinetd telnetd 二.查看服务是否启动状态 说明自启动了 如果没有需要启动xinetd,启动 ...