我有一堆需要在$(window).on('load' ...)
上调用的函数。有时,网站会在加载时无限期挂起。从各种API中引入了大量嵌入和其他媒体。
是否可以在不将事件监听器附加到每个资源的情况下检测仍处于待处理状态的内容?
修改以澄清:
@ PamBlam下面的评论更多地针对这个问题 - 我希望能够用javascript做到这一点,所以当用户浏览时它可能发生在客户端。
具体来说,我希望能够识别待处理的请求并获取任何相关详细信息,并向错误记录器(例如哨兵)发送注释,以查看实际站点上用户的哪些特定资源是问题。也许唯一的解决方案是创建一个新的loadResource
函数(如某些答案中所建议的)来编译这些细节,并且在长时间超时后,如果它还没有完成,则向记录器发送一个注释。但是,这似乎有点矫枉过正。此外,其中一些资源是HTML中包含的<iframe>
,因此需要添加更多工作。
我所希望的 - 而且我猜这不存在,因为我认为javascript没有权限查看浏览器级别上发生了什么 - 经过很长一段时间后可能会出现这种情况,本质上是查看开发工具的网络选项卡,并发送一份尚未处理的报告。
答案 0 :(得分:0)
调试JavaScript的最佳方法之一是Chrome DevTools(虽然我是Firefox的主要倡导者,但在这种情况下,Chrome只是令人兴奋)。尽可能使用调试断点和网络。
附加推荐链接 https://developers.google.com/web/tools/chrome-devtools/
答案 1 :(得分:0)
计算加载的资源数量,并在每个资源完成时减少计数。当计数为零时,所有资源都已完成。
var resourcesPending = 0;
// Load some resources
resourcesPending++;
loadAResource(function(){
resourcesPending--;
if(!resourcesPending) allResourcesLoaded();
});
resourcesPending++;
loadAResource(function(){
resourcesPending--;
if(!resourcesPending) allResourcesLoaded();
});
// etc..