这是我试图在Javascript detect static <script> load failues中提出的问题,但我想我可能会混淆这个问题。
我的问题是:假设我在某些HTML中有一个<script>
标记并且它没有加载,不是因为代码中的任何错误而是因为网络错误。有没有办法以编程方式通知此网络错误?我看到我可以将一个onerror
事件附加到脚本标记,但是对它的回调只会传递给它的Event
对象,而没有关于网络故障的信息。
相比之下,如果我通过Ajax动态加载脚本,我有一个XHR对象,它有一些我可以在其中使用的信息。我正在寻找与静态<script>
标签相当的东西。
基本上我想要的是这样的
<script src="/path/to/script.js" type="text/javascript" onerror="handleError(event)"></script>
<script type='text/javascript'>
function handleError(event) {
// do stuff;
}
</script>
其中“stuff”将包含阻止脚本加载的网络错误的详细信息。
答案 0 :(得分:1)
请发布代码以帮助我们。
无论是加载了页面还是没有加载,网络错误都不会导致脚本错误,除非外部文件加载失败或者ajax命令返回非200状态。如果问题来自ajax,你可以在准备就绪时测试ajax对象的响应代码,如果它不是200,你可以运行你的通知或重试代码,如果错误是来自外部.js文件,因为任何原因没有加载在js文件中添加一个变量,例如var loaded = true;然后在主文件中检查它并根据需要做出反应。