这是我尝试过的。我相信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()');
});

比第一个要好得多。仅当脚本位于链接之前的顶部时,此选项才有效。

07-24 09:44
查看更多