IE中使用ajax碰到的問題,No Transport(crossDomain=true屬性設置問題)

IE中的crossDomain=true屬性設置

再ajax請求過程中設置了crossDomain=true屬性,再谷歌內核中是可以正確解讀爲support.cors = true,發現其他瀏覽器中都是support.cors = true,唯獨在IE中support.cors = false,這個屬性的判斷來自於support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ),其中xhrSupported= new window.XMLHttpRequest(),ie9中XMLHttpRequest沒有withCredentials屬性。也就是說這個問題是由於我的亂用屬性加上各瀏覽器兼容性問題而導致的。

解決方法

  1. 解決ajax時出現No Transport,在使用ajax之前添加:jQuery.support.cors = true;//瀏覽器支持跨域訪問
  2. 加載jquery-ajaxtransport-xdomainrequest的js
<!--[if lte IE 9]><script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.3/jquery.xdomainrequest.min.js" type="text/javascript" charset="utf-8"></script><![endif]-->

意外的問題

遇到一個問題就是寫的js在客戶生產環境中的ie和360中不起作用,隨後我想看看瀏覽器的輸出,並沒有異常錯誤,然後繼續操作發現一個奇怪的現象就是,在開啓F12的情況下,功能正常使用,一旦關閉則使用不了,上網找了資料,參考了superGG1990的文章,在開發過程中,console.log常被用來調試程序,在Chrome和Firefox中友好運行,但是在IE9之前的版本支持不友好,IE6和IE7雖然可以安裝 Developer Toolbar,但也不支持console。

解決方案:在開發完成過後刪除打印的調試信息或者先判斷一下js中的console是否存在
function log(msg){
    if (window["console"]){
        console.log(msg);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章