uni-app h5+打包的项目中type为tel的input在输入完手机号后过个几秒就会闪退
uni-app h5+打包的项目中type为tel的input在输入完手机号后过个几秒就会闪退
异常现象:tel类型的input在输入完手机号码后过几秒或十几秒App会闪退
这样写会闪退
<input type="tel" v-model="form.mobile" placeholder="请输入手机号" >
这样写不会
<input type="number" v-model="form.mobile" placeholder="请输入手机号" >
区别只是type不同
机型:华为p30 pro,emui11(android 10)
已知 mate 30 xs、红米Note 4X ( android 7.1 ) 也会闪退,别的安卓机型不清楚
除闪退之外,键盘上方还会出现奇怪的东西
同一个项目,用标准基座运行会闪退,用x5打包的自定义基座运行不会闪退
复现
新建一个h5+项目,编辑index.html,代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title></title>
</head>
<body>
<div id="app">
<input type="tel" placeholder="请输入手机号码" />
<input type="password" placeholder="请输入密码" />
</div>
</body>
</html>
附件里有闪退的整个过程
更多关于uni-app h5+打包的项目中type为tel的input在输入完手机号后过个几秒就会闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html
用HX3.1.4已修复
更多关于uni-app h5+打包的项目中type为tel的input在输入完手机号后过个几秒就会闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html
因为虚拟机概率比较大,我一度怀疑是X86的问题,正在测试编译x86版对比
我也遇到类似闪退问题,很随机,有时也是input,目前没有找到100%复现的方式
我这个是百分之百复现
回复 弄月: 有人说是uni.$on没关,你有一直开着吗?
3.1.2,云打包,安心包,真机调试都一样,一次不复现的话退出app重来几次就出现了,在tel的input输入手机号码,完成输入,等待,它就会闪退了
我修改了问题,把复现的代码放上来了,还上传了录屏
这是一个已知的Android系统WebView兼容性问题,主要出现在某些华为和小米机型上。当使用type="tel"的input元素时,系统自带的WebView会触发闪退。
解决方案有以下几种:
- 使用type="number"替代type=“tel”,虽然键盘样式会有所不同,但功能基本一致:
<input type="number" pattern="[0-9]*" v-model="form.mobile">
- 使用X5内核打包,X5内核对此问题有更好的兼容性:
// manifest.json
{
"app-plus": {
"kernel": {
"ios": "WKWebView",
"android": "X5"
}
}
}
- 或者强制使用X5内核:
// 在main.js中
if(plus.os.name === 'Android'){
plus.webview.defaultHardwareAccelerated();
}