我的電腦昨天更新的時候把ie11給更新出來了,然后發現我的skylineweb項目提示我的瀏覽器不是ie,這樣顯然是瀏覽器檢測出現了問題。查找后找到了下面的解決方法。大家的電腦如果也更新成了ie11的話,再去打開別的網上已經發布的三維項目的話,會發現無法加載。同樣是瀏覽器的檢測的問題。且看正文:
skyline平台只支持ie,這樣我們在做skyline的項目時必須在場景加載前進行瀏覽器檢測。當不是ie時,給客戶提醒“請使用ie”;當是ie時,判斷ie的版本,這樣客戶可以讓客戶按照ie的版本來安裝相應的TE Pro。
且看下面段代碼:
function CheckBrowser() {
ua = navigator.userAgent;
ua = ua.toLocaleLowerCase();
if (ua.match(/msie/) != null ) {
browserType = "IE";
browserVersion = ua.match(/msie ([\d.]+)/)[1];
} else if (ua.match(/firefox/) != null) {
browserType = "火狐";
} else if (ua.match(/opera/) != null) {
browserType = "歐朋";
} else if (ua.match(/chrome/) != null) {
browserType = "谷歌";
} else if (ua.match(/safari/) != null) {
browserType = "Safari";
}
var arr = new Array(browserType, browserVersion);
return arr;
}
上面思路是通過瀏覽器的userAgent值來判斷(字符串),抓住各個瀏覽器userAgent值里面的不同字符串值。下面大家得學習下一篇關於ie11的介紹,我就是從那里學習,得出檢測ie11的辦法:
http://www.ithome.com/html/ie/48082.htm
我從里面摳出主要的部分:

從ie11的userAgent字符串,看出要判斷ie11,得改為對Trident值的判斷,但是獲取版本的時候又得通過“rv 11.0”來獲取。這樣想到下面的方法:
function CheckBrowser() {
ua = navigator.userAgent;
ua = ua.toLocaleLowerCase();
if (ua.match(/msie/) != null || ua.match(/trident/) != null) {
browserType = "IE";
//哈哈,現在可以檢測ie11.0了!
browserVersion = ua.match(/msie ([\d.]+)/) != null ? ua.match(/msie ([\d.]+)/)[1] : ua.match(/rv:([\d.]+)/)[1];
} else if (ua.match(/firefox/) != null) {
browserType = "火狐";
} else if (ua.match(/opera/) != null) {
browserType = "歐朋";
} else if (ua.match(/chrome/) != null) {
browserType = "谷歌";
} else if (ua.match(/safari/) != null) {
browserType = "Safari";
}
var arr = new Array(browserType, browserVersion);
return arr;
}
大家看,在11.0以下的版本,ie會通過ua.match(/msie ([\d.]+)/)[1]獲取版本號,當是ie11.0時,會通過 ua.match(/rv:([\d.]+)/)[1]來獲取版本號。
這樣就完成了!歡迎大家測試,給出意見@! 請大家多多關注skyline論壇:www.skylinecn.com
