如何检测文件的脚本加载://在Firefox中URL失败?

我想检测脚本标记(动态创建并添加到DOM)是否无法加载。 onerror事件有效,但Firefox中的file:// URL除外。 不幸的是,如果脚本标记的src是file:// URL(或相对URL并且页面是通过文件加载的话),这里描述的技术(除了超时,在我的情况下是不可接受的)似乎都不适用于Firefox。 //网址) 测试用例:
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加载,它会。 这对我来说似乎是个错误。有没有任何已知的方法呢?     
已邀请:
如果您使用Pauls解决方案来检索文档但忽略了结果,该怎么办?如果它加载了创建脚本标记。缺点是文件会加载两次。     
var loadScript = function(scriptURL, failureCallback) {
    var script = document.createElement('script'),
        scriptProtocol = scriptURL.match(/^([a-zA-Z]+:)///);
    script.setAttribute('type', 'text/javascript');

    if (navigator.product === 'Gecko' &&
        navigator.userAgent.indexOf('KHTML') === -1 &&
        window.location.protocol === 'file:' &&
        (!scriptProtocol || scriptProtocol[1] === 'file:')) {

        var req = new XMLHttpRequest();
        req.open('GET', scriptURL, true);
        req.onreadystatechange = function () {
            if (req.readyState === 4) {
                if (req.status === 0)
                    script.textContent = req.responseText;
                else
                    failureCallback();
            }
        };
        try {
            req.send(null);
        }
        catch (e) {
            failureCallback();
        }
    }
    else {
        script.setAttribute('src', scriptURL);
        script.onerror = failureCallback; 
    }

    document.getElementsByTagName('head')[0].appendChild(script);
};

loadScript('doesnotexist.js', function() { alert('Loading failed!'); });
有点破解,但似乎有效。     

要回复问题请先登录注册