【发布时间】:2010-11-11 00:29:55
【问题描述】:
我想检测脚本标签(动态创建并添加到 DOM)是否加载失败。 onerror 事件有效,但 Firefox 中的 file:// URL 除外。
不幸的是,如果脚本标记的 src 是 file:// URL(或相对 URL 并且页面已加载),那么 described here 技术(除了超时,在我的情况下是不可接受的)似乎都不适用于 Firefox通过文件:// URL)
测试用例:
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', 'doesnotexist.js');
script.onerror = function() { alert("Loading failed!"); }
document.getElementsByTagName('head')[0].appendChild(script);
将其加载到带有 file:// URL 的 HTML 页面中。 onerror 事件不会在 Firefox 中执行。从网络服务器加载,或者在 Safari 或 Chrome 上加载。
这对我来说似乎是一个错误。有什么已知的解决方法吗?
【问题讨论】:
-
你应该接受你的问题的答案。
-
@Marcel Korpel:他说超时不是一种选择,所以这行不通。
-
作为参考,当基于
file://的 URL 加载失败时,Firefox 不触发error事件的问题是 Bugzilla bug 621276。
标签: javascript firefox onerror