Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取未加载的资源?_Javascript - Fatal编程技术网

Javascript 如何获取未加载的资源?

Javascript 如何获取未加载的资源?,javascript,Javascript,我试图通过在index.html的头部包含一个脚本来获取网页中所有未加载的元素,但我遇到了一些问题。 代码如下: document.addEventListener('DOMContentLoaded', function () { console.log("here"); var scripts = document.getElementsByTagName('script'); for(var i=0;i<scripts.len

我试图通过在index.html的头部包含一个脚本来获取网页中所有未加载的元素,但我遇到了一些问题。
代码如下:

    document.addEventListener('DOMContentLoaded', function () {
        console.log("here");

        var scripts = document.getElementsByTagName('script');
        for(var i=0;i<scripts.length;i++){
            scripts[i].onerror =function(message, source, lineno) {
                console.log("JS: Error SCRIPT");  
            }
        }


        var imgs = document.getElementsByTagName('img');
        for(var i=0;i<imgs.length;i++){

            imgs[i].onerror =function(message, source, lineno) {
                console.log("JS: Error IMG ");  
            }
        }

        var links = document.getElementsByTagName('link');
        for(var i=0;i<links.length;i++){
            links[i].onerror = function(message, source, lineno){
                console.log("JS: Error CSS ");
            }
        }

    });
var scripts = [];

for (var i = 0, nodes = document.getElementsByTagName('script'); i < nodes.length; i++) {

  scripts[i] = { source: nodes[i].src, loaded: false };

  nodes[i].onload = function() {
    var loadedNode = this;
    var index = scripts.findIndex(function(script) {
      return script.source === loadedNode.src;
    });

    scripts[index].loaded = true;

  };
}

var links = [];

for (var i = 0, nodes = document.getElementsByTagName('link'); i < nodes.length; i++) {

  links[i] = { source: nodes[i].href, loaded: false };

  nodes[i].onload = function() {
    var loadedNode = this;
    var index = links.findIndex(function(link) {
      link.href === loadedNode.href;
    });

    links[index].loaded = true;

  };
}

document.addEventListener('DOMContentLoaded', function() {
  console.log("here");

  scripts.filter(function(script) {
    return !script.loaded;
  }).forEach(function(script) {
    console.log("Error loading script: " + script.source);
  });

  links.filter(function(link) {
    return !link.loaded;
  }).forEach(function(link) {
    console.log("Error loading link: " + link.source);
  });

  // and the rest of the elements

  var imgs = document.getElementsByTagName('img');

  for (var i = 0; i < imgs.length; i++) {

    imgs[i].onerror = function() {
      console.log("Error loading image: " + this.src);
    };

  }
});
document.addEventListener('DOMContentLoaded',函数(){
console.log(“此处”);
var scripts=document.getElementsByTagName('script');
对于(var i=0;i
你好,这是考试

遗憾的是,您无法通过
onerror
事件获得
link
script
错误加载,但您可以处理加载的内容,并过滤未加载的内容。这可以通过
link
script
标记的
load
事件实现

    <html>
    <head>
            <!--<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>-->
            <script src="js/appmetricsmod.js"></script>
            <link rel="stylesheet" href="styletests.css">
            <link rel="stylesheet" href="styletestss.css">
            <link rel="stylesheet" href="styletestsss.css">
            <script src="js/error1.js"></script>
            <script src="js/error2.js"></script>
            <script src="js/error3.js"></script>

    </head>
    <body>

    <img src="imgtest.png"></img>
    <img src="imgErr1.png"></img>
    <img src="imgErr2.png"></img>
    <img src="imgErr3.png"></img>
    <img src="http://images.centrometeoitaliano.it/wp-content/uploads/2016/11/15/l1.jpg"></img>
    <div class="divtest">
        hello this is a test
    </div>


    <script>

    </script>
    </body>
    </html>
var脚本=[];
对于(var i=0,nodes=document.getElementsByTagName('script');i

希望有帮助:)

使用上面的类资源和错误,我解决了这个问题,获取了页面的所有资源,然后删除了工作资源。结果是一个未加载资源的数组。
代码如下:

    document.addEventListener('DOMContentLoaded', function () {
        console.log("here");

        var scripts = document.getElementsByTagName('script');
        for(var i=0;i<scripts.length;i++){
            scripts[i].onerror =function(message, source, lineno) {
                console.log("JS: Error SCRIPT");  
            }
        }


        var imgs = document.getElementsByTagName('img');
        for(var i=0;i<imgs.length;i++){

            imgs[i].onerror =function(message, source, lineno) {
                console.log("JS: Error IMG ");  
            }
        }

        var links = document.getElementsByTagName('link');
        for(var i=0;i<links.length;i++){
            links[i].onerror = function(message, source, lineno){
                console.log("JS: Error CSS ");
            }
        }

    });
var scripts = [];

for (var i = 0, nodes = document.getElementsByTagName('script'); i < nodes.length; i++) {

  scripts[i] = { source: nodes[i].src, loaded: false };

  nodes[i].onload = function() {
    var loadedNode = this;
    var index = scripts.findIndex(function(script) {
      return script.source === loadedNode.src;
    });

    scripts[index].loaded = true;

  };
}

var links = [];

for (var i = 0, nodes = document.getElementsByTagName('link'); i < nodes.length; i++) {

  links[i] = { source: nodes[i].href, loaded: false };

  nodes[i].onload = function() {
    var loadedNode = this;
    var index = links.findIndex(function(link) {
      link.href === loadedNode.href;
    });

    links[index].loaded = true;

  };
}

document.addEventListener('DOMContentLoaded', function() {
  console.log("here");

  scripts.filter(function(script) {
    return !script.loaded;
  }).forEach(function(script) {
    console.log("Error loading script: " + script.source);
  });

  links.filter(function(link) {
    return !link.loaded;
  }).forEach(function(link) {
    console.log("Error loading link: " + link.source);
  });

  // and the rest of the elements

  var imgs = document.getElementsByTagName('img');

  for (var i = 0; i < imgs.length; i++) {

    imgs[i].onerror = function() {
      console.log("Error loading image: " + this.src);
    };

  }
});
var res=performance.getEntriesByType(“资源”);
res.forEach(功能添加(项目){
resources.push(新资源(item.name,
item.initiatorType,
item.startTime,
项目.答复,
项目(期限);;
})
var标志=真;
var imgs=document.getElementsByTagName('img');

对于(var i=0;我为什么不记录实际的错误消息?你是说使用“window.onerror”?语句
console.log(“JS:error IMG”);
是无用的,因为它根本没有告诉你任何有用的信息。首先将它更改为
console.error
,然后添加实际的错误消息(
message
)对于日志。伙计们,我认为实际的错误消息与这个问题无关。他在问为什么OneError处理程序在某些情况下不启动。关于这一点:我非常确定
DOMContentLoaded
在javascript加载后启动,所以这将不会为这些应用程序附加
OneError
处理程序,直到太晚。我不知道你为什么这么做这个解决方案看起来不错,但仍然不起作用:(现在我把代码粘贴到问题上,我看到了,你从JS得到了什么输出?