如果你不太会自适应,不能把pc端和手机端的网页都用同一个html页面,那就就必须写两个站(PC用www域名,手机用wap二级域名),一个PC,一个手机,那么如何做到识别用户是PC客服端还是手机客户端登陆的你网站的呢(并且能够实现在手机端输入www域名的时候不加载PC端的网页直接跳转到手机端的网页),这就需要js来对客户端的系统进行判断
我这里有三段代码,都可以实现这个效果用法一样,优劣如何,就看你的需求如何
不过,这里也有2个疑问点,请先看代码,我后面再解答
1.
<script type=“text/javascript”>
var userAgentInfo = navigator.userAgent;
var Agents = ["Android", "iPhone",
"SymbianOS", "Windows Phone",
"iPad", "iPod"];
var flag = true;
for (var v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) > 0) {
flag = false;
break;
}
}
return flag;
}
2.
<script type=“text/javascript”>
var sUserAgent = navigator.userAgent.toLowerCase();
var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
var bIsMidp = sUserAgent.match(/midp/i) == "midp";
var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
var bIsAndroid = sUserAgent.match(/android/i) == "android";
var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
if (!(bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) ){
window.location.href=B页面;
}
}
browserRedirect();
3
<script type=“text/javascript”>
var system ={
win : false,
mac : false,
xll : false
};
//检测平台
var p = navigator.platform;
system.win = p.indexOf("Win") == 0;
system.mac = p.indexOf("Mac") == 0;
system.x11 = (p == "X11") || (p.indexOf("Linux") == 0);
//跳转语句
if(system.win||system.mac||system.xll){
window.location.href="http://www.weishengyule.cn";
}else{
window.location.href="http://wap.weishengyule.cn";
}
</script>
疑问:js脚本都是在HTML页面加载完毕后才运行的,我这样做会不会出现在手机端输入PC端网页的域名会先完全加载完毕网页才跳转到手机端的网页
情景一:会出现完全加载后才跳转到手机端网页
原因:1.你没有把代码放在head的第一行 2.你用外部文件加载进来的
情景二:不会出现以上的情况,直接进入手机端网页
方法:直接用<script type="text/javascript">代码</script> 这样的方式,就不会出现问题
疑问二:谁优谁劣
个人喜欢第三个
原因:用变量的方式来给函数命名,理论上会直接加载他来运行【依据,我师傅说的】,个人感觉三个的效果都没差别