情况一、vue项目在谷歌浏览器上出现崩溃

一、问题描述:

最近vue项目开发时,在chrome浏览器页面过一段时间一直提示:页面崩溃:喔唷 崩溃了

项目开发的时候,测试同事反馈页面会出现“喔唷 崩溃了”,打开控制台进行相同操作后发现控制台会频繁出现一个警告:

Forced reflow while executing JavaScript took <N>ms

二、问题排查

以前也看到过类似警告,不过没有重视。警告内容很明显,就是执行JS代码的时候强制页面元素重排,页面重排很消耗性能,reflow软熔焊接; 文档重整,页面重排;消耗了几十ms。
排查相关代码后发现在某个组件中,使用了一个v-if频繁增删DOM节点
相关代码如下:
template部分

<template><div v-if="detail.id">xxxx</div>
</template>

JS部分:

export default {props: {detailId,},data() {return {detail: {id: xxx,}}},watch: {detailId: {immediate: true,handler () {this.getDetail()}}},methods: {getDetail: {this.detail = {}axios.get('xxx', this.detailId).then(res => {// xxxthis.detail = res.data.data})}}
}

本来是想在detailId改变的时候,重新获取detail,但是在获取的过程中不想显示遗留数据,所以先将detail清空了。猜测正是这里导致了浏览器移除DOM节点又插入DOM节点,然后就有了上述警告和崩溃页面。
我这里修改detailId是通过用户点击不同的元素触发的,为了验证猜测,直接在父组件用一个setInterval函数模拟用户操作:

// ...
mounted () {let time = 0let detailList = [xxx, xxx]setInteval(() => {console.log(time, 'setInteval')this.detailId = this.detailId === detailList[0] ? detailList[1] : detailList[0]}, 200)
}

刷新页面后发现,当打印的time到100次(也就是模拟了用户切换100次, v-if也生效100次)左右,页面就会崩溃。
果然就是这里v-if导致的问题,试了多次均是如此,看来问题也不是那么“偶然”。
问题定位到了, 那就很好解决了!

三、解决方案:

因为我这里只是想不显示遗留数据,所以其实只用把旧数据隐藏起来就行了,所以解决办法还是很多的。这里在请求过程中我给要隐藏的dom加了一个class,然后为这个class设置opacity(不透明度)为0:

<div :class="{ hide: !detail.id }">xxx
<div>
.hideopacity 0

再用之前的代码测试,再也没有出现警告与页面崩溃,到此解决了以上问题。

四、反思
本文虽然解决了当前浏览器崩溃的问题,但是因为时间有限,并没有深究:
为什么这种情况下v-if会导致回流耗时异常(为什么一般情况下的v-if并不会有警告)?
为什么JS操作导致回流超时多次后会导致浏览器崩溃?
一点思考:当一个问题重复出现的时候,就应该去尝试重现它,并且可以适当采用代码模拟人为操作,会大大提升效率。

情况二、谷歌浏览器更新了,发现网页全部打不开了。都显示:“喔唷 崩溃啦”。

  • 点击任何按钮,例如,设置,选项,历史记录等,也“喔唷 崩溃啦”
  • 卸载重装也无效
  • 解决方案

  • 找到 路径C:\Windows\System32\drivers\bd0001.sys
  • 删除(没有强制删除工具重命名也行,随便改个名字)
  • 重启电脑
  • chrome就正常了
  • 原因

    可能是注册列表被一些卫士类优化工具或杀毒软件优化了

最后为了方便大家的沟通与交流请加QQ群: 625787746

请进QQ群交流:【IT博客技术分享群①】:https://jq.qq.com/?_wv=1027&k=DceI0140

Vue项目 在chrome页面崩溃:喔唷 崩溃了(总结)相关推荐

  1. 怎么改vue项目的标题_如何动态修改Vue项目中的页面title

    前言:在项目中,我们有时候需要修改Vue项目中的页面title. 方法有两种,①如果需要动态设置页面的title,可以直接使用document.title:②可以使用router的beforeEach ...

  2. vue项目某个APP页面实现手机物理按键返回、路由拦截、localStorage存取参数

    vue项目某个APP页面实现手机物理按键返回.路由拦截.localStorage存取参数 最近做个功能:在web系统里面嵌套两个app页面,当然APP页面在web系统上没有路由跳转,而是从另外系统扫码 ...

  3. vue 项目中H5页面,实现大转盘活动

    vue 项目中H5页面,实现大转盘活动 <template><div class="about"><div id="app"> ...

  4. vue项目keepAlive保持页面状态(详情页返回列表页不刷新)

    vue项目keepAlive保持页面状态(详情页返回列表页不刷新) 在vue项目中,存在从列表页跳转到详情页查看,而后又返回列表页的操作时,如果列表过长,我们往往希望从详情页返回列表页时,列表页能留在 ...

  5. VUE项目部署Tomcat页面刷新404问题解决方法

    问题描述 vue项目在本地开发环境运行正常,打包部署至线上Tomcat服务后,不刷新浏览器时工作正常,一刷新浏览器就报404错误,错误截图如下: 错误描述:404,源服务器未能找到目标资源的表示或者是 ...

  6. list vue 删除后页面渲染_浅谈Vue项目实战(页面渲染+事件绑定)

    页面渲染 vue是不会去操作dom节点,是有数据去操控节点,在js文件数据都在data里 *js代码片* export default { data() { return { formInline: ...

  7. vue项目实现部分页面使用rem_vue 中使用rem布局

    要想移动端适配 并使用 rem  您需要先看这篇文章,配置好less ➡️ 在vue 中使用 less,就可以使用rem了 如果项目已经开发的差不多了,没有用到rem 又要使用rem,您用这招. po ...

  8. php 绝对刷新,vue项目线上页面刷新报404 解决方法(绝对有用)

    在上线vue开发的前端网页上线后,刷新页面报404错误,因为网页上显示的是静态绝对路径,实际上服务器上是没有改路径的所以刷新汇报错误. 1.vue框架中解决404 vue router  mode 默 ...

  9. vue项目中-打印页面中部分区域的内容

    在项目的开发中遇到了点击打印,需要打印页面中部分的表格,实现方式如下 首先将需要打印的内容包裹起来:例如 <div id="subOutputRank-print">& ...

  10. vue项目中数据更新页面不刷新问题

    这种情况可以分为很多种.但是究其原因就是vue3.0以下版本无法监听对象(包括数组以及对象)的变化,当数据发生变化的时候vue的刷新机制是监听不到数据变化的,所以需要我们在实际应用过程中通过各种处理来 ...

最新文章

  1. eclipse xsd 生成java,Generate XSD from JAXB Java Classes using Eclipse
  2. NOSQL系列-memcached安装管理与repcached高可用性
  3. [jqpolt] formatString 日期格式化列表
  4. linux shell 从变量中按指定字符切割字符串
  5. 《 Python树莓派编程》——第1章 树莓派简介 第1.1 树莓派的历史
  6. 美团搜索-搜索引擎关键字智能提示的一种实现[转]
  7. php laravel 空白,php – Laravel View Make返回空白页面
  8. 数据结构和算法1 稀疏数组
  9. 什么是数据治理的方法论
  10. tomcat出现5个using_婚姻出现危机的8个迹象,日常5个细节促进夫妻情感
  11. 帆软9.0动态列之解决动态列的分组统计问题
  12. python教育版_pycharm教育版下载
  13. 【FPGA】基于bt1120时序设计实现棋盘格横纵向灰阶图数据输出
  14. 双机互联攻略之超强、完全篇!
  15. qbit linux网页ui不能设置中文,BT下载教程 篇四:qbittorrent 设置补充说明及更换WEB UI...
  16. snes9x 源码_仅64kb的SNES游戏如何制作优美的音乐
  17. 地铁三号线 - 搬家故事
  18. 让程序在服务器后台持续运行
  19. e换电受邀参加上海电动自行车集中充电设备展示推荐会
  20. 2005考研阅读Text1翻译

热门文章

  1. buildSrc使用,依赖统一管理
  2. Windows + Ubuntu双系统开机选择界面美化
  3. openwrt反攻局域网arp攻击shell脚本
  4. 计算机专业的在职研究生怎么样,计算机专业在职研究生难度大吗?
  5. 淘宝店铺店名起、分类如何定【太原网络营销师】教你
  6. STM32笔记之 PWM(脉宽调制)
  7. 前端vs图片:2 图片深度、图片分类等基本信息
  8. 蚂蚁金服收购印度外卖APP?
  9. mysql数据库now_MySQL NOW() 函数
  10. 加强版CycleGAN!贾佳亚等提出卡通图与真实人脸转换模型,看女神突破次元壁长啥样...