ajaxFileUpload報錯:無法獲取未定義或 null 引用的屬性“version”

項目中一個頁面,在chrome和IE11下能正常運行,但在IE10及其以下版本中報錯,報錯信息爲無法獲取未定義或 null 引用的屬性“version”


報錯的js代碼如下:

if (window.ActiveXObject) {
    if (jQuery.browser.version == "9.0") { // 報錯位置,無法獲取未定義或 null 引用的屬性“version”
        io = document.createElement('iframe');
        io.id = frameId;
        io.name = frameId;
    } else if (jQuery.browser.version == "6.0" 
                || jQuery.browser.version == "7.0" 
                || jQuery.browser.version == "8.0") {
              var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />');
              if (typeof uri == 'boolean') {
                  io.src = 'javascript:false';
              } else if (typeof uri == 'string') {
                   io.src = uri;
              }
     }
}

debug發現,在IE下jquery.browser爲undefined,查詢後發現jQuery 從 1.9 版開始,移除了jquery.browser 和 jquery.browser.version ,取而代之的是 $.support 。運行出錯的頁面使用的jquery版本爲2.1.1,所以在IE瀏覽器下運行出錯。

對修改ajaxFileUpload代碼,使用navigator.userAgent來進行IE瀏覽器版本判斷,修改後的代碼如下:

if (window.ActiveXObject) {
    var ieVersion = navigator.appVersion.split(";")[1].replace(/[ ]/g, "").replace("MSIE","");
    if (ieVersion == "9.0" || ieVersion == "10.0") { //jQuery.browser.version == "9.0"
        io = document.createElement('iframe');
        io.id = frameId;
        io.name = frameId;
    } else if (ieVersion == "6.0" 
        || ieVersion == "7.0" 
        || ieVersion == "8.0") {
        var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />');
        if (typeof uri == 'boolean') {
            io.src = 'javascript:false';
        } else if (typeof uri == 'string') {
            io.src = uri;
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章