我遇到的错误是 s 经常从第三方JS发出像Chartbeat一样,我想抓住并丢弃/静音这些错误和相关的噪音。


所有这些第三方脚本都做了一些变体:


< script>
DOM标记 window
window.onload
来调用初始化程序例如


 function loadChartbeat(){& #xA; window._sf_endpt =(new Date())。getTime();
 var e = document.createElement('script');
 e.setAttribute('language','javascript');
 e.setAttribute('type','text / javascript');
 e.setAttribute('src','// static.chartbeat.com/js/chartbeat.js');
document.body.appendChild(e);
}



 我如何 try / catch
这个上下文中的错误?
在处理< script>
标签时,还有另一种方法可以避免错误的冒泡加载这种模式?
我尝试添加一个静音函数,喜欢这样:


 function stoperror(){
 return true;
}
 function loadChartbeat(){
 window._sf_endpt =(new Date())。getTime();
 var e = document.createElement('script');
 e.setAttribute('language','javascript');
 e.setAttribute('type','text / javascript');
 e.setAttribute('src','// static.chartbeat.com/js/chartbeat.js');
e.onerror = stoperror;
 document.body.appendChild(e);
}



 但错误继续冒出来。

答案 0 :(得分:-1)
最简单的方法是添加服务器端。那样的话:
//loadscript.php
<?php
echo "try{";
readfile($_GET["url"]);//bad style, may improve it
echo "}catch(e){}";
?>
在用户方面,它会变得混乱,涉及安全性和可用性。可能会这样:
[...document.getElementsByTagName("script")].forEach(function(el){
var url=el.src;
el.parentNode.removeChild(el);
ajax(url,function(code){ // needs to be implemented
try{
eval(code);
}catch(e){}
});
});