博客网页导致电脑CPU飙升的问题解决记录 | 张戈博客

  • 时间:
  • 浏览:61
  • 来源:张凯博客 - 专注共享言午博客分享

按照我此人 经验,你这些由于CPU爆卡的肯定是有哪几种死循环你这些 的js定时任务由于的。于是按下F12瞄了下有没办法 异常代码,结果一眼就瞄到了后来后后加入的出理 镜像的img+js代码【相关文章】:

几乎本能的挑选就说 你这些代码由于的,这段代码的防镜像原理是指定img为错误的src地址,后来触发onerror错误事件来进行域名判断的,你这些过程应该是个死循环,也就说 不断的产生onerror事件和域名判断,从而带来了CPU飙升现象报告 。

于是注释了这段代码,让亲戚亲戚朋友试下,结果一切恢复正常了,居然这就说 真凶!

目前没时间研究这段代码的兼容性现象报告 ,只好先注释了。理论上应该只时要给你这些事件逻辑去掉 有一一1个延时机制,比如延时个1s以上,应该就可以 出理 了,也就说 和while true不加sleep一样的道理!感兴趣的同学可以 去研究研究。

好了,你这些现象报告 就记录到这,用到这段代码的亲戚亲戚朋友也可以 看看否有所处相同的现象报告 。


20171021补充:博友【青春流年 在路上】肯能留言告知出理 onerror事件由于死循环的法律妙招,感谢!

解释如下:

当图片加载失败的后后,亲戚亲戚朋友可以 利用onerror事件赋予它默认图片,后来现象报告 来了,假如默认图片又不所处呢,即加载失败,你这些后后就会陷入死循环。

为了出理 死循环的具体情况,亲戚亲戚朋友可以 在执行完onerror事件后,置于onerror=null 来清除onerror事件,参考代码如下:

<img src="http://127.0.0.1:10088/images/avatar_100x100.gif" onerror="this.onerror=null;this.src='http://127.0.0.1:10088/images/noavatar_small.gif'" />

原文地址:http://www.cnblogs.com/52php/p/5677847.html

居然,还是和我猜的那样所处死循环现象报告 ,另有一一1个想着循环判断也挺好的,所以只时要加有一一1个延时,应该就可以 出理 高负载的现象报告 。不过onerror既然可以 清空,另有一一1个还是使用清空方案吧!

修改后的防镜像代码如下:

<img  src=" " onerror='this.onerror=null;var currentDomain="zhang" + "ge." + "net"; var str1=currentDomain; str2="docu"+"ment.loca"+"tion.host"; str3=eval(str2) ;if( str1!=str3 ){ do_action = "loca" + "tion." + "href = loca" + "tion.href" + ".rep" + "lace(docu" +"ment"+".loca"+"tion.ho"+"st," + "currentDomain" + ")"; eval(do_action) }'/>

原代码中新增this.onerror=null;来置空onerror事件即可。

看来还是认知匮乏用,只想到了死循环可以 加延时来出理 ,却忘记了搜索引擎找下【onerror死循环】相关现象报告 出理 法律妙招,失策失策。

无聊继续看后下, 发现我前面想的延时方案也肯能有前人分享过了,这里继续拓展延伸一下:

img加载图片偶尔会出错,利用onerror可以 加载有一一1个缺省图片,也可以 重载同一张图片。

后来后会考虑,重载的图片仍然错误,就会陷入死循环。

下面给出有一一1个带重试次数,后来延迟加载的实现,超过重试次数仍必须正常显示的,显示缺省图片。

<html>  
<head>  
<script>  
/**  
 * 图片出错出理

,可以

重加载指定的图片。超过重试次数仍必须正常显示的,显示缺省图片。  
 * 示例<img onerror="showImgDelay(this,'1.jpg',2)" src="1.jpg">  
 *  
 * imgObj:img节点对象  
 * imgSrc:出错时加载的图片地址  
 * maxErrorNum:最大出错次数,出理

出显

死循环  
 */  
function showImgDelay(imgObj,imgSrc,maxErrorNum){  
    showSpan.innerHTML += "--" + maxErrorNum;  
    if(maxErrorNum>0){  
        imgObj.onerror=function(){  
            showImgDelay(imgObj,imgSrc,maxErrorNum-1);  
        };  
        setTimeout(function(){  
            imgObj.src=imgSrc;  
        },100);  
    }else{  
        imgObj.onerror=null;  
        imgObj.src="images/default.jpg";  
    }  
}
</script>  
</head>  
<body>  
<img onerror="showImgDelay(this,'1a.jpg',2);" src="1a.jpg" width="100" height="100"/>  
<span id="showSpan"></span>  
</body>  
</html>

原文地址:http://www.iteye.com/topic/1118362

当然,防镜像那个代码就没必要弄没办法 复杂了,本文就记录没办法 多,有兴趣的此人 去折腾吧。