兼容問題一直困擾著廣告大的網(wǎng)站建設(shè)程序員們,再怎么困擾也必須面對(duì),因?yàn)楫?dāng)今是全球市經(jīng)濟(jì)時(shí)代.生活在朝鮮原來也有慶幸的地方,什么都單純,估計(jì)也不用考慮這種兼容問題,回到現(xiàn)實(shí)中,我們前面介紹過如何使用javascript來識(shí)別不同的瀏覽器,我們進(jìn)一步地完善我們的程序,讓其能識(shí)別各種平臺(tái).在不同的平臺(tái)下可能會(huì)有不同的問題,目前的三大主流平臺(tái)分別是:Windows、Mac和Unix(包括各種Linux).南昌網(wǎng)站設(shè)計(jì)公司技術(shù)人員結(jié)合前面分析的代碼,還需要像下面這樣再添加一個(gè)新對(duì)象:
var system = {
win: false,
mac: false,
x11: false,
};
//在此顯示檢測(cè)出平臺(tái)種類 return {
engine: engine,
browser: browser,
system: system
}; }();
顯然,上面的代碼中又添加了一個(gè)包含3個(gè)屬性的新變量system。其中,win屬性表示是否為Windows平臺(tái),mac表示Mac,而xll表示Unix.與呈現(xiàn)引擎不同,在不能訪問操作系統(tǒng)或版本的情況下,平臺(tái)信息通常是很有限的。對(duì)這三個(gè)平臺(tái)而言,瀏覽器一般只報(bào)告Windows版本。南昌網(wǎng)站設(shè)計(jì)公司技術(shù)員認(rèn)為,新變量system的每個(gè)屬性最初都保存著布爾值false,而不是像呈現(xiàn)引擎屬性那樣保存著數(shù)字值。
在確定平臺(tái)時(shí),檢測(cè)navigator .platform要比檢測(cè)用戶代理字符串更簡單,后者在不同瀏覽器中會(huì)給出不同的平臺(tái)信息。而navigator.platform屬性可能的值包括"Win32"、"Win64“、"MacPPC"、 "Maclntel"、"X11"和"Linux i686",這些值在不同的瀏覽器中都是一致的。檢測(cè)平臺(tái)的代碼非常直觀,如下所示:
var p=navigator.platform;
system.win=p.indexOf("Win") ==O;
system.mac=p.indexOf("Mac“)==0;
system.xll= (p.indexOf("X11") ==O)|| (p.indexOf( "Linux") ==o);
以上代碼使用indexOf()方法來查找平臺(tái)字符串的開始位置。雖然"Win32"是當(dāng)前瀏覽器唯一支持的Windows字符串,但隨著向64位Windows架構(gòu)的遷移,將來很可能會(huì)出現(xiàn)"Win64"平臺(tái)信息值。
為了對(duì)此有所準(zhǔn)備,檢測(cè)平臺(tái)的代碼中查找的只是字符串"Win "IYJ開始位置。而檢測(cè)Mac平臺(tái)的方式也類似,同樣是考慮到了MacPPC和Maclntel。在檢測(cè)Unix時(shí),則同時(shí)檢查了字符串"X11"和"Linux"在平臺(tái)字符串中的開始位置,從而確保了代碼能夠向前兼容其他變體。
Gecko的早期版本在所有Windows平臺(tái)中都返回字符串"Windows",在所有Mac平臺(tái)中則都返回字符串"Macintosh"。不過,這都是Firefox 1發(fā)布以前的事了,F(xiàn)irefox 1確定了navigator .platform的值。
本文僅限內(nèi)部技術(shù)人員學(xué)習(xí)交流,不得作于其他商業(yè)用途.文章出自:南昌網(wǎng)站建設(shè)公司-百恒網(wǎng)絡(luò) http://www.gimmickmag.com 如轉(zhuǎn)載請(qǐng)注明出處!