From 02cd00e03bfa63535a69f3ffc82dd8e2d0e09177 Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Mon, 18 Aug 2014 13:52:06 -0400 Subject: [PATCH] Fix URL query parsing in Firefox. Closes bug 14686. original commit: 51254f06267fb13d734e43413ae44740f29d4891 --- .../scribble-lib/scribble/scribble-common.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/pkgs/scribble-pkgs/scribble-lib/scribble/scribble-common.js b/pkgs/scribble-pkgs/scribble-lib/scribble/scribble-common.js index c0a32af9..1ec7da58 100644 --- a/pkgs/scribble-pkgs/scribble-lib/scribble/scribble-common.js +++ b/pkgs/scribble-pkgs/scribble-lib/scribble/scribble-common.js @@ -2,8 +2,7 @@ // Page Parameters ------------------------------------------------------------ -var page_query_string = - (location.href.search(/\?([^#]+)(?:#|$)/) >= 0) && RegExp.$1; +var page_query_string = location.search.substring(1); var page_args = ((function(){ @@ -32,13 +31,16 @@ function MergePageArgsIntoLink(a) { } function MergePageArgsIntoUrl(href) { - href.search(/^([^?#]*)(?:\?([^#]*))?(#.*)?$/); - if (RegExp.$2.length == 0) { - return RegExp.$1 + "?" + page_query_string + RegExp.$3; - } else { + var mtch = href.match(/^([^?#]*)(?:\?([^#]*))?(#.*)?$/); + if (mtch == undefined) { // I think this never happens + return "?" + page_query_string; + } + if (!mtch[2]) { + return mtch[1] + "?" + page_query_string + (mtch[3] || ""); + } // need to merge here, precedence to arguments that exist in `a' var i, j; - var prefix = RegExp.$1, str = RegExp.$2, suffix = RegExp.$3; + var prefix = mtch[1], str = mtch[2] || "", suffix = mtch[3] || ""; var args = str.split(/[&;]/); for (i=0; i