⑴ js判斷客戶端設備類型
可以用navigator.userAgent.indexOf()來判斷。
⑵ 求一段js 判斷設備跳轉網頁的代碼
var userAgentInfo = navigator.userAgent;
var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod");
var flag = false;
var v=0
for ( v = 0; v < Agents.length; v++)
{
if (userAgentInfo.indexOf(Agents[v]) > 0) { flag = true; break; }
}
if(flag){
alert(Agents[v]);// 設備類型
}
else
{
// pc
}
⑶ js如何判斷客戶端是iOS還是Android等移動終端
判斷原理:
JavaScript是前端開發的主要語言,我們可以通過編寫JavaScript程序來判斷瀏覽器的類型及版本。JavaScript判斷瀏覽器類型一般有兩種辦法,一種是根據各種瀏覽器獨有的屬性來分辨,另一種是通過分析瀏覽器的userAgent屬性來判斷的。在許多情況下,值判斷出瀏覽器類型之後,還需判斷瀏覽器版本才能處理兼容性問題,而判斷瀏覽器的版本一般只能通過分析瀏覽器的userAgent才能知道。
瀏覽器類型
⑴瀏覽器特有屬性
⑵根據userAgent
瀏覽器版本
⑴根據userAgent
對於手機瀏覽器判斷
1.如何判斷是否為移動終端 利用正則match,
匹配navigator.userAgent是否含有字元串AppleWebKit*****Mobile
安卓qq瀏覽器HD版 只有AppleWebKit
2手機語言版本的判斷
使用navigator.browserLanguage 便可得出windows phone語言版本,
當然可惡的小小手機語言版本也有兼容性的差異,兼容Mozilla,以及AppleWebKit內核的瀏覽器訪問其語言版本,它會列出 navigator.language
CODE:
<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('Linux') > -1, //android終端或uc瀏覽器
iPhone: u.indexOf('iPhone') > -1 , //是否為iPhone或者QQHD瀏覽器
iPad: u.indexOf('iPad') > -1, //是否iPad
webApp: u.indexOf('Safari') == -1 //是否web應該程序,沒有頭部與底部
};
}(),
language:(navigator.browserLanguage || navigator.language).toLowerCase()
}
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>
比較特別的地方
UC瀏覽器沒有安卓報頭,只返回:linux ,這里粗略的根據linux來判斷是安卓(前提必須滿足是移動終端,UC這點是滿足的)
安卓QQ瀏覽器HD版檢測的結果是:mac, Safari
⑷ js判斷用戶的瀏覽設備是移動設備還是PC
/** *判斷是否是通過手機訪問 */ public static function isMobile() { // 如果有HTTP_X_WAP_PROFILE則一定是移動設備 if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) { return true; } //如果via信息含有則一定是移動設備,部分服務商會屏蔽該信息 if (isset($_SERVER['HTTP_VIA'])) { //找不到為flase,否則為true return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false; } //判斷手機發送的客戶端標志,兼容性有待提高 if (isset($_SERVER['HTTP_USER_AGENT'])) { $clientkeywords = array('nokia', 'sony', 'ericsson', 'mot', 'samsung', 'htc', 'sgh', 'lg', 'sharp', 'sie-', 'philips', 'panasonic', 'alcatel', 'lenovo', 'iphone', 'ipod', 'blackberry', 'meizu', 'android', 'netfront', 'symbian', 'ucweb', 'windowsce', 'palm', 'operamini', 'operamobi', 'openwave', 'nexusone', 'cldc', 'midp', 'wap', 'mobile'); // 從HTTP_USER_AGENT中查找手機瀏覽器的關... /** *判斷是否是通過手機訪問 */ public static function isMobile() { // 如果有HTTP_X_WAP_PROFILE則一定是移動設備 if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) { return true; } //如果via信息含有wap則一定是移動設備,部分服務商會屏蔽該信息 if (isset($_SERVER['HTTP_VIA'])) { //找不到為flase,否則為true return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false; } //判斷手機發送的客戶端標志,兼容性有待提高 if (isset($_SERVER['HTTP_USER_AGENT'])) { $clientkeywords = array('nokia', 'sony', 'ericsson', 'mot', 'samsung', 'htc', 'sgh', 'lg', 'sharp', 'sie-', 'philips', 'panasonic', 'alcatel', 'lenovo', 'iphone', 'ipod', 'blackberry', 'meizu', 'android', 'netfront', 'symbian', 'ucweb', 'windowsce', 'palm', 'operamini', 'operamobi', 'openwave', 'nexusone', 'cldc', 'midp', 'wap', 'mobile'); // 從HTTP_USER_AGENT中查找手機瀏覽器的關鍵字 if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) { return true; } } //協議法,因為有可能不準確,放到最後判斷 if (isset($_SERVER['HTTP_ACCEPT'])) { // 如果只支持wml並且不支持html那一定是移動設備 // 如果支持wml和html但是wml在html之前則是移動設備 if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) { return true; } } return false; }
⑸ 在web前端中。用戶輸入一個物體,程序怎麼自動判斷它的類型。比如:用
除非你先定義好一個對象,裡麵包含你所需要的水果名稱,要不然前端是做不到的
⑹ js判斷是移動端設備還是pc端設備代碼
可以用 screen.availWidth 獲取屏幕寬度,小於768px就是小屏幕設備了(平板電腦豎屏、手機),又或者用 document.touchstart 判斷是否支持觸屏,但是現在一些筆記本電腦都已經支持觸屏了,網頁布局最好用響應式布局。一般主流的做法就是支持觸屏就用觸摸版本的頁面,不支持觸屏就用PC版頁面。
⑺ 在前端方面有哪些識別唯一設備或用戶的方法
UDID的全稱是Unique Device Identifier,顧名思義,它就是蘋果IOS設備的唯一識別碼,它由40個字元的字母和數字組成。在很多需要限制一台設備一個賬號的應用中經常會用到。在iOS5中可以獲取到設備的UDID,後來被蘋果禁止了。
IDFA(identifierForIdentifier)
廣告標示符,適用於對外:例如廣告推廣,換量等跨應用的用戶追蹤等。
是iOS 6中另外一個新的方法,提供了一個方法advertisingIdentifier,通過調用該方法會返回一個NSUUID實例,最後可以獲得一個UUID,由系統存儲著的。不過即使這是由系統存儲的,但是有幾種情況下,會重新生成廣告標示符。如果用戶完全重置系統((設置程序 -> 通用 -> 還原 -> 還原位置與隱私) ,這個廣告標示符會重新生成。另外如果用戶明確的還原廣告(設置程序-> 通用 -> 關於本機 -> 廣告 -> 還原廣告標示符) ,那麼廣告標示符也會重新生成。關於廣告標示符的還原,有一點需要注意:如果程序在後台運行,此時用戶「還原廣告標示符」,然後再回到程序中,此時獲取廣 告標示符並不會立即獲得還原後的標示符。必須要終止程序,然後再重新啟動程序,才能獲得還原後的廣告標示符。
在同一個設備上的所有App都會取到相同的值,是蘋果專門給各廣告提供商用來追蹤用戶而設的,用戶可以在 設置|隱私|廣告追蹤 里重置此id的值,或限制此id的使用,故此id有可能會取不到值,但好在Apple默認是允許追蹤的,而且一般用戶都不知道有這么個設置,所以基本上用來監測推廣效果,是戳戳有餘了。
注意:由於idfa會出現取不到的情況,故絕不可以作為業務分析的主id,來識別用戶。
IDFV(identifierForVendor)
Vindor標示符,適用於對內:例如分析用戶在應用內的行為等。
是給Vendor標識用戶用的,每個設備在所屬同一個Vender的應用里,都有相同的值。其中的Vender是指應用提供商,但准確點說,是通過BundleID的DNS反轉的前兩部分進行匹配,如果相同就是同一個Vender,例如對於com.somecompany.appone,com.somecompany.apptwo
這兩個BundleID來說,就屬於同一個Vender,共享同一個idfv的值。和idfa不同的是,idfv的值是一定能取到的,所以非常適合於作為內部用戶行為分析的主id,來標識用戶,替代OpenUDID。
注意:如果用戶將屬於此Vender的所有App卸載,則idfv的值會被重置,即再重裝此Vender的App,idfv的值和之前不同。
⑻ js怎麼判斷移動設備是Android還是iPhone,接著判斷Android下設備是ipad還是手機
正好我之前弄了個瀏覽終端檢測的頁面,http://foumu.com/m/info.html
JS代碼如下:
$(document).ready(function() {
/* 智能機瀏覽器版本信息:*/
var str="";
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()
}
str+="瀏覽器解析度: "+document.documentElement.clientWidth+"*"+document.documentElement.clientHeight;
str+="<br>屏幕解析度: "+window.screen.width+"*"+window.screen.height;
str+="<br>瀏覽器語言版本: "+browser.language;
str+="<br>是否為移動終端: "+browser.versions.mobile;
str+="<br>ios終端: "+browser.versions.ios;
str+="<br>android終端: "+browser.versions.android;
str+="<br>是否為iPhone: "+browser.versions.iPhone;
str+="<br>是否iPad: "+browser.versions.iPad;
str+="<br>"+navigator.userAgent;
$(".box:first").html(str);
});
⑼ 設備類型和設備類別如何區分
類別的差異范圍要大於類型,設備的類型是指同功不同型的設備,設備的類別是指不同功不同型的設備。