gears.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. define("dojo/gears", ["./_base/kernel", "./_base/lang", "./_base/sniff"],
  2. function(dojo, lang, has) {
  3. // module:
  4. // dojo/gears
  5. // summary:
  6. // TODOC
  7. lang.getObject("gears", true, dojo);
  8. dojo.gears._gearsObject = function(){
  9. // summary:
  10. // factory method to get a Google Gears plugin instance to
  11. // expose in the browser runtime environment, if present
  12. var factory;
  13. var gearsObj = lang.getObject("google.gears");
  14. if(gearsObj){ return gearsObj; } // already defined elsewhere
  15. if(typeof GearsFactory != "undefined"){ // Firefox
  16. factory = new GearsFactory();
  17. }else{
  18. if(has("ie")){
  19. // IE
  20. try{
  21. factory = new ActiveXObject("Gears.Factory");
  22. }catch(e){
  23. // ok to squelch; there's no gears factory. move on.
  24. }
  25. }else if(navigator.mimeTypes["application/x-googlegears"]){
  26. // Safari?
  27. factory = document.createElement("object");
  28. factory.setAttribute("type", "application/x-googlegears");
  29. factory.setAttribute("width", 0);
  30. factory.setAttribute("height", 0);
  31. factory.style.display = "none";
  32. document.documentElement.appendChild(factory);
  33. }
  34. }
  35. // still nothing?
  36. if(!factory){ return null; }
  37. // define the global objects now; don't overwrite them though if they
  38. // were somehow set internally by the Gears plugin, which is on their
  39. // dev roadmap for the future
  40. lang.setObject("google.gears.factory", factory);
  41. return lang.getObject("google.gears");
  42. };
  43. /*=====
  44. dojo.gears.available = {
  45. // summary: True if client is using Google Gears
  46. };
  47. =====*/
  48. // see if we have Google Gears installed, and if
  49. // so, make it available in the runtime environment
  50. // and in the Google standard 'google.gears' global object
  51. dojo.gears.available = (!!dojo.gears._gearsObject())||0;
  52. return dojo.gears;
  53. });