From: John Firebaugh Date: Wed, 7 Aug 2013 21:16:03 +0000 (-0700) Subject: Work around browser inconsistency in iframe URL resolution X-Git-Tag: live~4799 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/3324fd8dd395ab8a54fa04045ee6ad9799337131 Work around browser inconsistency in iframe URL resolution Fixes systemed/iD#1672 --- diff --git a/app/views/site/id.html.erb b/app/views/site/id.html.erb index ccdad9557..53e177a3f 100644 --- a/app/views/site/id.html.erb +++ b/app/views/site/id.html.erb @@ -47,14 +47,12 @@ [extent[1][1], extent[1][0]]]); - // 0ms timeout to avoid iframe JS context weirdness. + // Manually resolve URL to avoid iframe JS context weirdness. // http://bl.ocks.org/jfirebaugh/5439412 - parent.setTimeout(function() { - var hash = parent.OSM.formatHash({ lon: center[0], lat: center[1], zoom: zoom }); - if (hash !== parent.location.hash) { - parent.location.replace(hash); - } - }, 0); + var hash = parent.OSM.formatHash({ lon: center[0], lat: center[1], zoom: zoom }); + if (hash !== parent.location.hash) { + parent.location.replace(parent.location.href.replace(/#.*/, hash)); + } })); parent.$("body").on("click", "a.set_position", function (e) { @@ -63,7 +61,7 @@ // 0ms timeout to avoid iframe JS context weirdness. // http://bl.ocks.org/jfirebaugh/5439412 - parent.setTimeout(function() { + setTimeout(function() { id.map().centerZoom( [data.lon, data.lat], Math.max(data.zoom || 15, 13));