|
|
|
|
|
用手機打開PC網(wǎng)頁,會有諸多的不便,由于手機屏幕太小,所以網(wǎng)頁縮小后字體也相應縮小,要放大才可以看清,但放大后網(wǎng)頁又超出了手機的屏幕寬度,需要手動來左右拖動網(wǎng)頁,操作起來相當麻煩。為了顧及手機用戶的體驗,網(wǎng)頁手機版順應而出,目前已有一些工具可以自動把網(wǎng)站生成手機網(wǎng)頁了。
手機打開PC網(wǎng)頁
最近把網(wǎng)站內(nèi)容做了一個手機版,主要是調(diào)整好界面布局,不多余的東西去掉,以適合手機用戶使用?,F(xiàn)在有一個比較頭疼的問題是,用戶多數(shù)是記住PC端使用的主域名,而不去記手機端使用的二級域名,有什么辦法改善這一狀況呢。
我看到很多網(wǎng)站都是在PC網(wǎng)頁的某個地方加上一個按鈕,提示用戶可以切換都手機訪問,點擊那個按鈕即可。這不失為一個方法,但是我感覺這并不是一個好的方法,因為當用戶打開PC網(wǎng)頁時,內(nèi)容堆得滿滿的,廣告多的話會有點眼花繚亂,可能沒有發(fā)現(xiàn)有個“手機版”的連接圖標,這樣的用戶體驗是比較差的。我現(xiàn)在想實現(xiàn)自動化,即是當用戶用手機打開PC網(wǎng)頁時,能自動跳到手機網(wǎng)頁,有什么方法可以實現(xiàn)呢?
我后來想到的切入點是從瀏覽器來突破,每一個瀏覽器的userAgent是不同的,而主流的PC瀏覽器和手機瀏覽器都是十分有限的,可以通過網(wǎng)頁程序來獲得客戶端瀏覽器的userAgent,進而判斷客戶端是PC還是手機,從而跳轉(zhuǎn)到對應的網(wǎng)頁。
js實現(xiàn)手機打開PC網(wǎng)頁自動跳到手機網(wǎng)頁
通過測試,前端js程序是可以實現(xiàn)這一功能的。如下面是主要判斷代碼:
<script language="JavaScript">
var ua = window.navigator.userAgent; //獲得瀏覽器類型
//alert(ua);
if(ua.indexOf("MSIE")>=1)
{
alert("這是 IE");
//客戶端是PC,應使用PC網(wǎng)頁
}
else if(ua.indexOf("Firefox")>=1)
{
alert("這是 Firefox");
//客戶端是PC,應使用PC網(wǎng)頁
}
else if(ua.indexOf("Chrome")>=1)
{
alert("這是 Chrome");
//客戶端是PC,應使用PC網(wǎng)頁
}
...... //這里列舉所有主流的PC瀏覽器類型
else
{
//客戶端是手機,自動跳轉(zhuǎn)到手機網(wǎng)頁
}
</script>
通過上面的js程序,便可實現(xiàn)手機打開PC網(wǎng)頁自動跳到手機網(wǎng)頁的功能。
PHP和ASP.NET判斷客戶端是否手機
根據(jù)上述的思路,如果是動態(tài)網(wǎng)頁,也可以用PHP等動態(tài)語言實現(xiàn)。不管什么語言,都是判斷客戶端瀏覽器userAgent。
下面是PHP獲取userAgent并判斷客戶端是否手機的代碼:
<?php
//php判斷客戶端是否為手機
$agent = $_SERVER['HTTP_USER_AGENT'];
if(strpos($agent,"NetFront") || strpos($agent,"iPhone") || strpos($agent,"MIDP-2.0") || strpos($agent,"Opera Mini") || strpos($agent,"UCWEB") || strpos($agent,"Android") || strpos($agent,"Windows CE") || strpos($agent,"SymbianOS"))
header("Location:xxxxxxxx");
?>
asp.net獲取userAgent的代碼:
下面為獲取瀏覽器UA的ASP.NET代碼:
<%
string ua1 = Request.ServerVariables["HTTP_USER_AGENT"];
Response.Write(ua1);
%>
或者
<%
string ua2 = Request.UserAgent;
Response.Write(ua2);
%>
或者
<%
string ua3 = Request.Headers["User-Agent"];
Response.Write(ua3);
%>
以上有三種獲取瀏覽器UA的ASP.NET的方法,使用任何一種即可。