Dojo Gotcha – Initialization with window.onload

I’ve been playing with Dojo, specifically the rich text editor, and came across a Gotcha in setting up the whole thing, which isn’t documented too clearly. Specifically, Dojo needs its own window.onload – if you have your own window.onload (as you probably do if you need any initialisation), it will conflict with Dojo!!!

The solution is described here (though it seems Dojo changed a property name a few months ago, from baseRelativePath to baseScriptURI). This is working for me – in my HTML:

  1. <head>
  2.     <title>My App</title>
  3.     <script type='text/javascript'>
  4.             var djConfig = {
  5.             baseScriptURI: "/ddq/js/dojo/",
  6.           isDebug: true
  7.         };
  8.     </script>
  9.      <script type="text/javascript" src="/javascripts/dojo.js"></script>
  10.      <script type="text/javascript" src="/javascripts/myapp.js"></script>
  11. </head>

In myapp.js:

  1. dojo.require("dojo.event.*");
  2. dojo.event.connect(window, "onload", myappInit);
  3.  
  4. function myappInit() {
  5.     alert("Okay, here we are in the old window.onload and it's still running :-)");
  6. }

It might be a good idea for the Dojo crew included some explanation of this in the standard heres-how-to-setup-dojo.js-intro docs. Maybe someone with in-depth knowledge of Dojo could infer that window.onload must be used by Dojo, but the average programmer taking Dojo a spin won’t.

Links:

Dojo. Awesome framework. Bring on the doco.

One thought on “Dojo Gotcha – Initialization with window.onload

Leave a Reply