IOS微信端软键盘收起后界面按钮失效问题
问题描述:
1.在vue里封装了一个confirm的弹窗(即如下一个弹窗)
2.发现在IOS微信客户端中打开后,当需要在表单中输入内容的时候,很自然的点击了键盘右上角的【完成】按钮
3.啊~~~,惊人的发现惊人弹窗里所有的按钮全部失效了,一点反应都没有
4.但是,发现只要不是使用的封装好confirm的弹窗,而是直接写入到页面中内容(即使用vue slot这个的时候就不会出现这个情况)
5.于是乎,我开始查阅度娘,最终在 https://www.jianshu.com/p/ba9cfaeef88d 找到了解决方法。
综合下解决方案:
/**
* Js修復方法
* @param {String} el 需要修复元素id(#)、class(.)或html标签字符串
* @param {Boolean} isSelect 需要修复的元素对象是否为“select”标签
*/
function jsIosWechatPopFormFix(el, isSelect) {
if (!el) return false;
var resEl;
var elSelector = el.charAt(0);
var elString = el.slice(1);
var listenEvent = isSelect ? 'change' : 'blur';
switch (elSelector) {
case '.': resEl = document.getElementsByClassName(elString);
break;
case '#': resEl = document.getElementById(elString);
break;
default: resEl = document.getElementsByName(el);
}
resEl.addEventListener(listenEvent, function () {
window.scroll(0, 0);
})
}
jsIosWechatPopFormFix('input');
jsIosWechatPopFormFix('textarea');
jsIosWechatPopFormFix('select', true);
/**
* Jq修復方法
* @param {String} el 需要修复元素id(#)、class(.)或html标签字符串
* @param {Boolean} isSelect 需要修复的元素对象是否为“select”标签
*/
function jqIosWechatPopFormFix(el, isSelect) {
if (!el) return false;
var resEl = $(el);
var listenEvent = isSelect ? 'change' : 'blur';
resEl.on(listenEvent, function () {
window.scroll(0, 0);
});
}
jqIosWechatPopFormFix('input');
jqIosWechatPopFormFix('textarea');
jqIosWechatPopFormFix('select', true);
<!--Vue修復方法-->
<textarea placeholder="请输入您取消的原因" @blur="window.scroll(0,0)"></textarea>
<input type="text" placeholder="请输入您取消的原因" @blur="window.scroll(0,0)" />
<select @change="window.scroll(0,0)">
<option>1</option>
<option>2</option>
</select> <!--Html or Vue通用修復方法-->
<textarea placeholder="请输入您取消的原因" onblur="window.scroll(0,0)"></textarea>
<input type="text" placeholder="请输入您取消的原因" onblur="window.scroll(0,0)" />
<select onchange="window.scroll(0,0)">
<option>1</option>
<option>2</option>
</select>
ok!完美解决!
IOS微信端软键盘收起后界面按钮失效问题的更多相关文章
- web中ios移动端软键盘收起后,页面内容留白不下滑
微信里面打开web页面,在ios软键盘收起时,页面键盘位置的内容留白,如下图 这个问题纠结了很久,然后请教了老大(威哥),看到页面老大给出的方案就是代码改变滚动条的位置. 这里就监听键盘收起的事件,来 ...
- Ionic3学习笔记(九)关于 Android 端软键盘弹出后界面被压缩的问题
本文为原创文章,转载请标明出处 今天做了一个如下图所示的页面. iOS 端毫无 bug,Android 端却出现了问题.当软键盘弹出后,Android 端的 tabs 移到了软键盘的上面,再仔细一看, ...
- ios微信打开网页键盘弹起后页面上滑,导致弹框里的按钮响应区域错位
input失去焦点,页面被顶起没有还原,所以就有以下的方法来处理 $("input").blur(function(){ setTimeout(() => { co ...
- h5 ios移动端,键盘收起以后页面不归位
$('input,textarea').on('blur',function(){ window.scroll(0,0); }); $('select').on('change',function() ...
- 解决微信H5页面软键盘弹起后页面下方留白的问题(iOS端)
前言:微信H5项目,ios端出现了软键盘输完隐藏后页面不会回弹,下方会有一大块留白 最近微信和ios都有版本升级,不知道是哪边升级造成的,但是经过测试,软键盘收起后,再滚动一下页面,下面的留白就会消失 ...
- IOS微信6.7.4输入框失去焦点,软键盘关闭后,被撑起的页面无法回退到原来正常的位置
近期在开发微信H5页面时碰到这个问题,如图,软键盘弹起后,若原输入框被遮挡,页面整体将会上移,然而当输入框失焦,软键盘收起后,页面未恢复,这也是ios的微信版本更新6.7.4之后才遇到的bug. 目前 ...
- H5微信页面开发 IOS系统 input输入框失去焦点,软键盘关闭后,被撑起的页面无法回退到原来正常的位置,导致弹框里的按钮响应区域错位
H5微信页面开发,软键盘弹起后,若原输入框被遮挡,页面整体将会上移,然而当输入框失焦,软键盘收起后,页面未恢复,导致弹框里的按钮响应区域错位. 解决方案:给输入框(或select选择框)添加失去焦点的 ...
- input输入框失去焦点,软键盘关闭后,滚动的页面无法恢复到原来位置
H5微信页面开发,软键盘弹起后,若原输入框被遮挡,页面整体将会上移,然而当输入框失焦,软键盘收起后,页面未恢复,导致弹框里的按钮响应区域错位. 解决方案:给输入框(或select选择框)添加失去焦点的 ...
- html5音频audio对象处理以及ios微信端自动播放和息屏后唤醒的判断---可供参考(功能都完整实现了,只是细节还没处理的很好)
// html模版中的 此处结合了weui样式整合的微信手机端片段代码(不可直接粘贴复制进行使用)里面含有一些php的写法,可直接略过..###重点参考js代码### <div> < ...
随机推荐
- am335x mux配置
/**************************************************************** * am335x mux配置 * * am335x的引脚复寄存器是C ...
- 奇怪的bug:javascript不执行
背景:有人想要个简单的js效果,点击某个菜单,其他菜单收起. 说了下思路,结果~~ 只好直接写了一个,代码如下: <!DOCTYPE html> <html> <head ...
- 第二百九十三,Memcached缓存
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...
- 在 C++ 程序中只使用 const 常量而不使用宏常量
在 C++ 程序中只使用 const 常量而不使用宏常量,即 const 常量完 全取代宏常量. #include <iostream> /* run this program using ...
- jquery -- checkbox选中无选中状态
最近在工作中使用jquery操作checkbox,使用下面方法进行全选.反选: var ischecked=allCheckObj.is(':checked'); ischecked?checksOb ...
- dom元素改变监听
function domChange(domId, callback) { // select the target node var target = document.getElementById ...
- Davlik虚拟机
过几天得去面试,感觉原来做的东西都忘了. 有点累,无意看了下二师兄的小论文,想来原先自己也参与过一点点,所以记录下: Dalvik虚拟机中共有3种解释器,分别时SWITCH_INTERP,THREAD ...
- ubuntu 使用蓝牙和minicom
Ubuntu本身一般都带了USB转串口的驱动. 1. 首先确认系统支持USBSerial,输入以下命令: lsmod | grep usbserial 2. 接上USB串口线,看看系统是否可 ...
- The content of element type "struts" must match "((package|include|bean|constant)*,unknown-handler-s
<struts> <!-- 配置为开发模式 --> <constant name="struts.devMode" value="t ...
- AsyncTask应用示例
package com.example.testdemo; import java.io.ByteArrayOutputStream; import java.io.IOException; impo ...