我正在寻求建立一个新网站,并希望采取负责任的“移动优先”方法。这种方法的一个原则是只加载你需要的东西,并避免包含大量浪费的库和框架,直到你真正需要它们为止。
为此,我打算使用modernizr2测试功能,然后只加载所需的文件和库。
在javascript方面,我真的很想使用像zepto.js(http://zeptojs.com/)这样的东西,这是一个小巧的javascript库(2-5k),针对移动webkit(和单独的移动webkit)进行了优化一个jquery兼容的语法。它也被设计为具有全开jquery的“热插拔”。所以我的策略是(伪代码):
但现在我的问题是:你们建议用什么(未来证明)技术来检测移动webkit,最好是以纯粹的javascript方式(不使用jquery,插件或其他库)并且可以与{{3}集成}?
答案 0 :(得分:11)
好的,所以我猜我的问题措辞不够或者说有些东西,但是我会找到一个可以接受的解决方案与我的用例一起使用。
// Webkit detection script
Modernizr.addTest('webkit', function(){
return RegExp(" AppleWebKit/").test(navigator.userAgent);
});
// Mobile Webkit
Modernizr.addTest('mobile', function(){
return RegExp(" Mobile/").test(navigator.userAgent);
});
这两个测试会将'webkit'和'mobile'类添加到你的html标签(或'no-webkit'和'no-mobile',如果为false),但也允许你有条件地加载你喜欢的javascript库,视情况而定。
在我的情况下,要么在JQuery或Zepto.js之间切换:
Modernizr.load([
// test mobile webkit (zepto or jquery?)
{
test: Modernizr.webkit && Modernizr.mobile,
nope: ['//ajax.googleapis.com/ajax/libs/jquery/1/jquery.js'],
yep: [baseURL + 'js/lib/zepto.min.js']
}]);
因此,当我检测到访问者正在使用移动webkit浏览器(可能就像100%的iOS或Android设备那样)时,我可以为他们节省大量开销,并为其他人加载常规JQuery,如有必要。由于语法非常相似,无论最终加载哪个框架,插件和其他脚本都可能仍然有效。
答案 1 :(得分:2)
按如下方式修改代码对我有用:
// Webkit detection script
Modernizr.addTest('webkit', function(){
return RegExp(" AppleWebKit").test(navigator.userAgent);
});
// Mobile Webkit
Modernizr.addTest('mobile', function(){
return RegExp(" Mobile").test(navigator.userAgent);
});