使用device.js检测设备并实现不同设备展示不同网页
2014-04-09 23:34
507 查看
现在很多时候会用@media来控制页面在不同分辨率的设备商展示不同效果,但是有些时候想在直接在PC上展示一个做好的页面,在mobile展示另一个页面。这个时候可以借助device.js来检测设备,然后打开不同的页面(device.js 是一个可以用来检测设备,操作系统和方向的js库)。当然这种做法需要一次跳转。
假设有个m.html想用于mobile端展示,pc.html想用于pc端展示。这个时候可以用index.html作为入口,在<head>内引入device.js来检测设备,然后用js来实现跳转。
当设备为Mobile和tablet的时候展示m.html
否则展示pc.html
实现代码如下
其中device.js代码如下
当然,也可以用device.js来逐个检测设备。
javascript方法如下。
比如可以用如下代码来检测设备是否为IOS设备
或者可以用来控制当为mobile或者tablet的时候加载m.css, PC的时候加载pc.css
参考链接:
https://github.com/matthewhudson/device.js
假设有个m.html想用于mobile端展示,pc.html想用于pc端展示。这个时候可以用index.html作为入口,在<head>内引入device.js来检测设备,然后用js来实现跳转。
当设备为Mobile和tablet的时候展示m.html
否则展示pc.html
实现代码如下
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>responsive demo</title> <script src="device.js"></script> </head> <body style="margin: auto; position: absolute; width:100%; height: 100%"> <script> var isMobile = device.mobile(), isTable = device.tablet(); if(isMobile || isTable){ window.open("m.html","_self"); } else{ window.open("pc.html","_self"); } </script> </body> </html>
其中device.js代码如下
(function() { var previousDevice, _addClass, _doc_element, _find, _handleOrientation, _hasClass, _orientation_event, _removeClass, _supports_orientation, _user_agent; previousDevice = window.device; window.device = {}; _doc_element = window.document.documentElement; _user_agent = window.navigator.userAgent.toLowerCase(); device.ios = function() { return device.iphone() || device.ipod() || device.ipad(); }; device.iphone = function() { return _find('iphone'); }; device.ipod = function() { return _find('ipod'); }; device.ipad = function() { return _find('ipad'); }; device.android = function() { return _find('android'); }; device.androidPhone = function() { return device.android() && _find('mobile'); }; device.androidTablet = function() { return device.android() && !_find('mobile'); }; device.blackberry = function() { return _find('blackberry') || _find('bb10') || _find('rim'); }; device.blackberryPhone = function() { return device.blackberry() && !_find('tablet'); }; device.blackberryTablet = function() { return device.blackberry() && _find('tablet'); }; device.windows = function() { return _find('windows'); }; device.windowsPhone = function() { return device.windows() && _find('phone'); }; device.windowsTablet = function() { return device.windows() && _find('touch'); }; device.fxos = function() { return (_find('(mobile;') || _find('(tablet;')) && _find('; rv:'); }; device.fxosPhone = function() { return device.fxos() && _find('mobile'); }; device.fxosTablet = function() { return device.fxos() && _find('tablet'); }; device.meego = function() { return _find('meego'); }; device.mobile = function() { return device.androidPhone() || device.iphone() || device.ipod() || device.windowsPhone() || device.blackberryPhone() || device.fxosPhone() || device.meego(); }; device.tablet = function() { return device.ipad() || device.androidTablet() || device.blackberryTablet() || device.windowsTablet() || device.fxosTablet(); }; device.portrait = function() { return Math.abs(window.orientation) !== 90; }; device.landscape = function() { return Math.abs(window.orientation) === 90; }; device.noConflict = function() { window.device = previousDevice; return this; }; _find = function(needle) { return _user_agent.indexOf(needle) !== -1; }; _hasClass = function(class_name) { var regex; regex = new RegExp(class_name, 'i'); return _doc_element.className.match(regex); }; _addClass = function(class_name) { if (!_hasClass(class_name)) { return _doc_element.className += " " + class_name; } }; _removeClass = function(class_name) { if (_hasClass(class_name)) { return _doc_element.className = _doc_element.className.replace(class_name, ""); } }; if (device.ios()) { if (device.ipad()) { _addClass("ios ipad tablet"); } else if (device.iphone()) { _addClass("ios iphone mobile"); } else if (device.ipod()) { _addClass("ios ipod mobile"); } } else if (device.android()) { if (device.androidTablet()) { _addClass("android tablet"); } else { _addClass("android mobile"); } } else if (device.blackberry()) { if (device.blackberryTablet()) { _addClass("blackberry tablet"); } else { _addClass("blackberry mobile"); } } else if (device.windows()) { if (device.windowsTablet()) { _addClass("windows tablet"); } else if (device.windowsPhone()) { _addClass("windows mobile"); } else { _addClass("desktop"); } } else if (device.fxos()) { if (device.fxosTablet()) { _addClass("fxos tablet"); } else { _addClass("fxos mobile"); } } else if (device.meego()) { _addClass("meego mobile"); } else { _addClass("desktop"); } _handleOrientation = function() { if (device.landscape()) { _removeClass("portrait"); return _addClass("landscape"); } else { _removeClass("landscape"); return _addClass("portrait"); } }; _supports_orientation = "onorientationchange" in window; _orientation_event = _supports_orientation ? "orientationchange" : "resize"; if (window.addEventListener) { window.addEventListener(_orientation_event, _handleOrientation, false); } else if (window.attachEvent) { window.attachEvent(_orientation_event, _handleOrientation); } else { window[_orientation_event] = _handleOrientation; } _handleOrientation(); }).call(this);
当然,也可以用device.js来逐个检测设备。
javascript方法如下。
Device | JavaScript Method |
---|---|
Mobile | device.mobile() |
Tablet | device.tablet() |
iOS | device.ios() |
iPad | device.ipad() |
iPhone | device.iphone() |
iPod | device.ipod() |
Android | device.android() |
Android Phone | device.androidPhone() |
Android Tablet | device.androidTablet() |
BlackBerry | device.blackberry() |
BlackBerry Phone | device.blackberryPhone() |
BlackBerry Tablet | device.blackberryTablet() |
Windows | device.windows() |
Windows Phone | device.windowsPhone() |
Windows Tablet | device.windowsTablet() |
Firefox OS | device.fxos() |
Firefox OS Phone | device.fxosPhone() |
Firefox OS Tablet | device.fxosTablet() |
MeeGo | device.meego() |
var isIPhone = device.iphone(), isIPad = device.ipad(); var isIOS = isIPhone || isIPad; if(isIOS){ alert( "is this iOS?"+isIOS ); }
或者可以用来控制当为mobile或者tablet的时候加载m.css, PC的时候加载pc.css
if(isMobile | isTable){ document.write( ' <link rel="stylesheet" href="m.css">'); } else{ document.write('<link rel="stylesheet" href="pc.css">'); }
参考链接:
https://github.com/matthewhudson/device.js
相关文章推荐
- 微信公众号用java中控服务器-实现用户网页授权和获取使用JS-SDK权限
- 【手机变身无线音箱-WIFI流媒体传输】--音乐在PC和手机间双向播放-详解Android DLNA使用-使用DLNA实现不同设备间媒体共享
- 11 Three.js使用Detector.js插件实现兼容性检测
- JS----Device.js 检测设备平台,操作系统的javascript
- js实现网页检测是否安装了 Flash Player 插件
- 使用js检测浏览器的实现代码
- 用户从手机的浏览器访问www.baidu.com,看到的可能跟桌面PC电脑,是不太一样的网页效果,会更适合移动设备使用。请简要分析一下,实现这种网页区分显示的原因及技术原理。
- JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
- 使用js实现移动设备访问跳转到指定目录
- JS实现点击按钮后框架内载入不同网页的方法
- threesixty.min.js 和jquery.threesixty.js使用总结----实现360度展示
- js实现网页检测是否安装了 Flash Player 插件
- JS判断移动设备最佳方法 并实现跳转至手机版网页
- js实现打开网页设备判断
- 实习小白::(转) Cocos2d-x 3.0 开发(十四)使用UIScrollView 实现大小不同物品拖动展示
- 利用Device.js判断设备进行网页布局
- JS和css实现检测移动设备方向的变化并判断横竖屏幕
- 使用NodeJS+AngularJS+MongoDB实现一个Web数据扒取-分析-展示的系统
- JS判断移动设备最佳方法 并实现跳转至手机版网页
- js 根据 useragent 判断访问网页的 设备 和 浏览器 分类: 浏览器检测 浏览器兼容 判断设备 判断浏览器 2015-01-28 11:23 266人阅读 评论(0) 收藏