]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/router.js
Fix order of initialization
[rails.git] / app / assets / javascripts / router.js
index 7b2e9954622d40255298a839c177354ea1fb2578..7a61af106df9696b36ebc4bb68a8cda13be12da7 100644 (file)
@@ -11,7 +11,7 @@ OSM.Router = function(rts) {
         .replace(namedParam, function(match, optional){
           return optional ? match : '([^\/]+)';
         })
-        .replace(splatParam, '(.*?)') + '(?:$|[?#])');
+        .replace(splatParam, '(.*?)') + '(?:\\?.*)?$');
 
     var route = {};
 
@@ -44,14 +44,19 @@ OSM.Router = function(rts) {
     }
   };
 
-  var currentPath = window.location.pathname,
+  var currentPath = window.location.pathname + window.location.search,
     currentRoute = routes.recognize(currentPath);
 
   currentRoute.run('load', currentPath);
 
   if (window.history && window.history.pushState) {
-    $(window).on('popstate', function() {
-      var path = window.location.pathname;
+    // Set a non-null initial state, so that the e.originalEvent.state
+    // check below works correctly when going back to the initial page.
+    window.history.replaceState({}, document.title, window.location);
+
+    $(window).on('popstate', function(e) {
+      if (!e.originalEvent.state) return; // Is it a real popstate event or just a hash change?
+      var path = window.location.pathname + window.location.search;
       if (path === currentPath) return;
       currentRoute.run('unload');
       currentPath = path;