1. 使用js如何判斷客戶端類型
這篇文章主要給大家總結介紹了關於利用JS判斷客戶端類型的四種方法,比如通過通過判斷瀏覽器的userAgent、檢查是否是移動端(Mobile)、ipad、iphone、微信、qq等的方法,需要的朋友可以參考借鑒,下面
前言
我們在寫響應式布局的時候,總要考慮是否是移動端,基於這個這里總結了4種方法判斷客戶端是否是ios或者android。分享出來供大家參考學習,下面隨著小編來一起看看詳細的介紹吧。
方法如下:
1. 第一種:通過判斷瀏覽器的userAgent,用正則來判斷是否是ios和Android客戶端
User Agent中文名為用戶代理,是Http協議中的一部分,屬於頭域的組成部分,User Agent也簡稱UA。它是一個特殊字元串頭,是一種向訪問網站提供你所使用的瀏覽器類型及版本、操作系統及版本、瀏覽器內核、等信息的標識。通過這個標 識,用戶所訪問的網站可以顯示不同的排版從而為用戶提供更好的體驗或者進行信息統計;例如用手機訪問谷歌和電腦訪問是不一樣的,這些是谷歌根據訪問者的 UA來判斷的。UA可以進行偽裝。
瀏覽器的UA字串的標准格式:瀏覽器標識 (操作系統標識; 加密等級標識; 瀏覽器語言) 渲染引擎標識版本信息。但各個瀏覽器有所不同。
代碼如下:
<script type="text/javascript">
var u = navigator.userAgent;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android終端
var isiOS = !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/); //ios終端
alert('是否是Android:'+isAndroid);
alert('是否是iOS:'+isiOS);
</script>2. 第二種:檢查是否是移動端(Mobile)、ipad、iphone、微信、QQ等。
2.1 代碼如下:
<script type="text/javascript">
//判斷訪問終端
var browser={
versions:function(){
var u = navigator.userAgent,
app = navigator.appVersion;
return {
trident: u.indexOf('Trident') > -1, //IE內核
presto: u.indexOf('Presto') > -1, //opera內核
webKit: u.indexOf('AppleWebKit') > -1, //蘋果、谷歌內核
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1,//火狐內核
mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否為移動終端
ios: !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/), //ios終端
android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, //android終端
iPhone: u.indexOf('iPhone') > -1 , //是否為iPhone或者QQHD瀏覽器
iPad: u.indexOf('iPad') > -1, //是否iPad
webApp: u.indexOf('Safari') == -1, //是否web應該程序,沒有頭部與底部
weixin: u.indexOf('MicroMessenger') > -1, //是否微信 (2015-01-22新增)
qq: u.match(/sQQ/i) == " qq" //是否QQ
};
}(),
language:(navigator.browserLanguage || navigator.language).toLowerCase()
}
</script>2.2 使用方法
/判斷是否IE內核
if(browser.versions.trident){ alert("is IE"); }
//判斷是否webKit內核
if(browser.versions.webKit){ alert("is webKit"); }
//判斷是否移動端
if(browser.versions.mobile||browser.versions.android||browser.versions.ios){ alert("移動端"); }2.3 檢測瀏覽器語言
currentLang = navigator.language; //判斷除IE外其他瀏覽器使用語言
if(!currentLang){//判斷IE瀏覽器使用語言
currentLang = navigator.browserLanguage;
}
alert(currentLang);3. 判斷iPhone|iPad|iPod|iOS|Android客戶端
代碼如下:
if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { //判斷iPhone|iPad|iPod|iOS
//alert(navigator.userAgent);
window.location.href ="iPhone.html";
} else if (/(Android)/i.test(navigator.userAgent)) { //判斷Android
//alert(navigator.userAgent);
window.location.href ="Android.html";
} else { //pc
window.location.href ="pc.html";
};4. 判斷pc還是移動端
代碼如下:
<script>
//判斷是否手機端訪問
var userAgentInfo = navigator.userAgent.toLowerCase();
var Agents = ["android", "iphone",
"symbianos", "windows phone",
"ipad", "ipod"];
var ly=document.referrer; //返回導航到當前網頁的超鏈接所在網頁的URL
for (var v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) >= 0&&(ly==""||ly==null)) {
this.location.href='http://m.***.com'; //wap端地址
}
}
</script>5. 常用跳轉代碼
看代碼
<script type="text/javascript">
// borwserRedirect
(function browserRedirect(){
var sUserAgent = navigator.userAgent.toLowerCase();
var bIsIpad = sUserAgent.match(/ipad/i) == 'ipad';
var bIsIphone = 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) == 'web';
var bIsCE = sUserAgent.match(/windows ce/i) == 'windows ce';
var bIsWM = sUserAgent.match(/windows mobile/i) == 'windows mobile';
var bIsAndroid = sUserAgent.match(/android/i) == 'android';
var pathname = location.pathname
if(bIsIpad || bIsIphone || bIsMidp || bIsUc7 || bIsUc || bIsCE || bIsWM || bIsAndroid ){
window.location.href = 'http://m.geekjc.com'+pathname; //wap端地址
}
})();
</script>上面是我整理給大家的,希望今後會對大家有幫助。
相關文章:
使用Vue時瀏覽器後退無法觸發beforeRouteLeave的問題
在fastclick代碼中如何解決tap「點透」
在anime.js中如何實現動畫效果的復選框
在vue中常用組件和框架結構(詳細教程)
2. 如何判斷是否是微信訪問 微信UA
做微信站點的開發的時候,我們有需求只允許微信來訪問網頁。
可行的一種方法是按照瀏覽器UA來判斷是否是微信。
下面是我抓取到的UA:
1
Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12A365 MicroMessenger/5.4.1 NetType/WIFI
我們可以通過MicroMessenger關鍵詞來判斷是否是微信了。
下面是js和php的方法示例:
function is_weixin(){
var ua = navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i)=="micromessenger") {
return true;
} else {
return false;
}
}
PHP:
function is_weixin(){
if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) {
return true;
}
return false;
}
3. 如何通過JS程序判斷UA
<scripttype="text/javascript">
/**
*[judgeOs用戶代理判斷]
*@return{[type]}[description]
*/
functionjudgeOs(){
varua=navigator.userAgent,
isWindowsPhone=/(?:WindowsPhone)/.test(ua),
isSymbian=/(?:SymbianOS)/.test(ua)||isWindowsPhone,
isAndroid=/(?:Android)/.test(ua),
isFireFox=/(?:Firefox)/.test(ua),
isChrome=/(?:Chrome|CriOS)/.test(ua),
//平板
isTablet=/(?:iPad|PlayBook)/.test(ua)||(isAndroid&&!/(?:Mobile)/.test(ua))||(isFireFox&&/(?:Tablet)/.test(ua)),
isPhone=/(?:iPhone)/.test(ua)&&!isTablet,
isPc=!isPhone&&!isAndroid&&!isSymbian;
return{
isTablet:isTablet,
isPhone:isPhone,
isAndroid:isAndroid,
isPc:isPc
};
},
//資料參考HTML5學堂
</script>
4. js 如何判斷 谷歌與火狐瀏覽器 本人JS比較菜 麻煩各位給指點下 謝謝了
這段代碼很早之前在網上搜到的,忘了出處了
<script language="javascript" type="text/javascript">
function userAgent(){
var ua = navigator.userAgent;
ua = ua.toLowerCase();
var match = /(webkit)[ \/]([\w.]+)/.exec(ua) ||
/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(ua) ||
/(msie) ([\w.]+)/.exec(ua) ||
!/compatible/.test(ua) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec(ua) ||
[];
//match[2]判斷版本號
switch(match[1]){
case "msie": //ie
if (parseInt(match[2]) == 6) //ie6
alert("ie6");
else if (parseInt(match[2]) == 7) //ie7
alert("ie7");
else if (parseInt(match[2]) == 8) //ie8
alert("ie8");
break;
case "webkit": //safari or chrome
alert("safari or chrome");
break;
case "opera": //opera
alert("opera");
break;
case "mozilla": //Firefox
alert("Firefox");
break;
default:
break;
}
}
userAgent();
</script>
5. JS辨別訪問瀏覽器判斷是android還是ios系統
<script type="text/javascript">
/*
* 智能機瀏覽器版本信息:
*
*/
var browser = {
versions: function() {
var u = navigator.userAgent, app = navigator.appVersion;
return {//移動終端瀏覽器版本信息
trident: u.indexOf('Trident') > -1, //IE內核
presto: u.indexOf('Presto') > -1, //opera內核
webKit: u.indexOf('AppleWebKit') > -1, //蘋果、谷歌內核
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐內核
mobile: !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/), //是否為移動終端
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios終端
android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android終端或者uc瀏覽器
iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否為iPhone或者QQHD瀏覽器
iPad: u.indexOf('iPad') > -1, //是否iPad
webApp: u.indexOf('Safari') == -1 //是否web應該程序,沒有頭部與底部
};
}(),
language: (navigator.browserLanguage || navigator.language).toLowerCase()
}
if (browser.versions.ios || browser.versions.iPhone || browser.versions.iPad) {
window.location="https://itunes.apple.com/xxx";
}
else if (browser.versions.android) {
window.location="http://xxx/xxx.apk";
}
// document.writeln("語言版本: " + browser.language);
// document.writeln(" 是否為移動終端: " + browser.versions.mobile);
// document.writeln(" ios終端: " + browser.versions.ios);
// document.writeln(" android終端: " + browser.versions.android);
// document.writeln(" 是否為iPhone: " + browser.versions.iPhone);
// document.writeln(" 是否iPad: " + browser.versions.iPad);
// document.writeln(navigator.userAgent);
</script>
6. 如何用html判斷瀏覽器內核
js方法
判斷瀏覽器名稱和版本
目前只能判斷:ie/firefox/chrome/opera/safari
2012年5月16日23:47:08
瀏覽器內核UA:UA;
瀏覽器內核名稱:NV.name;
瀏覽器內核版本:NV.version;
瀏覽器外殼名稱:NV.shell;
var NV = {};
var UA = navigator.userAgent.toLowerCase();
try
{
NV.name=!-[1,]?'ie':
(UA.indexOf("firefox")>0)?'firefox':
(UA.indexOf("chrome")>0)?'chrome':
window.opera?'opera':
window.openDatabase?'safari':
'unkonw';
}catch(e){};
try
{
NV.version=(NV.name=='ie')?UA.match(/msie ([d.]+)/)[1]:
(NV.name=='firefox')?UA.match(/firefox/([d.]+)/)[1]:
(NV.name=='chrome')?UA.match(/chrome/([d.]+)/)[1]:
(NV.name=='opera')?UA.match(/opera.([d.]+)/)[1]:
(NV.name=='safari')?UA.match(/version/([d.]+)/)[1]:
'0';
}catch(e){};
try
{
NV.shell=(UA.indexOf('360ee')>-1)?'360極速瀏覽器':
(UA.indexOf('360se')>-1)?'360安全瀏覽器':
(UA.indexOf('se')>-1)?'搜狗瀏覽器':
(UA.indexOf('aoyou')>-1)?'遨遊瀏覽器':
(UA.indexOf('theworld')>-1)?'世界之窗瀏覽器':
(UA.indexOf('worldchrome')>-1)?'世界之窗極速瀏覽器':
(UA.indexOf('greenbrowser')>-1)?'綠色瀏覽器':
(UA.indexOf('qqbrowser')>-1)?'QQ瀏覽器':
(UA.indexOf('')>-1)?'網路瀏覽器':
'未知或無殼';
}catch(e){}
alert('瀏覽器UA='+UA+
' 瀏覽器名稱='+NV.name+
' 瀏覽器版本='+parseInt(NV.version)+
' 瀏覽器外殼='+NV.shell);
});
2.jQuery插件
(function($)
{
/*
判斷瀏覽器名稱和版本
目前只能判斷:ie/firefox/chrome/opera/safari
2012年5月16日23:47:08
瀏覽器內核UA:$.NV('ua');或$.NV('UA');
瀏覽器內核名稱:$.NV('name');或$.NV();
瀏覽器內核版本:$.NV('version');
瀏覽器外殼名稱:$.NV('shell');
*/
$.extend(
{
NV:function(name)
{
var NV = {};
var UA = navigator.userAgent.toLowerCase();
try
{
NV.name=!-[1,]?'ie':
(UA.indexOf("firefox")>0)?'firefox':
(UA.indexOf("chrome")>0)?'chrome':
window.opera?'opera':
window.openDatabase?'safari':
'unkonw';
}catch(e){};
try
{
NV.version=(NV.name=='ie')?UA.match(/msie ([d.]+)/)[1]:
(NV.name=='firefox')?UA.match(/firefox/([d.]+)/)[1]:
(NV.name=='chrome')?UA.match(/chrome/([d.]+)/)[1]:
(NV.name=='opera')?UA.match(/opera.([d.]+)/)[1]:
(NV.name=='safari')?UA.match(/version/([d.]+)/)[1]:
'0';
}catch(e){};
try
{
NV.shell=(UA.indexOf('360ee')>-1)?'360極速瀏覽器':
(UA.indexOf('360se')>-1)?'360安全瀏覽器':
(UA.indexOf('se')>-1)?'搜狗瀏覽器':
(UA.indexOf('aoyou')>-1)?'遨遊瀏覽器':
(UA.indexOf('theworld')>-1)?'世界之窗瀏覽器':
(UA.indexOf('worldchrome')>-1)?'世界之窗極速瀏覽器':
(UA.indexOf('greenbrowser')>-1)?'綠色瀏覽器':
(UA.indexOf('qqbrowser')>-1)?'QQ瀏覽器':
(UA.indexOf('')>-1)?'網路瀏覽器':
'未知或無殼';
}catch(e){}
switch(name)
{
case 'ua':
case 'UA':br=UA;break;
case 'name':br=NV.name;break;
case 'version':br=NV.version;break;
case 'shell':br=NV.shell;break;
default:br=NV.name;
}
return br;
}
});
})(jQuery);
$(function()
{
alert('瀏覽器UA='+$.NV('UA')+
' 瀏覽器名稱='+$.NV('name')+
' 瀏覽器版本='+parseInt($.NV('version'))+
' 瀏覽器外殼='+$.NV('shell'));
});
7. 如何判斷是否是微信訪問 微信UA
通過判斷HTTP_USER_AGENT中是否有MicroMessenger即可判斷是不是微信過來的請求:
if(strpos($_SERVER["HTTP_USER_AGENT"],"MicroMessager")){
echo "Welcome to wechat world!";
}else{
echo "('<span style="font-size:28px;">HTTP/1.1 401 UnAuthorized</span>')";
}
重要的是如何通過微信客戶端獲得tiket,確定用戶的身份,如果獲取不到tiket都不是微信瀏覽器,這個做法應該是最好的。