加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

一文汇报你怎样优雅处理赏罚前端非常?

发布时间:2019-03-16 02:17:23 所属栏目:移动互联 来源:佚名
导读:前端一向是间隔用户最近的一层,跟着产物的日益完美,我们会越发注重用户体验,而前端非常却如鲠在喉,甚是烦人。 一、为什么要处理赏罚非常? 非常是不行控的,会影响最终的泛起功效,可是我们有充实的来由去做这样的工作。 1.加强用户体验; 2.长途定位题目

对付 iframe 的非常捕捉,我们还得借力 window.onerror

  1. window.onerror = function(message, source, lineno, colno, error) { 
  2. console.log('捕捉到非常:',{message, source, lineno, colno, error}); 

一个简朴的例子也许如下:

  1.   
  2. <iframe src="./iframe.html" frameborder="0"></iframe> 
  3. <script> 
  4. window.frames[0].onerror = function (message, source, lineno, colno, error) { 
  5. console.log('捕捉到 iframe 非常:',{message, source, lineno, colno, error}); 
  6. return true; 
  7. }; 
  8. </script> 
  9. 十、Script error 

一样平常环境,假如呈现 Script error 这样的错误,根基上可以确定是呈现了跨域题目。这时辰,是不会有其他太多帮助信息的,可是办理思绪无非如下:

跨源资源共享机制( CORS ):我们为 script 标签添加 crossOrigin 属性。

  1. <script src="http://jartto.wang/main.js" crossorigin></script>

可能动态去添加 js 剧本:

  1. const script = document.createElement('script'); 
  2. script.crossOrigin = 'anonymous'; 
  3. script.src = url; 
  4. document.body.appendChild(script); 

出格留意,处事器端必要配置:Access-Control-Allow-Origin

另外,我们也可以试试这个-办理 Script Error 的另类思绪:

  1. const originAddEventListener = EventTarget.prototype.addEventListener; 
  2. EventTarget.prototype.addEventListener = function (type, listener, options) { 
  3. const wrappedListener = function (...args) { 
  4. try { 
  5. return listener.apply(this, args); 
  6. catch (err) { 
  7. throw err; 
  8. return originAddEventListener.call(this, type, wrappedListener, options); 

简朴表明一下:

  • 改写了 EventTarget 的 addEventListener 要领;
  • 对传入的 listener 举办包装,返回包装过的 listener,对其执行举办 try-catch
  • 赏识器不会对 try-catch 起来的非常举办跨域拦截,以是 catch 到的时辰,是有仓库信息的;
  • 从头 throw 出来非常的时辰,执行的是同域代码,以是 window.onerror 捕捉的时辰不会丢失仓库信息;

操作包装 addEventListener,我们还可以到达「扩展仓库」的结果:

  1. (() => { 
  2. const originAddEventListener = EventTarget.prototype.addEventListener; 
  3. EventTarget.prototype.addEventListener = function (type, listener, options) { 
  4. + // 捕捉添加变乱时的仓库 
  5. + const addStack = new Error(`Event (${type})`).stack; 
  6. const wrappedListener = function (...args) { 
  7. try { 
  8. return listener.apply(this, args); 
  9. catch (err) { 
  10. + // 非常产生时,扩展仓库 
  11. + err.stack += 'n' + addStack; 
  12. throw err; 
  13. return originAddEventListener.call(this, type, wrappedListener, options); 
  14. })(); 

十一、瓦解和卡顿

卡顿也就是网页暂且相应较量慢, JS 也许无法实时执行。但瓦解就纷歧样了,网页都瓦解了,JS都不运行了,尚有什么步伐可以监控网页的瓦解,并将网页瓦解上报呢?

瓦解和卡顿也是不行忽视的,大概会导致你的用户流失。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读