[javascript]使用IE8/9,做到CROS的功能

公司有一個專案,必須做到跨網域(CROS)的功能,一想到CROS,我就直覺想到使用XmlHttpRequest

公司有一個專案,必須做到跨網域(CROS)的功能,一想到CROS,我就直覺想到使用XmlHttpRequest,在Chrome,Firefox,IE11都沒問題,寫了一個範例程式,交給新人照抄,原本以為可以很開心的交給新人去Coding,結果去客戶端測試時,PM丟了一個重量級炸彈給我:

客戶端幾乎都是用IE8,IE8,IE8.....

而IE8跟本就沒有XmlHttpRequest可以用啊~~~~~~~~~~~~~~~

在Google大神的幫助之下,終於找到元兇了,原來IE8要用XDomainRequest...

這是啥鬼啊...

話不多說,直接給範例程式

var url='http://myurl';
if(window.XDomainRequest){ //Only IE8 or IE 9
    var xdr=new XDomainRequest();
    xdr.open('GET',url);
    xdr.onload(function(){
        alert('xdr success');
    });
    
}else{
    var xhr=new XMLHttpRequest();
    xhr.open('GET',url,false); //加false代表不做非同步
    xhr.send();
    xhr.onreadystatechange(function(){
        if(xhr.status==200&&xhr.readyState==4){
            alert('xhr success');
        }
    });

}