項目中一個頁面,在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;
}
}
}