有没有办法检查链接、img、脚本是否加载失败?

Is there any method to check if the link, img, script failed to load?

本文关键字:是否 加载 失败 脚本 img 检查链接 有没有      更新时间:2023-09-26

这是我尝试过的。我相信onerror对链接和脚本不起作用。我不太确定。

基本上,我想达到的是。当浏览器无法加载某些资源时,我将重新加载网页。不幸的是,我的第一步(脚本)不起作用。

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.

另一个选择是访问控制台的错误长度,但我不知道如何得到它。我认为这是不可能的。

这个项目是专注于谷歌浏览器的某些原因。

也许有人有更好的主意或给我一些建议。任何帮助都会很感激。谢谢。

通过将inline onerror= "location.reload()"放置到所需的img, link, script中来解决。我认为它也很有用。所以,如果有人需要相同的功能。我是这样做的。

<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()');
});

比第一个好得多。这只会在脚本位于链接之前的头部顶部时起作用。

您应该在onerror调用之前定义错误触发函数!在这里,我的电脑已经报警两次,因为js/tweenmax.jsdjffjds.jpg不存在。

<script type="text/javascript">
 //this function must be in header tag
    function hasError(argument) {
        alert(argument == 'error');
    }
</script>
<script src="js/tweenmax.js" onerror="hasError('error')"></script>
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" onerror="hasError('error')">
<img src="djffjds.jpg" onerror="hasError('error')">