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 5f5f4aa..39906af 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 fdbfa54..37531a4 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 84ffcbe..1f1313c 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();