diff --git a/core/modules/views/js/base.js b/core/modules/views/js/base.js
index f929e43..843f279 100644
--- a/core/modules/views/js/base.js
+++ b/core/modules/views/js/base.js
@@ -12,22 +12,30 @@
    * Helper function to parse a querystring.
    */
   Drupal.Views.parseQueryString = function (query) {
-    var args = {};
     var pos = query.indexOf('?');
     if (pos !== -1) {
       query = query.substring(pos + 1);
     }
-    var pairs = query.split('&');
-    for(var i in pairs) {
-      if (typeof(pairs[i]) === 'string') {
-        var pair = pairs[i].split('=');
-        // Ignore the 'q' path argument, if present.
-        if (pair[0] !== 'q' && pair[1]) {
-          args[decodeURIComponent(pair[0].replace(/\+/g, ' '))] = decodeURIComponent(pair[1].replace(/\+/g, ' '));
+
+    var re = /([^&=]+)=?([^&#]*)/g;
+    var params = {}, pair;
+    while ( pair = re.exec(query) ) {
+
+      // Ignore the 'q' path argument, if present.
+      if (pair[1] !== 'q' && pair[2]) {
+        var k = decodeURIComponent( pair[1].replace(/\+/g, " "));
+        var v = decodeURIComponent( pair[2].replace(/\+/g, " "));
+        if (params[k] !== undefined) {
+          if (!Array.isArray(params[k])) {
+            params[k] = [params[k]];
+          }
+          params[k].push(v);
+        } else {
+          params[k] = v;
         }
       }
     }
-    return args;
+    return params;
   };
 
   /**
@@ -69,7 +77,7 @@
       href = href.substring(3, href.length);
     }
     var chars = ['#', '?', '&'];
-    for (var i in chars) {
+    for (var i = 0; i < chars.length; i++) {
       if (href.indexOf(chars[i]) > -1) {
         href = href.substr(0, href.indexOf(chars[i]));
       }
