这是我尝试过的。我相信onerror不适用于链接和脚本。我不确定。
基本上,我要实现的是。当浏览器无法加载某些 Assets 时,我将重新加载网页。不幸的是,我的第一步(脚本)不起作用。
var link = document.getElementsByTagName('link'),
img = document.getElementsByTagName('img'),
js = document.getElementsByTagName('script');
function chk_error(e){
for(var i = 0; i < e.length; i++){
e[i].onerror = function(){
alert('Failed.'); // doesn't alert even there's error
}
}
}
chk_error(link);
chk_error(img);
chk_error(js);
和
[].forEach.call(document.querySelectorAll('link, img, script'), function(e){
e.onerror = function(){
alert('reload'); // doesn't alert. not working.
}
});
注意:
I don't use jQuery library with this project.
另一种选择是在控制台中访问错误长度,但我不知道如何获取它。而且我认为目前不可能。
由于某些原因,该项目专注于Google Chrome。
也许有人对我有更好的主意或建议。任何帮助,将不胜感激。谢谢。
最佳答案
通过将内联onerror =“location.reload()”放入所需的img,链接,脚本来解决此问题。我认为这也很有用。因此,如果有人需要相同的功能。这就是我的方法。
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" onerror="location.reload()">
<img src="images/logo.png" onerror="location.reload();">
<script src="js/tweenmax.js" onerror="location.reload()"></script>
丑陋但对我有用。如果有人有更好的主意。请回答。谢谢。
编辑2:
[].forEach.call(document.querySelectorAll('link, img, script'), function(e){
e.setAttribute('onerror', 'location.reload()');
});
比第一个要好得多。仅当脚本位于链接之前的顶部时,此选项才有效。