是否可以使用JavaScript列出加载在网页上的外部资源?

是否可以使用JavaScript列出加载在网页上的外部资源?,javascript,Javascript,我希望有一个时间间隔来跟踪当前页面上加载的项目。例如,假设我有一个页面,加载一个css文件、一些脚本、图片、一个flash视频播放器,然后flash视频播放器加载一个视频文件。加载的元素可能来自或不来自与页面相同的域。其中一些可以通过ajax或flash加载,并且页面上没有标记。我想跟踪每一个,并制作一个数组来存储关于它们的信息 我希望有一个脚本可以执行类似于以下伪代码的操作: var all_external_resources = array(); setInterval(function

我希望有一个时间间隔来跟踪当前页面上加载的项目。例如,假设我有一个页面,加载一个css文件、一些脚本、图片、一个flash视频播放器,然后flash视频播放器加载一个视频文件。加载的元素可能来自或不来自与页面相同的域。其中一些可以通过ajax或flash加载,并且页面上没有标记。我想跟踪每一个,并制作一个数组来存储关于它们的信息

我希望有一个脚本可以执行类似于以下伪代码的操作:

var all_external_resources = array();

setInterval(function() {
  var external_items = list_external_resources();
  for (var i in external_items) {
    if (all_external_resources.indexOf(external_items[i]) < 0)
      all_external_resources.push(external_items[i]);
  }
}, 100);
var all_external_resources=array();
setInterval(函数(){
var external_items=list_external_resources();
对于(外部项目中的var i){
if(所有外部资源.indexOf(外部项[i])<0)
所有外部资源推送(外部项[i]);
}
}, 100);
这可能吗?

您可以使用来检索资源名称:

var resources = window.performance.getEntriesByType("resource");
resources.forEach(function (resource) {
    console.log(resource.name);
});

它是()的扩展,在许多浏览器中都受支持。

我们通常在加载各种内容时回调某些函数。这是做同样事情的异步方式。一旦你把你的头绕在它周围,它是甜蜜的。你能不能扩展一下这个问题?如果我理解正确的话,那是不可能的。您可以使用开发人员工具查看所有请求,但无法使用JavaScript监视它们。我相信这是一个安全问题(比如,想想广告中的第三方js代码),谷歌“javascript异步回调”并阅读一些相关内容。然后以不同的方式思考你的问题。为什么您想要一个列表,列出哪些已加载,哪些未加载?通常是因为在加载某些内容之前,您无法执行其他操作。或者,一旦加载了其他东西,你就得做点什么。然后,您使用回调来完成依赖于另一方的工作,而不保留已完成工作的中心列表。例如…例如,用户可能有一个按钮来加载下一个图像。您禁用按钮,加载新图像,并在图像加载完成时收到一个回调通知。回调将重新启用该按钮。没有代码可以知道图像是否正在加载,但用户只能在图像稳定时单击。有趣的是,我将研究这个想法。好吧,这肯定很有效!不幸的是,浏览器支持还没有出现,但这肯定是一个很好的回答这个问题。