如今智能手機(jī)越來(lái)越普及,用戶通過(guò)移動(dòng)終端上網(wǎng)的頻率也越來(lái)越高,用戶的電腦上網(wǎng)習(xí)慣也隨之轉(zhuǎn)移到手機(jī)上網(wǎng)。
然而受手機(jī)屏幕以及相關(guān)手機(jī)瀏覽器的影響,很多網(wǎng)站在手機(jī)端的表現(xiàn)差強(qiáng)人意,所以我們會(huì)考慮設(shè)計(jì)WAP版。當(dāng)然常用的辦法是告知用戶WAP入口地址,但這不能從無(wú)縫轉(zhuǎn)移的角度來(lái)解決問(wèn)題。所以我們會(huì)考慮到判斷當(dāng)前客戶端的情況來(lái)進(jìn)行有選擇的推送網(wǎng)站版面。
標(biāo)關(guān)鍵。搜索諸多文章都推薦了使用“User-Agent”進(jìn)行嗅探。“User Agent中文名為用戶代理,簡(jiǎn)稱 UA,它是一個(gè)特殊字符串頭,使得服務(wù)器能夠識(shí)別客戶使用的操作系統(tǒng)及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語(yǔ)言、瀏覽器插件等。”
<%request.ServerVariables("HTTP_USER_AGENT")%> <?$_SERVER['HTTP_USER_AGENT']?>
|
獲 得的第一參數(shù)可以看到電腦顯示為compatible,iphone顯示為iphone,cpu iphone OS;摩托羅拉M2525顯示為L(zhǎng)inux,Android MB525 Build。而諸如諾基亞6300則不顯示任何信息,當(dāng)然,因?yàn)槿魏坞娔X都會(huì)有HTTP_USER_AGENT信息,如果值為空也可以判斷為手機(jī)。
所以簡(jiǎn)單辦法是獲取所有手機(jī)端的User-Agent信息入庫(kù),以備對(duì)客戶端的校驗(yàn)。
已檢測(cè)成功的ASP版
<% set regex = new regexp regex.ignorecase = true regex.global = true regex.pattern = "mini 9.5|vx1000|lge |m800|e860|u940|ux840|compal|wireless| mobi|ahong|lg380|lgku|lgu900|lg210|lg47|lg920|lg840|lg370|sam-r|mg50|s55|g83|t66|vx400|mk99|d615|d763|el370|sl900|mp500|samu3|samu4|vx10|xda_|samu5|samu6|samu7|samu9|a615|b832|m881|s920|n210|s700|c-810|_h797|mob-x|sk16d|848b|mowser|s580|r800|471x|v120|rim8|c500foma:|160x|x160|480x|x640|t503|w839|i250|sprint|w398samr810|m5252|c7100|mt126|x225|s5330|s820|htil-g1|fly v71|s302|-x113|novarra|k610i|-three|8325rc|8352rc|sanyo|vx54|c888|nx250|n120|mtk |c5588|s710|t880|c5005|i;458x|p404i|s210|c5100|teleca|s940|c500|s590|foma|samsu|vx8|vx9|a1000|_mms|myx|a700|gu1100|bc831|e300|ems100|me701|me702m-three|sd588|s800|8325rc|ac831|mw200|brew |d88|htc\/|htc_touch|355x|m50|km100|d736|p-9521|telco|sl74|ktouch|m4u\/|me702|8325rc|kddi|phone|lg |sonyericsson|samsung|240x|x320vx10|nokia|sony cmd|motorola|up.browser|up.link|mmp|symbian|smartphone|midp|wap|vodafone|o2|pocket|kindle|mobile|psp|treo|iris|3g_t|windows ce|opera mobi|windows ce; smartphone;|windows ce; iemobile|ipod|iphone|android|opera mini|blackberry|palm os|palm|hiptop|avantgo|fennec|plucker|xiino|blazer|elaine|iris|3g_t|windows ce|opera mobi|windows ce; smartphone;|windows ce; iemobile"
agent = request.ServerVariables("HTTP_USER_AGENT") if agent <> "" then if regex.test(agent) then response.redirect("WAP網(wǎng)址") end If Else response.redirect("未能獲取HTTP_USER_AGENT值,同樣跳轉(zhuǎn)到WAP網(wǎng)址") end if %>
|
未監(jiān)測(cè)的PHP版
function is_wap(){ $ua = strtolower($_SERVER['HTTP_USER_AGENT']); $uachar = "/(nokia|sony|ericsson|mot|samsung|sgh|lg|sie|philips|panasonic|alcatel|lenovo|cldc|midp|wap|mobile)/i"; if(($ua == '' || preg_match($uachar, $ua))&& !strpos(strtolower($_SERVER['REQUEST_URI']),'wap')){ return true; }else{ return false; } }
|
以上的ASP段代碼檢測(cè)在諾基亞、蘋果、三星、摩托羅拉、HTC、黑莓及部分安卓山寨機(jī)上測(cè)試訪問(wèn)均自動(dòng)跳轉(zhuǎn)至WAP站點(diǎn)。
后來(lái)考慮到ipad端因?yàn)槠聊灰呀?jīng)夠大,正常WEB瀏覽也無(wú)大礙,所以可以考慮不跳轉(zhuǎn)到WAP站的思路總結(jié)出:
判斷客戶端是電腦還是手機(jī)的目的是為了讓用戶能看到適合的屏幕內(nèi)容,那么我們?yōu)槭裁床粊?lái)判斷客戶端的分辨率進(jìn)行有選擇的跳轉(zhuǎn)呢?
所以,最終考慮分辨率小于480的終端均跳轉(zhuǎn)到WAP頁(yè)面。
<script type="text/javascript"> //document.write(window.screen.width+"*"+window.screen.height); if (window.screen.width<=480){ top.location='WAP網(wǎng)址'; } </script>
|
另外發(fā)現(xiàn),UC解析彩版頁(yè)面效果很差,圖片全部被渲染過(guò)的,看來(lái)只能定制純文字版的WAP頁(yè)了。
該文章在 2014/4/7 11:01:13 編輯過(guò)