我的電腦昨天更新的時候把ie11給更新出來了,然后發現我的skylineweb項目提示我的瀏覽器不是ie,這樣顯然是瀏覽器檢測出現了問題。查找后找到了下面的解決方法。大家的電腦如果也更新成了ie11的話,再去打開別的網上已經發布的三維項目的話,會發現無法加載。同樣是瀏覽器的檢測的問題。且看正文:
skyline平台只支持ie,這樣我們在做skyline的項目時必須在場景加載前進行瀏覽器檢測。當不是ie時,給客戶提醒“請使用ie”;當是ie時,判斷ie的版本,這樣客戶可以讓客戶按照ie的版本來安裝相應的TE Pro。
且看下面段代碼:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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”來獲取。這樣想到下面的方法:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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]來獲取版本號。
