一段js代码,一段html+css代码,运行之前,如何判断是在手机上运行的,还是在平板电脑上运行的?
---- 如果是获取手机或平板的设备型号来判断,如何js来判断?
回复讨论(解决方案) 可以在后端判断,然后输出特征字符串,然后这个字符串组合前端样式。
根据客户端来判断,会造成各种资源的浪费或页面显示效果的各种问题。
以下是判断手机与pc端的,然后按照要求,在判断出移动端之后,在判断是平板还是手机。
具体的判断的方式也可以使用这种:
http://www.csdn.net/article/2013-01-10/2813567-mobile-detect-open-source-class
大概思路就是这样
public function index(){ if($this->is_mobile()){ $data['home'] = 'wap'; } else { $data['home'] = 'www'; }}protected function is_mobile(){ $user_agent = $_server['http_user_agent']; $mobile_agents = array(240x320, acer, acoon, acs-, abacho, ahong, airness, alcatel, amoi, android, anywhereyougo.com, applewebkit/525, applewebkit/532, asus, audio, au-mic, avantogo, becker, benq, bilbo, bird, blackberry, blazer, bleu, cdm-, compal, coolpad, danger, dbtel, dopod, elaine, eric, etouch, fly , fly_, fly-, go.web, goodaccess, gradiente, grundig, haier, hedy, hitachi, htc, huawei, hutchison, inno, ipad, ipaq, ipod, jbrowser, kddi, kgt, kwc, lenovo, lg , lg2, lg3, lg4, lg5, lg7, lg8, lg9, lg-, lge-, lge9, longcos, maemo, mercator, meridian, micromax, midp, mini, mitsu, mmm, mmp, mobi, mot-, moto, nec-, netfront, newgen, nexian, nf-browser, nintendo, nitro, nokia, nook, novarra, obigo, palm, panasonic, pantech, philips, phone, pg-, playstation, pocket, pt-, qc-, qtek, rover, sagem, sama, samu, sanyo, samsung, sch-, scooter, sec-, sendo, sgh-, sharp, siemens, sie-, softbank, sony, spice, sprint, spv, symbian, tablet, talkabout, tcl-, teleca, telit, tianyu, tim-, toshiba, tsm, up.browser, utec, utstar, verykool, virgin, vk-, voda, voxtel, vx, wap, wellco, wig browser, wii, windows ce, wireless, xda, xde, zte); $is_mobile = false; foreach($mobile_agents as $device){ if(stristr($user_agent, $device)){ $is_mobile = true; break; } } return $is_mobile;}
is_mobile()){ $data['home'] = 'wap'; } else { $data['home'] = 'www'; }}protected function is_mobile(){ $user_agent = $_server['http_user_agent']; $mobile_agents = array(240x320, acer, acoon, acs-, abacho, ahong, airness, alcatel, amoi, android, anywhereyougo.com, applewebkit/525, applewebkit/532, asus, audio, au-mic, avantogo, becker, benq, bilbo, bird, blackberry, blazer, bleu, cdm-, compal, coolpad, danger, dbtel, dopod, elaine, eric, etouch, fly , fly_, fly-, go.web, goodaccess, gradiente, grundig, haier, hedy, hitachi, htc, huawei, hutchison, inno, ipad, ipaq, ipod, jbrowser, kddi, kgt, kwc, lenovo, lg , lg2, lg3, lg4, lg5, lg7, lg8, lg9, lg-, lge-, lge9, longcos, maemo, mercator, meridian, micromax, midp, mini, mitsu, mmm, mmp, mobi, mot-, moto, nec-, netfront, newgen, nexian, nf-browser, nintendo, nitro, nokia, nook, novarra, obigo, palm, panasonic, pantech, philips, phone, pg-, playstation, pocket, pt-, qc-, qtek, rover, sagem, sama, samu, sanyo, samsung, sch-, scooter, sec-, sendo, sgh-, sharp, siemens, sie-, softbank, sony, spice, sprint, spv, symbian, tablet, talkabout, tcl-, teleca, telit, tianyu, tim-, toshiba, tsm, up.browser, utec, utstar, verykool, virgin, vk-, voda, voxtel, vx, wap, wellco, wig browser, wii, windows ce, wireless, xda, xde, zte); $is_mobile = false; foreach($mobile_agents as $device){ if(stristr($user_agent, $device)){ $is_mobile = true; break; } } return $is_mobile;}
学习了
谢谢2楼和3楼,我测试下。有没有不是php代码...?
// tablet private static regex regextablet = new regex(^.*ipad.*$|^.*tablet.*$|^.*android\\s3.*$|^(?!.*mobile.*).*android.*$, regexoptions.ignorecase); // mobile private static regex regexmobile = new regex(^.*(iphone|ipod|android.*mobile|windows\\sphone|iemobile|blackberry|mobile).*$, regexoptions.ignorecase);....httpcontext httpcontext = httpcontext.current;string ua = httpcontext.request.useragent;if (regextablet.ismatch(ua)){ return display_mode_pc;}if (regexmobile.ismatch(ua)){ return display_mode_mobile;}
这两个正则差不多了~~
感谢6楼,有没有纯js代码能够判断出是在手机上运行的,还是在平板电脑上运行的?
js不能跑正则么?
直接匹配一下那两个正则就差不多了~~
感谢6楼,有没有纯js代码能够判断出是在手机上运行的,还是在平板电脑上运行的?