gears.js 1.7 KB

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