Second commit for r1205, per scottb's comments.
Patch by: jgw
Review by: scottb


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@1207 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/util/SelectionScriptTemplate-xs.js b/dev/core/src/com/google/gwt/dev/util/SelectionScriptTemplate-xs.js
index 9219e2d..7cda61d 100644
--- a/dev/core/src/com/google/gwt/dev/util/SelectionScriptTemplate-xs.js
+++ b/dev/core/src/com/google/gwt/dev/util/SelectionScriptTemplate-xs.js
@@ -56,12 +56,20 @@
 
   // --------------- WINDOW ONLOAD HOOK ---------------
 
-  var onBodyDone = function() {
+  var onBodyDoneTimerId;
+  function onBodyDone() {
     if (!bodyDone) {
       bodyDone = true;
       maybeStartModule();
+
+      if ($doc.removeEventListener) {
+        $doc.removeEventListener("DOMContentLoaded", onBodyDone);
+      }
+      if (onBodyDoneTimerId) {
+      	clearInterval(onBodyDoneTimerId);
+      }
     }
-  };
+  }
 
   // For everyone that supports DOMContentLoaded.
   if ($doc.addEventListener) {
@@ -71,9 +79,7 @@
   // Fallback. If onBodyDone() gets fired twice, it's not a big deal.
   var onBodyDoneTimerId = setInterval(function() {
     if (/interactive|loaded|complete/.test($doc.readyState)) {
-      clearInterval(onBodyDoneTimerId);
       onBodyDone();
-      onBodyDone = null;
     }
   }, 50);
 
diff --git a/dev/core/src/com/google/gwt/dev/util/SelectionScriptTemplate.js b/dev/core/src/com/google/gwt/dev/util/SelectionScriptTemplate.js
index b809e6a..dc3f65a 100644
--- a/dev/core/src/com/google/gwt/dev/util/SelectionScriptTemplate.js
+++ b/dev/core/src/com/google/gwt/dev/util/SelectionScriptTemplate.js
@@ -56,12 +56,20 @@
 
   // --------------- WINDOW ONLOAD HOOK ---------------
 
-  var onBodyDone = function() {
+  var onBodyDoneTimerId;
+  function onBodyDone() {
     if (!bodyDone) {
       bodyDone = true;
       maybeStartModule();
+
+      if ($doc.removeEventListener) {
+        $doc.removeEventListener("DOMContentLoaded", onBodyDone);
+      }
+      if (onBodyDoneTimerId) {
+      	clearInterval(onBodyDoneTimerId);
+      }
     }
-  };
+  }
 
   // For everyone that supports DOMContentLoaded.
   if ($doc.addEventListener) {
@@ -71,9 +79,7 @@
   // Fallback. If onBodyDone() gets fired twice, it's not a big deal.
   var onBodyDoneTimerId = setInterval(function() {
     if (/interactive|loaded|complete/.test($doc.readyState)) {
-      clearInterval(onBodyDoneTimerId);
       onBodyDone();
-      onBodyDone = null;
     }
   }, 50);