Web Mobile App虽然可以跨平台,实现“一次编写,处处运行”,但是有些时候不得不考虑当前的运行平台,例如移动设备对CSS3,HTML5特性的支持情况就参差不齐。这种检测一般有三种方法:
1)特性检测(Feture)——检测当前运行平台是否支持某一特性
2)浏览器检测(Browser)——检测当前运行平台的浏览器以及操作系统
3)形态因素检测(Form Factor)——检测当前运行平台,例如smartphone、TV
下面我们一一介绍
一、特性检测
这种方式非常流行,思想就是如果支持该特性就使用,否则就不使用,用其它方案代替。例如:
detectCanvas() ? showGraph() : showTable();
function detectCanvas() {
var canvas = document.createElement("canvas");
return !!canvas.getContext;
}
我们可以简单的通过这种方式来检测大多数特性,高兴的是,目前已经有框架为我们做了这些事情——Modernizr,如果用该框架,代码可以以如下方式写:
Modernizr.canvas ? showGraph() : showTable();
特性检测不仅仅局限于JavaScript,在Css中也会用到,如media queries,我们可以检测屏幕大小,例如:
@media screen and (min-width: 400px) {
//屏幕尺寸大于400px的时候需要应用的样式
}
media queries的具体用法可以参见:
https://developer.mozilla.org/En/CSS/Media_queries
http://peter.sh/2010/11/multiple-profiles-the-matchmedia-interface-and-locally-modified-files/
二、浏览器检测
浏览器检测的应用程度不及特性检测,但是在某些场合先仍会使用。
在20世纪90年的“浏览器大战”中,微软(Microsoft)和网井(Netscape)持续不断地增加各自浏览器的特性,所以浏览器检测开始流行起来。如果是IE5,那么使用XMLHttpRequest,否则使用iFrame。如果只有IE5支持XMLHttpRequest那么这种检测是非常值得的。
浏览器检测一般都会检测 browser/version/OS,因为这三者才能决定是否支持某一特性,例如如果是mobile safari,我们就可以将UI做成类似native那样。
怎么进行浏览器检测呢?上面提到的三种因素都可以通过UserAgent得到,想要信息越精确,实现程度就越难,前端和服务器端都可以得到该对象。JavaScript版可以参见:http://www.quirksmode.org/js/detect.html
UserAgent对象随着浏览器种类的增加也会变的越来越复杂,而且有些浏览器它不走寻常路,得不到什么可靠的信息,所以在mobile web开发中不推介使用这种方式检测。
三、形态因素检测
该方法是在2011年的Google IO会议上提出的,概念和使用上都比较新。提出者认为我们的应用应该尽量符合每个平台上的用户的使用习惯,例如在Android上就有物理按键返回键,在iPhone上就没有。但是注意这并不是要针对每个平台进行独自开发,而是已一种MVC的方式进行开发,Model层和Controller层不变,变的是view层(针对各个平台的视图在变),这样保证了代码的复用。
应用形态因素检测中的架构,可以很容易地管理各个平台的视图(View),当然在各自的视图里我们仍然可以使用特性检测和浏览器检测。
FormFactor开源项目地址:https://github.com/PaulKinlan/formfactor
总结
现代的Web开发不仅仅只是在桌面浏览器上开发,用户会在各种设备上进行访问,目前通过HTML5可以满足绝大数需求,作为开发者,要尽量使应用适应各个环境,要充分利用运行环境的特性,并且要符合用户的使用习惯。所以第一步要做的就是平台检测,即本文所谈到的。
浏览器检测已经不再那么流行,因为使用它的目的还是用来检测是否有某些特性,但是这通过特性检测可以很容易做到的。
形态因素检测适用于有多种UI的应用。
值得一提的是:不管使用哪种检测,都要保证“我们的应用不论运行在哪种平台,都要能很好地适应”;
分享到:
相关推荐
USSD业务平台解决方案,特别是SUNFLY平台,为3G网络环境下增值业务的快速开发和部署提供了强大支持。通过结合先进的网络技术与灵活的业务脚本语言,USSD业务不仅能够满足用户日益增长的服务需求,还为运营商和开发者...
《HTML5 Mobile Development Cookbook》这本书提供了实践性的解决方案,帮助开发者充分利用HTML5的力量。 HTML5作为下一代网页标准,引入了许多新功能和改进,旨在提高网页的交互性、可访问性和离线存储能力。以下...
尽管移动Web 具有一定的优势(如无需安装即可使用),但在Windows Mobile 设备上开发移动Web 应用面临着许多挑战: 1. **屏幕尺寸**:移动设备屏幕较小,需要特别设计用户界面。 2. **网络连接**:移动设备的网络...
总的来说,jQuery Mobile 1.3.2为移动Web应用开发提供了一套强大的工具集,通过其丰富的组件和事件系统,开发者可以快速构建出美观且功能完善的移动应用。然而,理解并熟练掌握其工作原理和最佳实践,对于提高应用...
Spring Mobile 是一个...总的来说,Spring Mobile 提供了一套优雅的解决方案,帮助开发者构建对移动设备友好的 Web 应用。通过深入研究这些示例,你可以掌握这个框架的精髓,从而更好地服务于不断增长的移动用户群体。
这个项目的核心目标是提供一个在移动设备上也能顺畅运行的解决方案,使得用户可以在Facebook页面上无缝地体验应用的功能。 在Laravel框架中,开发者可以利用其强大的功能和优雅的设计模式来构建高效、可维护的Web...
jQuery Mobile 适用于快速构建移动Web应用,尤其是那些需要跨平台兼容性的项目。它特别适合那些希望利用现有HTML和JavaScript技能开发移动应用的开发者。尽管它在性能和轻量化方面可能不如某些现代框架,但对于快速...
尽管1.4版本提供了许多改进,但有时旧版本的稳定性和已知问题解决方案可能更具吸引力。 JQuery Mobile 的核心特性包括: 1. **页面结构和导航**:通过数据属性(如`data-role`和`data-url`)来标记HTML元素,...
- **企业级应用**:Veracode的解决方案适用于任何规模的企业,无论是内部开发的应用程序还是外包、供应商提供的软件,甚至是开源项目。 - **多平台支持**:Veracode支持各种操作系统和开发平台,确保全面覆盖不同...
1.2.4 Android移动Web项目开发的三种解决方案:Native, Web和Hybrid优缺陷分析 4 1.2.5国内外应用现状 6 1.2.6 研究现状总结 7 1.3研究目标与内容 7 1.3.1多窗口浏览器模式的实现机制 7 1.3.2跨域交互即缓存处理方法...
VANTIQ-GiConnect视频识别产品是一个功能强大且灵活的视频识别解决方案,能够满足用户的多种需求,帮助用户快速开发和部署智能应用程序。 知识点: * 事件驱动视频识别 * 视频分析和处理 * 人脸识别和检测 * ...
ASP.NET Mobile Templates for VS2008是一款专为Visual Studio 2008设计的工具,旨在帮助开发者迅速构建适用于移动设备的Web应用程序,特别是针对WAP(无线应用协议)站点的开发。虽然这些模板在VS.NET 2005中就已经...
在现代Web开发中,Spring框架是Java领域中最受欢迎的全栈解决方案之一,而Spring MVC作为其一部分,提供了强大的MVC(Model-View-Controller)架构支持。Spring Mobile是Spring框架的扩展,专为移动设备优化,它使得...
总结来说,ASP.NET MVC4提供了一个高效、模块化且易于测试的Web开发平台,涵盖了从视图到模型再到控制的所有方面,为开发者带来高效、可扩展和高性能的Web应用解决方案。通过学习和掌握ASP.NET MVC4,开发者能够构建...
RDA是一种轻量级的数据同步解决方案,主要用于移动设备与服务器之间的数据交互。它不需要对SQL Server进行复杂的配置,支持通过HTTP协议进行数据传输,并且支持SSL加密,确保数据的安全性。此外,RDA还支持多种无线...
随着移动互联网技术的迅猛...通过上述知识点的梳理,可以看出本文的核心目的在于解决Web资源操纵在实际应用中存在的安全隐患,通过实证研究的方式分析问题、提出解决方案,并最终推动相关技术的发展和应用安全的提升。
ASP.NET WAP不仅限于基本的Web浏览,还可以利用Windows Mobile或其他支持.NET框架的设备进行更复杂的应用开发,如推送通知、GPS集成、蓝牙通信等。此外,随着移动技术的发展,ASP.NET MVC和 Xamarin等现代框架也提供...
综上所述,jQuery Mobile 提供了一个全面的解决方案,帮助开发者快速构建具有触摸优化界面的移动Web应用。通过掌握其核心概念、组件、事件处理和性能优化策略,可以有效地提升开发效率和应用质量。