diff --git a/lib/OpenLayers.js b/lib/OpenLayers.js
index 79dc2f4..a702440 100644
--- a/lib/OpenLayers.js
+++ b/lib/OpenLayers.js
@@ -44,10 +44,19 @@
          * {String} Path to this script
          */
         _getScriptLocation: (function() {
-            var r = new RegExp("(^|(.*?\\/))(" + scriptName + ")(\\?|$)");
-            var s = document.getElementsByTagName('script');
-            var m = s[s.length-1].getAttribute("src").match(r);
-            var l = m ? m[1] : "";
+            var r = new RegExp("(^|(.*?\\/))(" + scriptName + ")(\\?|$)"),
+                s = document.getElementsByTagName('script'),
+                src, m, l = "";
+            for(var i=0, len=s.length; i<len; i++) {
+                src = s[i].getAttribute('src');
+                if(src) {
+                    var m = src.match(r);
+                    if(m) {
+                        l = m[1];
+                        break;
+                    }
+                }
+            }
             return (function() { return l; });
         })()
     };
diff --git a/lib/OpenLayers/SingleFile.js b/lib/OpenLayers/SingleFile.js
index b07377a..0a07418 100644
--- a/lib/OpenLayers/SingleFile.js
+++ b/lib/OpenLayers/SingleFile.js
@@ -25,9 +25,19 @@ var OpenLayers = {
      * {String} Path to this script
      */
     _getScriptLocation: (function() {
-        var s = document.getElementsByTagName('script');
-        var m = s[s.length-1].getAttribute("src").match(/(^|(.*?\/))(OpenLayers\.js)(\?|$)/);
-        var l = m ? m[1] : "";
+        var r = new RegExp("(^|(.*?\\/))(OpenLayers\.js)(\\?|$)"),
+            s = document.getElementsByTagName('script'),
+            src, m, l = "";
+        for(var i=0, len=s.length; i<len; i++) {
+            src = s[i].getAttribute('src');
+            if(src) {
+                var m = src.match(r);
+                if(m) {
+                    l = m[1];
+                    break;
+                }
+            }
+        }
         return (function() { return l; });
     })()
 };
diff --git a/tests/OpenLayers4.html b/tests/OpenLayers4.html
new file mode 100644
index 0000000..415c060
--- /dev/null
+++ b/tests/OpenLayers4.html
@@ -0,0 +1,18 @@
+<html>
+<head>
+    <script type="text/javascript">
+	OpenLayers = {singleFile: true}; // just to make the test run faster
+        document.write('<scr'+'ipt src="../lib/OpenLayers.js"></scr'+'ipt>');
+        document.write('<scr'+'ipt src="bogus/foo-/OpenLayers.js"></scr'+'ipt>');
+    </script>
+    <script type="text/javascript">
+        function test_OpenLayers(t) {
+            t.plan(1);
+            t.eq(OpenLayers._getScriptLocation(), "../lib/",
+                 "Script location correctly detected, and not fooled by other scripts.");
+        }
+    </script>
+</head>
+<body>
+</body>
+</html>
diff --git a/tests/list-tests.html b/tests/list-tests.html
index c990ed0..8a8bc79 100644
--- a/tests/list-tests.html
+++ b/tests/list-tests.html
@@ -159,6 +159,7 @@
     <li>OpenLayers1.html</li>
     <li>OpenLayers2.html</li>
     <li>OpenLayers3.html</li>
+    <li>OpenLayers4.html</li>
     <li>Popup.html</li>
     <li>Popup/Anchored.html</li>
     <li>Popup/AnchoredBubble.html</li>
