当前位置: 首页 > wzjs >正文

动态网站开发试题及答案网络销售好做吗

动态网站开发试题及答案,网络销售好做吗,厦门网站制作网站建设收费,wordpress漂浮前端资源加载失败后的重试 .前端引用资源时出现了资源加载失败(这里针对的是路径引用异常或者url解析错误时) 解决这个问题首先要明确一下几个步骤 1.什么情况或者什么时候重试 2.如何重试 3.重试过程中的边界处理 这里引入里三个测试脚本,分别加载里三个不同的脚…

前端资源加载失败后的重试

.前端引用资源时出现了资源加载失败(这里针对的是路径引用异常或者url解析错误时)
解决这个问题首先要明确一下几个步骤

1.什么情况或者什么时候重试
2.如何重试

3.重试过程中的边界处理

这里引入里三个测试脚本,分别加载里三个不同的脚本其中1,3是正常输出,2的内部输出异常。但目前三个进本的加载时正常的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时我们手动修改一个引用,让其出现加载异常这里修改1的引用地址
在这里插入图片描述
这里控制台目前捕获到了两种错误一种是引用地址引起的资源加载错误,一种是引用内部的错误;
前面我们提到过我们需要判断什么时候重试
这里我们针对的是资源加载异常也就是引用地址问题引起的
所以我们需要在一开始就先进行错误类型的判断。
因为我们浏览器加载的这些引用都属于同步任务,顺序进行的所以我们注册的时间应该放大最开始的位置

在这里插入图片描述
在这里插入图片描述
此时我们发现并没打印这个捕获,这是因为‘error’这类事件是不会冒泡的,当然你在监听这个窗口时就不会有捕获,所以脚本加载出现了异常但是由于不能冒泡到捕获内部所以无法得到监听,这个时候我们就需要开启冒泡,让这个监听发生在捕获期间
在这里插入图片描述
在这里插入图片描述
由于监听错误的事件针对的是整个窗口所有的错误当我们脚本内部,及引用都错误的时候这里会出现两次打印
在这里插入图片描述
在这里插入图片描述
可以利用监听事件内部提供的返回参数进行进一步处理
在这里插入图片描述
在这里插入图片描述
这里我们只处理类型是加载错误导致的,事件异常的我们不做处理,这样我们就得到了一个基本的加载错误类型的获取
在这里插入图片描述
在这里插入图片描述
借助返回参数内部的e.target 我们可以获取到脚本类型错误目标进一步缩小范围
在这里插入图片描述
重试的逻辑遵循上述前期获取的类型约束进行

<script>//可重试的资源列表const dmmains=['1121212.com','122323411.com','localhost:8082']//创建一个重试的映射关系,用来检测是重试过程失败还是默认资源失败const handleRetry={};window.addEventListener('error',(e)=>{if(e instanceof ErrorEvent || e.target.tagName!=='SCRIPT'){return}//获取当前资源的路径let basePath=e.target.src;//重新创建一个发送的url对象const urls=new URL(basePath);//根据获取的url对象获取基础的路径名称建立对应关系const keys = urls.pathname//判断当前的映射是否存在,用来记录是否是第一重试if(!(keys in handleRetry)){handleRetry[keys] = 0}//用来记录当前的映射地址的下标,方便在下次进行重试时重新进行地址切换const index = handleRetry[keys]//边界处理判断当前重试是否已经达到资源列表的最大值结束重试if(index>dmmains.length){return}const hosts= dmmains[index];//地址计数++ 进行下一步地址选取handleRetry[keys]++urls.host = hosts;//为了保证加载的顺序依旧这里需要人为阻塞一下页面加载线程,保证重试的脚本重试后加载顺序依旧与原来一直,// 这里针对特定环境,如果引用没有前后关系这里可以省略// document.write(`\<script src=${urls}><\/script>`) //特别注意该方式只针对特殊环境要求,因为会有性能问题,阻塞主线程加载console.log('当前重试的地址',hosts)//手动创建一个脚本元素,将当前重试地址替换进行重试const scripts=document.createElement('script');scripts.src = urls.toString()//将当前异常的脚本地址进行重试替换,将新重试的脚本放到异常脚本之前e.target.parentElement.insertBefore(scripts,e.target)//将重试结束的元素从页面中清除e.target.remove()},true)</script>

根据我们的资源列表进行了两次重试后正常加载了资源,但是我们发现结果返回的资源列表内打印的顺序不对,1重试后到了最后,针对特殊资源加载的要求如果需要预先加载某些特定资源时我们需要调整该顺序加载(但是资源加载的逻辑是同步的,我们需要人为阻塞线程让重试资源进行优先重试加载)
在这里插入图片描述
使用原生的 document.write进行阻塞,特别注意这里仅针对特殊要求下使用,该方式会阻塞线程造成性能问题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/wzjs/358935.html

相关文章:

  • 怎么做集合网站百度网站推广
  • 如何登陆公司网站后台如何开展网络营销
  • php做的网站毕设会问的问题成功品牌策划案例
  • 网站开发服务内容网店代运营的套路
  • 做网站的技术风险网络营销案例及分析
  • 数商云科技搜索优化引擎
  • 广东建设厅网站查询网站服务器查询
  • 莆田做鞋有没有网站看搜索引擎查关键词排名的软件
  • 日本做暖暖免费网站郑州竞价托管
  • 民网东莞网站建设平板电视seo优化关键词
  • 如何做网站视频模板抖音营销
  • 做网站基本要求市场调研的步骤
  • 官方网站下载免费电脑网页制作
  • 手机登录不了建设银行网站宁波seo网络推广软件系统
  • 做时时彩网站平台软件下载深圳网站开发
  • Asp做网站前期准备软文营销的定义
  • 房产网站怎么做竞价推广和seo的区别
  • 拍卖网站咋做百度seo优化规则
  • 岳阳做网站百度点击器找名风
  • 网站优化是什么意思seo公司服务
  • 个人网站建设知乎今日财经新闻
  • 怎么把网站做10万ip软文营销文案
  • 网站开发怎样验收做一个网站需要多少钱
  • 网站建设的软件知识有哪些内容怎么样创建网站
  • 软件工程毕业论文正规优化公司哪家好
  • 做dm页网站2023疫情最新情况
  • 常德网站建设要点精准推广的渠道有哪些
  • 网站做站群360推广登录入口官网
  • 网站推广目的苏州seo排名优化课程
  • html5个人网站源码长沙网红奶茶