JavaScript FAQ(二十二)——用戶端資訊__Java

來源:互聯網
上載者:User

十九、用戶端資訊

 

1、瀏覽器名稱(Browser Name)

Q:我如何檢測瀏覽器名稱。

A:要擷取使用者瀏覽器的實際名稱,你可以用navigator.appName和navigator.userAgent屬性。userAgent屬性比appName更可靠些,例如,Firefox(和其他一些瀏覽器)由於相容Netscape Navigator,因此對navigator.appName可能返回“Netscape”。

下面的代碼執行個體使用navigator.userAgent實現瀏覽器檢測。同時,它也使用了navigator.appName和navigator.appVersion,僅在userAgent返回非期望形式時作為參考。下面就是在你瀏覽器中輸出:

 例子中進行瀏覽器檢測的原始碼是:

var nVer = navigator.appVersion;var nAgt = navigator.userAgent;var browserName  = navigator.appName;var fullVersion  = ''+parseFloat(navigator.appVersion); var majorVersion = parseInt(navigator.appVersion,10);var nameOffset,verOffset,ix;// In MSIE, the true version is after "MSIE" in userAgentif ((verOffset=nAgt.indexOf("MSIE"))!=-1) { browserName = "Microsoft Internet Explorer"; fullVersion = nAgt.substring(verOffset+5);}// In Opera, the true version is after "Opera" else if ((verOffset=nAgt.indexOf("Opera"))!=-1) { browserName = "Opera"; fullVersion = nAgt.substring(verOffset+6);}// In Chrome, the true version is after "Chrome" else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) { browserName = "Chrome"; fullVersion = nAgt.substring(verOffset+7);}// In Safari, the true version is after "Safari" else if ((verOffset=nAgt.indexOf("Safari"))!=-1) { browserName = "Safari"; fullVersion = nAgt.substring(verOffset+7);}// In Firefox, the true version is after "Firefox" else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) { browserName = "Firefox"; fullVersion = nAgt.substring(verOffset+8);}// In most other browsers, "name/version" is at the end of userAgent else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < (verOffset=nAgt.lastIndexOf('/')) ) { browserName = nAgt.substring(nameOffset,verOffset); fullVersion = nAgt.substring(verOffset+1); if (browserName.toLowerCase()==browserName.toUpperCase()) {  browserName = navigator.appName; }}// trim the fullVersion string at semicolon/space if presentif ((ix=fullVersion.indexOf(";"))!=-1) fullVersion=fullVersion.substring(0,ix);if ((ix=fullVersion.indexOf(" "))!=-1) fullVersion=fullVersion.substring(0,ix);majorVersion = parseInt(''+fullVersion,10);if (isNaN(majorVersion)) { fullVersion  = ''+parseFloat(navigator.appVersion);  majorVersion = parseInt(navigator.appVersion,10);}document.write('Browser name  = '+browserName+'<br>');document.write('Full version  = '+fullVersion+'<br>');document.write('Major version = '+majorVersion+'<br>');document.write('navigator.appName = '+navigator.appName+'<br>');document.write('navigator.userAgent = '+navigator.userAgent+'<br>');

 

2、瀏覽器版本(Browser Version)

Q:如何檢測瀏覽器版本。

A:不幸得是,navigator.appVersion在檢測上瀏覽器版本上並不夠好。例如,在很多支援JavaScript的瀏覽器,navigator.appVersion的值是相容的Netscape Navigator的版本,而不是使用者瀏覽器的實際版本。(甚至,在JavaScript應用的早期,Microsoft Internet Explorer 3的navigator.appVersion的傳回值是2,就意味著它相容於Netscape Navigator2。)

因此,要獲得任何上述瀏覽器的完全版本數,你需要依賴navigator.userAgent的傳回值,就像瀏覽器名稱中的例子。下面就是你的瀏覽器的名稱和版本:

 (原始碼見文章瀏覽器名稱)

 

3、作業系統(Operating System)

Q:如何檢測客戶機上的作業系統。

A:要檢測客戶機上的作業系統,指令碼需要分析navigator.appVersion的值。下面就是一個簡單的例子,它將作業系統的名稱賦給OSName變數。

// This script sets OSName variable as follows:// "Windows"    for all versions of Windows// "MacOS"      for all versions of Macintosh OS// "Linux"      for all versions of Linux// "UNIX"       for all other UNIX flavors // "Unknown OS" indicates failure to detect the OSvar OSName="Unknown OS";if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";document.write('Your OS: '+OSName);

在你的作業系統上,這段指令碼的結果是:

 (要獲得更詳細的作業系統資訊,指令碼可以對navigator.appVersion做更加複雜的分析,但是原理是一樣。)

 

4、螢幕尺寸(Screen Size)

Q:如何擷取客戶機的螢幕尺寸。

A:要檢測客戶機的螢幕尺寸,可以使用屬性screen.width和screen.height,這兩個屬性在主要瀏覽器的4上版本都被支援。如果你的使用者使用Netscape Navigator 3並且啟用了Java,你可以用Java調用來獲得螢幕的寬和高(見下面的例子)。

下面的代碼將螢幕的實際寬和高分別賦給了變數screenW和screenH,然後輸出它們的值。如果使用者使用的是舊版瀏覽器,那麼screenW和sreenH就分別被賦值為640和480。

var screenW = 640, screenH = 480;if (parseInt(navigator.appVersion)>3) { screenW = screen.width; screenH = screen.height;}else if (navigator.appName == "Netscape"     && parseInt(navigator.appVersion)==3    && navigator.javaEnabled()   ) { var jToolkit = java.awt.Toolkit.getDefaultToolkit(); var jScreenSize = jToolkit.getScreenSize(); screenW = jScreenSize.width; screenH = jScreenSize.height;}document.write( "Screen width = "+screenW+"<br>"+"Screen height = "+screenH)

在你的瀏覽器中,代碼輸出為:

 

5、瀏覽器視窗尺寸(Browser Window Size)

Q:如何擷取瀏覽器視窗的尺寸。

A:要確定瀏覽器視窗的實際尺寸,可以使用下面的屬性 在Netscape Navigator 4中:window.innerWidth、window.innerHeight 在Microsoft Internet Explorer中:document.body.offsetWidth、document.body.offsetHeight

注意,document.body.offsetWidht和document.body.offsetHeight必須在瀏覽器載入<BODY>標籤完成後執行。

在下面的代碼中,winW和winH分別被賦值為實際瀏覽器視窗的寬和高,然後被輸出。如果使用者使用舊版瀏覽器,那麼winW和winH將分別被設為630和460。

var winW = 630, winH = 460;if (parseInt(navigator.appVersion)>3) { if (navigator.appName=="Netscape") {  winW = window.innerWidth;  winH = window.innerHeight; } if (navigator.appName.indexOf("Microsoft")!=-1) {  winW = document.body.offsetWidth;  winH = document.body.offsetHeight; }}document.write( "Window width = "+winW+"<br>"+"Window height = "+winH)

在你的瀏覽器中,代碼的執行結果是:

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.