清单 15. Loader 的 has 插件 require(["dojo/has", "dojo/has!touch?dojo/touch:dojo/mouse", "dojo/dom", "dojo/domReady!"], function(has, hid, dom){ if(has("touch")){ dom.byId("output").innerHTML = "You have a touch capable device and so I
require(["dojo/has", "dojo/has!touch?dojo/touch:dojo/mouse", "dojo/dom",
"dojo/domReady!"],
function(has, hid, dom){
if(has("touch")){
dom.byId("output").innerHTML = "You have a touch capable device and
so I loaded <code>dojo/touch</code>.";
}else{
dom.byId("output").innerHTML = "You do not have a touch capable device and
so I loaded <code>dojo/mouse</code>.";
}
});
这里我们看到了“dojo/has!touch?dojo/touch:dojo/mouse”,这就是我们说的条件选择加载,如果 touch 为 true(程序运行于触摸屏的设备上),则加载“dojo/touch”模块,否则加载“dojo/mouse”模块。同样,回调函数里也是通过 has("touch") 来判断。
除了“dojo/has”,“dojo/sniff”也属于其中之一,它主要是检测浏览器的相关特性。
清单 16. 特性检测的 sniff 模块
require(["dojo/has", "dojo/sniff"], function(has){
if(has("ie")){
// IE 浏览器特殊处理
}
if(sniff("ie"){
// IE 浏览器特殊处理
});
if(has("ie") <= 6){
// IE6 及之前版本
}
if(has("ff") < 3){
// Firefox3 之前版本
}
if(has("ie") == 7){
// IE7
}
});
这里可以通过 sniff 对象做检测,同样也能通过 has 对象做检测。
