JS를 사용하여 클라이언트 유형을 결정하는 방법
이 글에서는 브라우저의 userAgent 판단, 모바일 단말기(Mobile)인지, ipad인지, iphone인지 확인하는 등 클라이언트 유형을 판별하기 위해 JS를 사용하는 4가지 방법을 주로 요약하고 소개합니다. 아래의 WeChat, QQ 등의 방법을 참조할 수 있습니다.
머리말
반응형 레이아웃을 작성할 때 항상 모바일 단말기 기반인지 여부를 고려해야 합니다. 여기에 클라이언트가 iOS인지 Android인지 확인하는 4가지 방법이 요약되어 있습니다. 모두가 참고할 수 있도록 공유하고 편집자와 함께 자세한 소개를 살펴보겠습니다.
방법은 다음과 같습니다.
1. 첫 번째 방법: 브라우저의 userAgent를 판단하여 일반 규칙을 사용하여 iOS 클라이언트인지 Android 클라이언트인지 판단합니다.
사용자 에이전트 중국어 이름은 사용자 에이전트이며, 이는 HTTP 프로토콜의 일부이며 사용자 에이전트는 UA라고도 합니다. 브라우저 유형 및 버전, 운영 체제 및 버전, 브라우저 커널 및 방문 웹사이트에 사용 중인 기타 정보를 제공하는 식별자인 특수 문자열 헤더입니다. 이 로고를 통해 사용자가 방문한 웹사이트는 사용자에게 더 나은 경험을 제공하거나 정보 통계를 수행하기 위해 다양한 레이아웃을 표시할 수 있습니다. 예를 들어 휴대전화에서 Google에 액세스하는 것은 컴퓨터에서 액세스하는 것과 다릅니다. 방문자의 UA입니다. UA는 자신을 위장할 수 있습니다.
브라우저 UA 문자열의 표준 형식: 브라우저 식별(운영 체제 식별, 암호화 수준 식별, 브라우저 언어) 렌더링 엔진 식별 버전 정보. 하지만 브라우저마다 다릅니다.
코드는 다음과 같습니다:
var u = navigator.userAgent;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //안드로이드 터미널
var isiOS = !!u.match(/ \(i [^;]+;( U;)? CPU.+Mac OS X/); //ios 터미널
Alert('Android인가요:'+isAndroid);
Alert('iOS 여부:'+isiOS);
2. 두 번째 방법: 모바일, ipad, iphone, WeChat, QQ 등인지 확인합니다.
2.1 코드는 다음과 같습니다:
//액세스 터미널 결정
var browser= {
versions:function(){
var u = navigator.userAgent,
app = navigator.appVersion;
return {
trident: u.indexOf('Trident') > -1, //IE 커널
presto: u.indexOf('Presto') > -1, //오페라 커널
webKit: u.indexOf('AppleWebKit') > -1, //Apple, Google 커널
gecko: u.indexOf('Gecko') > - 1 && u.indexOf('KHTML') == -1,//Firefox 커널
mobile: !!u.match(/AppleWebKit.*Mobile.*/), //어디인지 여부 모바일 터미널
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios 터미널
안드로이드: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, //안드로이드 터미널
아이폰: u.indexOf('iPhone') > -1 , // iPhone입니까, QQHD 브라우저입니까?
iPad: u.indexOf('iPad') > -1, //iPad입니까?
webApp : u.indexOf('Safari') = = -1, //웹이 헤더와 하단이 없는 프로그램이어야 하는지 여부
weixin: u.indexOf('MicroMessenger') > -1, / /위챗인가(2015-01-22에 새로 추가됨)
qq: u.match(/\sQQ/i) == " qq" //QQ인가?
};
}(), p>
언어:(navigator.browserLanguage || navigator.언어).toLowerCase()
}
2.2 사용법
/IE 코어인지 확인
if(browser.versions.trident){ Alert("IE입니다") }
//webKit 코어인지 확인
if(browser.versions.webKit){ Alert("is webKit") }
//확인 모바일인지 여부
if(browser.versions.mobile||browser.versions .android||browser.versions.ios){ Alert("mobile") }2.3 브라우저 언어 감지
currentLang = navigator.언어; //IE를 제외한 다른 브라우저에서 사용하는 언어 확인
if(!currentLang){//IE 브라우저에서 사용하는 언어 확인
currentLang = 탐색
igator.browserLanguage;
}
alert(currentLang);3. iPhone|iPad|iPod|iOS|Android 클라이언트 결정
코드는 다음과 같습니다. p>
if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { //iPhone|iPad|iPod|iOS 판단
//경고 (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인지 모바일인지 확인
코드는 다음과 같습니다. 다음과 같습니다:
//휴대폰 액세스 여부 확인
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 =''; //wap 주소
}
}
5. 일반적으로 사용되는 점프 코드
보기 코드
// 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) == '웹';
< 피> var bIsCE = sUserAgent.match(/windows ce/i) == 'windows ce';
var bIsWM = sUserAgent.match(/windows mobile/i) == 'windows mobile';
p> p>
var bIsAndroid = sUserAgent.match(/android/i) == 'android';
var pathname = location.pathname
if(bIsIpad || bIsMidp || bIsUc || bIsWM || bIsAndroid ){
//wap 주소 }
})();
위 내용은 제가 모든 사람을 위해 정리한 내용입니다. 앞으로 모든 사람에게 도움이 되기를 바랍니다.
관련 기사:
Vue 사용 시 브라우저가 돌아갈 때 beforeRouteLeave가 실행되지 않는 문제
'클릭 연결' 탭 문제 해결 방법 fastclick 코드에서
anime.js에서 애니메이션 체크박스를 구현하는 방법
vue의 공통 구성요소 및 프레임워크 구조(자세한 튜토리얼)