Defer starting compiles until body is available.

Change-Id: Iae594b518d11024859bb8a17056bedac2e4e4beb
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/recompile_template.js b/dev/codeserver/java/com/google/gwt/dev/codeserver/recompile_template.js
index 0afd4a5..48ce22b 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/recompile_template.js
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/recompile_template.js
@@ -18,7 +18,21 @@
   var $doc = $wnd.document;
   var $namespace = {};
   var moduleName = __MODULE_NAME__;
-  __PROPERTY_PROVIDERS__
-  __LIB_JS__
-  __MAIN__
+  
+  var executeMain = function(){
+    __PROPERTY_PROVIDERS__
+    __LIB_JS__
+    __MAIN__
+  };
+
+  if (/loaded|complete/.test($doc.readyState)) {
+    executeMain();
+  } else {
+    //defer app script insertion until the body is ready
+    if($wnd.addEventListener){
+      $wnd.addEventListener('DOMContentLoaded', executeMain, false);
+    } else{
+      $wnd.attachEvent('onload', executeMain);
+    }
+  }
 })();