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