其實360的兼容模式就是調(diào)用了IE內(nèi)核,判斷瀏覽器類型的代碼應(yīng)該足可以使用了,至于你要求不用JS腳本,用JAVA這大概實現(xiàn)不了,你瀏覽器內(nèi)核的切換,只有前端腳本才有可能知道,后臺代碼不可能第一時間知道,要知道也是前端告訴后端才對啊

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供商州網(wǎng)站建設(shè)、商州做網(wǎng)站、商州網(wǎng)站設(shè)計、商州網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、商州企業(yè)網(wǎng)站模板建站服務(wù),10余年商州做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
這個在你的JS代碼里面就要判斷瀏覽器兼容性的問題,
代碼有點多 這里就不貼代碼了。
通過request頭信息是可以獲得瀏覽器的agent信息的,然后直接將firefox或者inter exploer作為關(guān)鍵詞進行模糊匹配即可實現(xiàn)判斷用戶瀏覽器類型的需求。
Java判斷瀏覽器版本與類型 ? ? ? ? ? ?
?
public?static?void?main(String[]?args)?{
String?agent=request.getHeader("User-Agent").toLowerCase();
System.out.println(agent);
System.out.println("瀏覽器版本:"+getBrowserName(agent));
}
/**
*?獲取瀏覽器版本信息
*?@Title:?getBrowserName
*?@data:2015-1-12下午05:08:49
*?@author:wolf
*
*?@param?agent
*?@return
*/
public?String?getBrowserName(String?agent)?{
if(agent.indexOf("msie?7")0){
return?"ie7";
}else?if(agent.indexOf("msie?8")0){
return?"ie8";
}else?if(agent.indexOf("msie?9")0){
return?"ie9";
}else?if(agent.indexOf("msie?10")0){
return?"ie10";
}else?if(agent.indexOf("msie")0){
return?"ie";
}else?if(agent.indexOf("opera")0){
return?"opera";
}else?if(agent.indexOf("opera")0){
return?"opera";
}else?if(agent.indexOf("firefox")0){
return?"firefox";
}else?if(agent.indexOf("webkit")0){
return?"webkit";
}else?if(agent.indexOf("gecko")0??agent.indexOf("rv:11")0){
return?"ie11";
}else{
return?"Others";
}
}
原文鏈接:
JavaScript是前端開發(fā)的主要語言,我們可以通過編寫JavaScript程序來判斷瀏覽器的類型及版本。JavaScript判斷瀏覽
器類型一般有兩種辦法,一種是根據(jù)各種瀏覽器獨有的屬性來分辨,另一種是通過分析瀏覽器的userAgent屬性來判斷的。在許多情況下,值判斷出瀏覽器
類型之后,還需判斷瀏覽器版本才能處理兼容性問題,而判斷瀏覽器的版本一般只能通過分析瀏覽器的userAgent才能知道。
navigator對象
包含了正在使用的 Navigator 的版本信息。 JavaScript 客戶端運行時刻引擎自動創(chuàng)建 navigator 對象。 詳細的介紹可以參照【】,這里只是簡單說下其屬性和方法。
屬性概覽
appCodeName 指定瀏覽器的代碼名稱。
appName 指定瀏覽器的名稱。
appVersion 指定 Navigator 的版本信息。
language 標明正在使用的 Navigator 的翻譯語種。
mimeTypes 客戶端支持的所有 MIME 類型數(shù)組。
platform 標明了 Navigator 編譯適合的機器類型。
plugins 客戶端已安裝的所有插件數(shù)組。
userAgent 指定了用戶代理頭。
方法概覽
javaEnabled 測試是否允許 Java。
plugins.refresh 使新安裝的插件有效,并可選重新裝入已打開的包含插件的文檔。
preference 允許一個已標識的腳本獲取并設(shè)置特定的 Navigator 參數(shù)。
taintEnabled 指定是否允許數(shù)據(jù)污點。
簡單標注一下,判斷瀏覽器的名稱可以根據(jù)appName判斷,例如:
var ie=navigator.appName == “Microsoft Internet Explorer” ? true : false;
瀏覽器的特征及其userAgent
關(guān)于各種瀏覽器的特征及其userAgent,可以參照【】,這篇文章介紹的比較詳細。
簡單羅列如下:
IE
只有IE支持創(chuàng)建ActiveX控件,因此她有一個其他瀏覽器沒有的東西,就是ActiveXObject函數(shù)。
而IE各個版本典型的userAgent如下:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Mozilla/4.0 (compatible; MSIE 5.0; Windows NT)
其中,版本號是MSIE之后的數(shù)字。
Firefox
Firefox中的DOM元素都有一個getBoxObjectFor函數(shù),用來獲取該DOM元素的位置和大小(IE對應(yīng)的中是getBoundingClientRect函數(shù))。
這是Firefox獨有的,判斷它即可知道是當(dāng)前瀏覽器是Firefox。
Firefox幾個版本的userAgent大致如下:
Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1
Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070309 Firefox/2.0.0.3
Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070803 Firefox/1.5.0.12 其中,版本號是Firefox之后的數(shù)字。
Opera
Opera提供了專門的瀏覽器標志,就是window.opera屬性。
Opera典型的userAgent如下:
Opera/9.27 (Windows NT 5.2; U; zh-cn)
Opera/8.0 (Macintosh; PPC Mac OS X; U; en)
Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.0
其中,版本號是靠近Opera的數(shù)字。
Safari
Safari瀏覽器中有一個其他瀏覽器沒有的openDatabase函數(shù),可做為判斷Safari的標志。
Safari典型的userAgent如下:
Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13
Mozilla/5.0 (iPhone; U; CPU like Mac OS X) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3
其版本號是Version之后的數(shù)字。
Chrome
Chrome有一個MessageEvent函數(shù),但Firefox也有。不過,好在Chrome并沒有Firefox的getBoxObjectFor函數(shù),根據(jù)這個條件還是可以準確判斷出Chrome瀏覽器的。
目前,Chrome的userAgent是:
Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13
其中,版本號在Chrome之后的數(shù)字。
有趣的是,Chrome的userAgent還包含了Safari的特征,也許這就是Chrome可以運行所有Apple瀏覽器應(yīng)用的基礎(chǔ)吧。
Navigator
目前,Navigator的userAgent是:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080219 Firefox/2.0.0.12 Navigator/9.0.0.6
其中,版本號在Navigator之后的數(shù)字。
通過觀察以上各瀏覽器的差異,可以用JavaScript區(qū)分出各瀏覽器的,但沒有判斷是否兼容w3c標準,看了看ExtJs的源代碼,發(fā)現(xiàn)其中就有對瀏覽器類型以及版本和操作系統(tǒng)的判斷。
源碼如下:
ua = navigator.userAgent.toLowerCase(),
check = function(r){
return r.test(ua);
},
isStrict = patMode == “CSS1Compat”,
isOpera = check(/opera/),
isChrome = check(/chrome/),
isWebKit = check(/webkit/),
isSafari = !isChrome check(/safari/),
isSafari3 = isSafari check(/version\/3/),
isSafari4 = isSafari check(/version\/4/),
isIE = !isOpera check(/msie/),
isIE7 = isIE check(/msie 7/),
isIE8 = isIE check(/msie 8/),
isGecko = !isWebKit check(/gecko/),
isGecko3 = isGecko check(/rv:1\.9/),
isBorderBox = isIE !isStrict,
isWindows = check(/windows|win32/),
isMac = check(/macintosh|mac os x/),
isAir = check(/adobeair/),
isLinux = check(/linux/)
關(guān)于patMode
IE對盒模型的渲染在 Standards Mode和Quirks Mode是有很大差別的,在Standards Mode下對于盒模型的解釋和其他的標準瀏覽器是一樣,但在Quirks Mode模式下則有很大差別,而在不聲明Doctype的情況下,IE默認又是Quirks Mode。所以為兼容性考慮,我們可能需要獲取當(dāng)前的文檔渲染方式。
patMode正好派上用場,它有兩種可能的返回值:BackCompat和CSS1Compat,對其解釋如下:
BackCompat Standards-compliant mode is not switched on. (Quirks Mode)
CSS1Compat Standards-compliant mode is switched on. (Standards Mode)
在實際的項目中,我們還需要在獲取瀏覽是否IE,這樣就可以得到IE的渲染模式了。在ExtJs中的代碼:isBorderBox=isIE!isStrict。
當(dāng)文檔有了標準聲明時, patMode 的值就等于 “CSS1compat”, 因此, 我們可以根據(jù) patMode 的值來判斷文檔是否加了標準聲明
var height = patMode==”CSS1Compat” ? document.documentElement.clientHeight : document.body.clientHeight;
分享名稱:java代碼判斷是否ie java判斷是否是數(shù)值
轉(zhuǎn)載注明:http://www.js-pz168.com/article46/hhceeg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、虛擬主機、網(wǎng)站收錄、服務(wù)器托管、全網(wǎng)營銷推廣、手機網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)