uacss.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*
  2. Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
  3. Available via Academic Free License >= 2.1 OR the modified BSD license.
  4. see: http://dojotoolkit.org/license for details
  5. */
  6. if(!dojo._hasResource["dojo.uacss"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
  7. dojo._hasResource["dojo.uacss"] = true;
  8. dojo.provide("dojo.uacss");
  9. (function(){
  10. // summary:
  11. // Applies pre-set CSS classes to the top-level HTML node, based on:
  12. // - browser (ex: dj_ie)
  13. // - browser version (ex: dj_ie6)
  14. // - box model (ex: dj_contentBox)
  15. // - text direction (ex: dijitRtl)
  16. //
  17. // In addition, browser, browser version, and box model are
  18. // combined with an RTL flag when browser text is RTL. ex: dj_ie-rtl.
  19. var d = dojo,
  20. html = d.doc.documentElement,
  21. ie = d.isIE,
  22. opera = d.isOpera,
  23. maj = Math.floor,
  24. ff = d.isFF,
  25. boxModel = d.boxModel.replace(/-/,''),
  26. classes = {
  27. dj_quirks: d.isQuirks,
  28. // NOTE: Opera not supported by dijit
  29. dj_opera: opera,
  30. dj_khtml: d.isKhtml,
  31. dj_webkit: d.isWebKit,
  32. dj_safari: d.isSafari,
  33. dj_chrome: d.isChrome,
  34. dj_gecko: d.isMozilla
  35. }; // no dojo unsupported browsers
  36. if(ie){
  37. classes["dj_ie"] = true;
  38. classes["dj_ie" + maj(ie)] = true;
  39. classes["dj_iequirks"] = d.isQuirks;
  40. }
  41. if(ff){
  42. classes["dj_ff" + maj(ff)] = true;
  43. }
  44. classes["dj_" + boxModel] = true;
  45. // apply browser, browser version, and box model class names
  46. var classStr = "";
  47. for(var clz in classes){
  48. if(classes[clz]){
  49. classStr += clz + " ";
  50. }
  51. }
  52. html.className = d.trim(html.className + " " + classStr);
  53. // If RTL mode, then add dj_rtl flag plus repeat existing classes with -rtl extension.
  54. // We can't run the code below until the <body> tag has loaded (so we can check for dir=rtl).
  55. // Unshift() is to run sniff code before the parser.
  56. dojo._loaders.unshift(function(){
  57. if(!dojo._isBodyLtr()){
  58. var rtlClassStr = "dj_rtl dijitRtl " + classStr.replace(/ /g, "-rtl ")
  59. html.className = d.trim(html.className + " " + rtlClassStr);
  60. }
  61. });
  62. })();
  63. }