Requirejs Require.js对Handlebar资源的请求在IE9中被随机中止

Requirejs Require.js对Handlebar资源的请求在IE9中被随机中止,requirejs,internet-explorer-9,handlebars.js,xdomainrequest,Requirejs,Internet Explorer 9,Handlebars.js,Xdomainrequest,我们正在开发一个使用Require.js和handlebar的web应用程序,它可以在除IE9之外的所有浏览器中正常工作。在IE9中,Handlebar Require.js模块(hbs.js)发出的加载Handlebar资源的请求被随机中止——有时,请求成功,当它们失败时,对于哪些请求失败没有明确的模式(除了只有Handlebar请求失败;所有JavaScript资源请求都成功)。在网络窗格中,请求列为(中止),启动器为(挂起…,没有进一步信息) 这可能不是一个配置错误,因为它在其他任何地方都

我们正在开发一个使用Require.js和handlebar的web应用程序,它可以在除IE9之外的所有浏览器中正常工作。在IE9中,Handlebar Require.js模块(
hbs.js
)发出的加载Handlebar资源的请求被随机中止——有时,请求成功,当它们失败时,对于哪些请求失败没有明确的模式(除了只有Handlebar请求失败;所有JavaScript资源请求都成功)。在网络窗格中,请求列为
(中止)
,启动器为
(挂起…
,没有进一步信息)

这可能不是一个配置错误,因为它在其他任何地方都有效,而是框架浏览器兼容性的问题,所以我省略了配置。有人知道发生了什么事吗


(注意:经过几个小时的挖掘,我已经找到了解决方案,并将自己发布,以方便可能遇到相同问题的其他人。解决方案已经描述过,但是,找到这些答案需要您已经发现,
XDomainRequest
可能是问题所在,这需要挖掘。)进入框架代码。)
hbs.js
在旧IE版本中使用
XDomainRequest
。事实证明,在IE9中,当
XDomainRequest
请求没有立即完成时,IE9将尝试启动
onprogress
回调,如果回调不存在,IE9将中止该请求。换句话说,如果您不订阅
XDomainRequest.onprogress
回调,您的请求将在IE9中随机失败。我们使用的
hbs.js
版本未订阅此事件(在最近的版本中已修复),添加订阅修复了此问题:

xhr.onprogress = function() {};
紧接着

if (useXdr) {
    xhr.onload = function () { callback(xhr.responseText); }
hbs.js中