Wait for dom:loaded to fire before initialising the map
authorTom Hughes <tom@compton.nu>
Thu, 7 Jul 2011 09:02:42 +0000 (10:02 +0100)
committerTom Hughes <tom@compton.nu>
Thu, 7 Jul 2011 09:02:42 +0000 (10:02 +0100)
Also very all our use of window.onload and switch to using dom:loaded
instead where we can - the main case where we can't is when using a
vector layer as IE will fail unless the page is completely loaded.

app/views/changeset/_map.html.erb
app/views/site/edit.html.erb
app/views/site/index.html.erb

index 5f5f4aa5d158fbec6239feb233f2491eb09bf697..39906af0833925c8098555e331f972bb9b77d80f 100644 (file)
@@ -57,7 +57,8 @@
     var bbox = new OpenLayers.Bounds(minlon, minlat, maxlon, maxlat);
 
     bounds.extend(bbox);
-    box = addBoxToMap(bbox, "<%= edit.id %>", true);
+
+    addBoxToMap(bbox, "<%= edit.id %>", true);
     <% end %>
 
     vectors.events.on({
index fdbfa5428f1616278585b9b9b464227ec363c7ac..37531a4a7782261fdf48e4408ca0e919a17a8ccd 100644 (file)
@@ -22,7 +22,7 @@
 
 <%= render :partial => preferred_editor %>
 
-<script type="text/javascript" defer="defer">
+<script type="text/javascript">
   function maximiseMap() {
     $("left").style.display = "none";
     $("greeting").style.display = "none";
@@ -53,9 +53,8 @@
     handleResize();
   }
 
-  handleResize();
+  document.observe("dom:loaded", handleResize);
 
-  Event.observe(window, "load", handleResize);
   Event.observe(window, "resize", handleResize);
 </script>
 <% end %>
index 84ffcbe59a52bc7885ceab7c0a4add179c80cdd9..1f1313c53999a799b6c0e8d995ed9946b4db1b0c 100644 (file)
@@ -120,7 +120,7 @@ end
 
 <%= render :partial => 'resize' %>
 
-<script type="text/javascript" defer="defer">
+<script type="text/javascript">
   var marker;
   var map;
 
@@ -142,8 +142,7 @@ end
         setMapExtent(bbox);
 
         <% if box %>
-          // IE requires Vector layers be initialised on page load, and not under deferred script conditions
-          Event.observe(window, 'load', function() { addBoxToMap(bbox) });
+          Event.observe(window, "load", function() { addBoxToMap(bbox) });
         <% end %>
       <% else %>
         var centre = new OpenLayers.LonLat(<%= lon %>, <%= lat %>);
@@ -174,8 +173,7 @@ end
         url += "/full";
       <% end %>
 
-      // IE requires Vector layers be initialised on page load, and not under deferred script conditions
-      Event.observe(window, 'load', function() { addObjectToMap(url, <%= object_zoom %>) });
+      Event.observe(window, "load", function() { addObjectToMap(url, <%= object_zoom %>) });
     <% end %>
 
     map.events.register("moveend", map, updateLocation);
@@ -263,10 +261,9 @@ end
     <% end %>
   }
 
-  mapInit();
-
-  Event.observe(window, "load", installEditHandler);
-  Event.observe(window, "load", handleResize);
+  document.observe("dom:loaded", mapInit);
+  document.observe("dom:loaded", installEditHandler);
+  document.observe("dom:loaded", handleResize);
 
   Event.observe(window, "resize", function() {
     var centre = map.getCenter();