From eb03ccc02db8c936960e7d435629148d3a7897da Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Wed, 18 Mar 2009 15:57:41 +0000 Subject: [PATCH] Modifying the loader script to check more carefully for the location of OpenLayers.js - allowing folks to have scripts called things like foo-OpenLayers.js. r=crschmidt (closes #1888) git-svn-id: http://svn.openlayers.org/trunk/openlayers@9086 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers.js | 18 ++++++------------ tests/OpenLayers.html | 29 +++++++++++++++++------------ 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/lib/OpenLayers.js b/lib/OpenLayers.js index e755788845..29f964cf22 100644 --- a/lib/OpenLayers.js +++ b/lib/OpenLayers.js @@ -37,28 +37,22 @@ * {String} Path to this script */ _getScriptLocation: function () { - var scriptLocation = ""; - var scriptName = OpenLayers._scriptName; + var scriptLocation = ""; + var isOL = new RegExp("(^|(.*?\\/))(" + OpenLayers._scriptName + ")(\\?|$)"); var scripts = document.getElementsByTagName('script'); for (var i=0, len=scripts.length; i -1) && (index + scriptName.length == pathLength)) { - scriptLocation = src.slice(0, pathLength - scriptName.length); + var match = src.match(isOL); + if(match) { + scriptLocation = match[1]; break; } } } return scriptLocation; - } + } }; /** * OpenLayers.singleFile is a flag indicating this file is being included diff --git a/tests/OpenLayers.html b/tests/OpenLayers.html index 947d3c6598..89081d7983 100644 --- a/tests/OpenLayers.html +++ b/tests/OpenLayers.html @@ -1,19 +1,24 @@ - - + + + + t.eq(OpenLayers._getScriptLocation(), "../", "Script location correctly detected."); + script.setAttribute("src", "../lib/OpenLayers.js?foo"); + t.eq(OpenLayers._getScriptLocation(), "../", "Script location with search string correctly detected."); + + // now pretend we're using a built script + OpenLayers._scriptName = "OpenLayers.js"; + t.eq(OpenLayers._getScriptLocation(), "../lib/", "not fooled by bogus paths"); + + } +