热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于Swiper的坑——只有3.3.1的非压缩版正常,非常奇怪

前一段时间,为了遵守《高性能网站建设指南》的约定——压缩JavaScript,我把swiper的版本由swiper.jquery.js改成了swiper

前一段时间,为了遵守《高性能网站建设指南》的约定——压缩Javascript,我把swiper的版本由swiper.jquery.js改成了swiper.jquery.min.js,结果奇怪的事情发生了——安卓版的微信加载网页超级慢,而非微信版的浏览器访问网站均正常,这个问题,我还特意在网络上搜了搜,还真有人遇到这样的问题。但解决办法没有。

这就奇了怪了,最初,我的怀疑对象肯定不是swiper,我怀疑是微信安卓版的签名问题。因为在使用 https://github.com/wechat-group/weixin-java-tools 进行签名的时候有这样一段代码:

@Overridepublic String getJsapiTicket(boolean forceRefresh) throws WxErrorException {Lock lock = this.getWxMpConfigStorage().getJsapiTicketLock();try {lock.lock();if (forceRefresh) {this.getWxMpConfigStorage().expireJsapiTicket();}if (this.getWxMpConfigStorage().isJsapiTicketExpired()) {String responseContent = execute(SimpleGetRequestExecutor.create(this), WxMpService.GET_JSAPI_TICKET_URL, null);JsonElement tmpJsonElement = JSON_PARSER.parse(responseContent);JsonObject tmpJsonObject = tmpJsonElement.getAsJsonObject();String jsapiTicket = tmpJsonObject.get("ticket").getAsString();int expiresInSeconds = tmpJsonObject.get("expires_in").getAsInt();this.getWxMpConfigStorage().updateJsapiTicket(jsapiTicket, expiresInSeconds);}} finally {lock.unlock();}return this.getWxMpConfigStorage().getJsapiTicket();}

怀疑这段代码的原因就是它有一个lock,但时候证明原因不在于此。这个方法请求得响应结果特别的快。

后来,折腾了一天,实在是没招了,就只能回滚项目源码的版本,一次次试错,最后在临近晚上7点的时候才把问题确定在swiper上。

当时页面引用的swiper是这样的:

"https://cdn.bootcss.com/Swiper/3.3.1/js/swiper.jquery.min.js">script>

最初代码部署在阿里云的服务器上时,我手机是iPhone6,微信订阅号访问的时候速度特别正常。但是老板的手机是华为的安卓,微信访问慢得要人崩溃,这期间我一直认为不是代码的问题,而是他手机的问题,最后老板被客户逼急了,还刷了机(悲催的是数据还丢了),结果访问速度依然很慢。后来,他就来逼我,这™没有一点错误信息啊,我手机正常啊,非微信的安卓浏览器也访问正常啊。代码绝对是没有问题的。

后来没办法,别人的安卓手机微信访问网站也是慢,问题总要解决啊。

我必须要在本地重现这个问题了,使用微信提供的微信web开发者工具没有问题,Google Chrome浏览器没有问题。

然后开启ngrok,奇怪的现象发生了,我的手机iPhone6:

这里写图片描述

微信浏览器的进度条一直停留在大概这个位置!

现在我确信代码是在某个地方出现了bug!,确定无疑了!

回滚历史版本是必须的,这是一项重复性特别高的工作,一行一行代码的瞧啊,就像是在拾麦子一样。最后,问题终于找到是在swiper的应用上面!!!!!!!!!

把压缩版换成开发版:

"https://cdn.bootcss.com/Swiper/3.3.1/js/swiper.jquery.js">script>

这个时候,访问竟然正常了!!!!!!!!!!!!!!神奇的swiper!!!!!!!!!!!!

把swiper切换成3.4.2的开发版还是压缩版,都依然有问题。

"https://cdn.bootcss.com/Swiper/3.4.2/js/swiper.jquery.js">script>

是不是使用swiper的时候出错了呢?
这问题我也考虑过,试验过。

new Swiper('.recom-container', {pagination : '.recom-pagination',lazyLoading : true,slidesPerView : 1,paginationClickable : true,
});
// 热点新闻
new Swiper('.index-new-list', {autoplay : 3000,direction : 'vertical',loop : true,paginationClickable : true
});// 导航
new Swiper('.index-nav', {scrollbarHide : true,slidesPerView : 'auto',centeredSlides : false,grabCursor : true
});

使用方法应该是没有问题的,应该就是swiper版本的问题,当然这问题的发生也特别的奇怪,它阻碍页面的呈现。并且看浏览器的脸色。

问题的结果,也只能是说swiper在版本更新的时候忽略了某些浏览器的兼容,导致内部的某些地方阻塞。

解决的方案,其实也很简单,只能将就使用3.3.1的开发版。也就是

"https://cdn.bootcss.com/Swiper/3.3.1/js/swiper.jquery.js">script>



如果你遇到和我类似的问题,还希望和你进行沟通!



推荐阅读
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • uniapp开发H5解决跨域问题的两种代理方法
    本文介绍了uniapp开发H5解决跨域问题的两种代理方法,分别是在manifest.json文件和vue.config.js文件中设置代理。通过设置代理根域名和配置路径别名,可以实现H5页面的跨域访问。同时还介绍了如何开启内网穿透,让外网的人可以访问到本地调试的H5页面。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • springboot项目引入jquery浏览器报404错误的解决办法
    本文介绍了在springboot项目中引入jquery时,可能会出现浏览器报404错误的问题,并提供了解决办法。问题可能是由于将jquery.js文件复制粘贴到错误的目录导致的,解决办法是将文件复制粘贴到正确的目录下。如果问题仍然存在,可能是其他原因导致的。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
author-avatar
开心果娟娟
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有