返回顶部
首页 > 资讯 > 前端开发 > JavaScript >微信小程序如何实现调起键盘性能优化
  • 647
分享到

微信小程序如何实现调起键盘性能优化

2024-04-02 19:04:59 647人浏览 薄情痞子
摘要

这篇文章主要介绍微信小程序如何实现调起键盘性能优化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在小程序中,我们经常有调起键盘的操作场景,但是在不同的场景下解决方案不尽相同,还是需要

这篇文章主要介绍微信小程序如何实现调起键盘性能优化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

小程序中,我们经常有调起键盘的操作场景,但是在不同的场景下解决方案不尽相同,还是需要具体问题具体分析。

需求分析

最近在项目中有一个需求,是从列表页点击评论按钮进入详情页时,在加载完页面后自动调起键盘进入评论状态。从需求来看,我们应该在onReady函数中调起键盘,因为onReady函数是在页面初次渲染完成时被调用。但是在实践中我们发现,对于一些配置不好的手机,其加载页面速度较慢,在onReady函数调用时页面并没有渲染完毕,就会导致placeholder和input组件位置错乱的现象。其本质原因是,onReady生命周期函数并不能在调用时承若已经将页面渲染完成了。(尽管文档中描述是已经完成了。)

之前的操作是在onReady生命周期函数中调起键盘。

this.setData({ focus: true })

发现这个问题后做了相应的延迟处理

setTimeout(() => {
 this.setData({ focus: true })
}, 300)

但这是治标不治本的方法,手机性能好的用户会无谓的等待300毫秒,而手机性能很差的用户等待300毫秒也不一定就能解决这个问题。

解决思路

那么既然小程序并没有提供给我们一个理想的渲染结束后的回调函数,那么我们就换个思路: 使用短轮询来处理,当页面渲染完成后才调起键盘的操作。

既然要使用短轮询,那么我们去轮询什么呢?什么标志代表着页面渲染完成了呢?在这里,我是使用 wx.createSelectorQuery() 方法,它会返回一个SelectorQuery对象实例,在这个实例上调用select方法选择我想要去轮询的节点,在回调函数中判断参数是否为 null 。如果返回了监控的节点信息,那么说明已经渲染完成。这时就可以进行键盘调起操作了。

let timer = setInterval(() => {
 wx.createSelectorQuery().select('#comment-section').boundinGClientRect(rect => {
 if (rect !== null && timer !== null) {
  clearInterval(timer)
  timer = null
  this.setData({ focus: true })
 }
 }).exec()
}, 50)

在此之上,如果我们只粗暴的让 focustrue 并不是个明智的做法。

在调起键盘时默认页面会上推,如果在评论很少的情况下这样的体验并不好。所以需要判断一个高度,超过这个值就上推,没超过就不上推。这个值视实际情况而定。 上推的操作是由input组件的 adjust-position 属性决定,为true则上推,否则则不上推。这时回调返回的参数中的节点信息就可以派上用场了。

// 在this.setData({ focus: true })前对节点高度进行判断
if (rect.height < 500) this.setData({ push: false })
else this.setData({ push: true })

onBlur函数问题

在实际的操作中,我们发现在键盘被调起后会有概又自动收回。经过排查发现时onBlur函数的问题,在onBlur函数中,我们手动的设置 focusfalse ,但其实并不需要这一步操作,反而带来了副作用。在我们去除了这部分代码后,键盘自动收起的问题得到了解决。

封装起来

虽然我们完成了这次任务的需求,但是显而易见的,这样的任务在未来肯定还会再次出现。所以机智的我们应该赶快把整套流程封装起来,以便下次直接调用。

微信小程序如何实现调起键盘性能优化

那么这时我们使用的方式就是这样的:

const Util = require("xxx") // 引入封装的库


onReady: function () {
 Util.onTotalReady('#comment-section', 50, rect => {
 if (rect.bottom < 500) this.setData({ push: false })
 else this.setData({ push: true }}
 this.setData({ focus: true })
 })
}

以上是“微信小程序如何实现调起键盘性能优化”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网JavaScript频道!

--结束END--

本文标题: 微信小程序如何实现调起键盘性能优化

本文链接: https://lsjlt.com/news/70795.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 微信小程序如何实现调起键盘性能优化
    这篇文章主要介绍微信小程序如何实现调起键盘性能优化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在小程序中,我们经常有调起键盘的操作场景,但是在不同的场景下解决方案不尽相同,还是需要...
    99+
    2024-04-02
  • 微信小程序调起键盘性能优化的方法
    本篇内容主要讲解“微信小程序调起键盘性能优化的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序调起键盘性能优化的方法”吧!需求分析最近在项目中有一个需求,是从列表页点击评论按钮进入详...
    99+
    2023-06-26
  • 微信小程序性能如何优化
    这篇文章主要介绍了微信小程序性能如何优化的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序性能如何优化文章都会有所收获,下面我们一起来看看吧。为什么要做性能优化?一切性能优化都是为了体验优化1. 使用小程...
    99+
    2023-06-26
  • 微信小程序如何实现车牌键盘
    这篇文章主要介绍“微信小程序如何实现车牌键盘”,在日常操作中,相信很多人在微信小程序如何实现车牌键盘问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序如何实现车牌键盘”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-02
  • 微信小程序实现车牌键盘
    本文实例为大家分享了微信小程序实现车牌键盘的具体代码,供大家参考,具体内容如下 一、效果图 二、代码 plateNumKeyboard.wxml <view class="p...
    99+
    2024-04-02
  • 微信小程序中怎么优化性能
    微信小程序的性能优化可以从多个方面入手,以下是一些优化性能的方法: 减少页面的渲染元素和层数:尽量减少页面中的元素数量和嵌套层数...
    99+
    2024-04-09
    微信小程序
  • 如何优化微信小程序
    小编给大家分享一下如何优化微信小程序,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!避免使用本地大图片、大资源文件请避免在小程序的...
    99+
    2024-04-02
  • 微信小程序如何实现getUserInfo回调
    这篇文章给大家分享的是有关微信小程序如何实现getUserInfo回调的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。微信小程序-getUserInfo回调的实例详解前言:这里就不...
    99+
    2024-04-02
  • 微信小程序如何实现幸运大转盘功能
    这篇文章给大家分享的是有关微信小程序如何实现幸运大转盘功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、项目展示幸运大转盘是一个简单的抽奖小程序参与用户点击抽奖便可抽取轮盘的奖品二、抽奖页抽奖页是一个大轮盘和...
    99+
    2023-06-29
  • 微信小程序渲染性能调优的示例分析
    小编给大家分享一下微信小程序渲染性能调优的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!小程序的双线程架构与传统的浏览器Web页面最大区别在于,小程序的是基于 双线程 模型的,在这...
    99+
    2024-04-02
  • 小程序发起微信支付功能怎么实现
    这篇文章主要讲解了“小程序发起微信支付功能怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“小程序发起微信支付功能怎么实现”吧!wx.requestPayment(OBJECT)发起微信...
    99+
    2023-06-26
  • 微信小程序如何调试
    本篇内容主要讲解“微信小程序如何调试”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序如何调试”吧!  调试工具  调试工具分为 7 大功能模块:Wxml、Console、Sources、...
    99+
    2023-06-26
  • 微信小程序如何实现转发功能
    这篇文章将为大家详细讲解有关微信小程序如何实现转发功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。微信小程序 转发功能的实现1.当用户将小程序转发到任一群聊之后,可以获...
    99+
    2024-04-02
  • 微信小程序如何实现搜索功能
    这篇文章给大家分享的是有关微信小程序如何实现搜索功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。开发需求微信小程序已经是非常火了,而且学习也比较容易,但是对于初学者来说还是一件...
    99+
    2024-04-02
  • 微信小程序转发功能如何实现
    这篇文章主要介绍“微信小程序转发功能如何实现”,在日常操作中,相信很多人在微信小程序转发功能如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序转发功能如何实现”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-26
  • 微信小程序支付功能如何实现
    这篇文章主要介绍了微信小程序支付功能如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序支付功能如何实现文章都会有所收获,下面我们一起来看看吧。微信小程序支付功能开发文档如下:小程序端,保留大部分的...
    99+
    2023-06-26
  • 微信小程序实现一键登录
    本文实例为大家分享了微信小程序实现手机号登录的具体代码,供大家参考,具体内容如下 项目需求 点击按钮获取用户电话号码绑定到后台,登录。 实现思路 1、使用微信开放功能为获取用户手机...
    99+
    2024-04-02
  • 如何优化PHP开发的微信小程序?
    如何优化PHP开发的微信小程序?随着微信小程序的普及,越来越多的开发者开始关注如何优化微信小程序的开发。在开发中,PHP是一种常用的后端语言,它提供了丰富的功能和严密的安全性。下面将介绍一些优化的方法和具体代码示例,以帮助开发者更好地使用P...
    99+
    2023-10-27
    优化 微信小程序 PHP开发
  • 微信小程序如何实现计算器小功能
    这篇文章主要介绍微信小程序如何实现计算器小功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!微信小程序现在越来越火爆了,我也看到很多在校大学生都在自学了,那些专门从事APP开发,网页开发的工作者更是看到了小程序的前景...
    99+
    2023-06-20
  • 微信小程序如何实现slider
    这篇文章给大家分享的是有关微信小程序如何实现slider的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实现效果图:滑动选择器属性名类型默认值说明minNumber0最小值maxN...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作