backbone.js 在IE8中提取错误-跨域问题?

hmae6n7t  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(141)

在IE8中,有很多关于js模型提取的帖子不起作用。总是会产生错误回调。在其他地方都很成功:IE10+,Chrome,FF,Safari等,只是不在IE8中。
解决这个问题的一个问题是在错误回调中缺少可用的细节。本以为类似下面这样的东西会给予我一些细节,但它没有:

myModel.fetch({
        success: (function () {
            //do stuff                            
        }),

        error:(function (e) {
            alert('Fetch error message: ' + e.toString());                            
        })                       
    });

只产生输出[object Object]。即使我在VS中设置了中断并检查了错误对象,也没有任何细节。
因此,如果没有关于错误的详细信息,我就开始猜测。
我看到很多帖子说“IE8和IE9只以非标准的方式支持CORS”或“IE10使用XMLHTTPRequest,IE8使用遗留的XDomainRequest对象”。如果你必须支持IE8的话,我可以使用XDomainRequest。但是 Backbone 网是在底层处理 AJAX 的。它的好处之一是显而易见的。我想我可以如果我们在IE8中,我应该告诉 Backbone 网以某种方式有条件地使用XDomainRequest。我该怎么做呢?
我尝试了Backbone.CrossDomain库(https://github.com/victorquinn/Backbone.CrossDomain),它声称可以为你做到这一点。只要在 Backbone 和 Backbone 跨域获取后包含该库就可以神奇地工作。尝试了,但对我来说不起作用。仍然产生相同的错误回调,没有详细信息,所以没有办法真正排除故障的原因。

z6psavjg

z6psavjg1#

我假设我应该告诉 Backbone.js 以某种方式有条件地使用XDomainRequest,如果我们在IE8中的话。我该怎么做?
使用代理函数:

function proxy(){
 if (!!window.XDomainRequest && !window.matchMedia)
  {
  crossDomainAjax();
  } 
 else
  {
  myModel.fetch(
    {
    success: foo, 

    error: bar;                            
    }
   );                       
  }
 }

参考资料

相关问题