有很多关于骨干js模型的帖子在IE8中不起作用。始终产生错误回调。在其他地方取得成功:IE10 +,Chrome,FF,Safari等等。只是不在IE8中。
解决问题的一个问题是错误回调中缺少可用的详细信息。想到下面的内容会给我一些细节,但事实并非如此:
myModel.fetch({
success: (function () {
//do stuff
}),
error:(function (e) {
alert('Fetch error message: ' + e.toString());
})
});
只生成输出[object Object]。即使我在VS中设置了一个中断并检查错误对象,也没有详细信息。
所以没有关于错误的细节,我开始猜测。
我看到很多帖子都说“IE8和9只支持非标准方式的CORS”或“IE10使用XMLHTTPRequest,IE8使用遗留的XDomainRequest对象”。这些帖子中推荐的解决方案实际上说,如果你必须支持IE8,请使用XDomainRequest。但骨干是在引擎盖下处理ajax。其中一个好处显而易见。我假设如果我们在IE8中,我应该告诉骨干以某种方式有条件地使用XDomainRequest。我该怎么做?
我尝试了Backbone.CrossDomain库(https://github.com/victorquinn/Backbone.CrossDomain),声称这样做是为了你。只需在骨干和骨干跨域抓取之后包含库就可以神奇地工作。尝试过它并且不适合我。仍然会生成相同的错误回调而没有详细信息,因此无法真正解决失败的原因。
答案 0 :(得分:0)
我认为如果我们在IE8中,我应该告诉骨干以某种方式有条件地使用XDomainRequest。我该怎么做?
使用代理功能:
function proxy(){
if (!!window.XDomainRequest && !window.matchMedia)
{
crossDomainAjax();
}
else
{
myModel.fetch(
{
success: foo,
error: bar;
}
);
}
}
<强>参考强>