From 9c43a4844511014bffc5584965339a20f5f6bacd Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Mon, 2 Nov 2020 07:41:21 -0500 Subject: [PATCH] URLSearchParams() can't be iterated as a Map() Related feedback: - https://github.com/uBlockOrigin/uBlock-issues/issues/760#issuecomment-720434320 --- src/js/static-net-filtering.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/js/static-net-filtering.js b/src/js/static-net-filtering.js index 3894142d4..5356cf34d 100644 --- a/src/js/static-net-filtering.js +++ b/src/js/static-net-filtering.js @@ -3560,7 +3560,7 @@ FilterContainer.prototype.filterQuery = function(fctxt) { const url = fctxt.url; const qpos = url.indexOf('?'); if ( qpos === -1 ) { return; } - const params = new self.URLSearchParams(url.slice(qpos + 1)); + const params = new Map(new self.URLSearchParams(url.slice(qpos + 1))); const out = []; for ( const directive of directives ) { const modifier = directive.modifier; @@ -3583,9 +3583,10 @@ FilterContainer.prototype.filterQuery = function(fctxt) { } if ( out.length === 0 ) { return; } fctxt.redirectURL = url.slice(0, qpos); - const query = params.toString(); - if ( query !== '' ) { - fctxt.redirectURL += '?' + query; + if ( params.size !== 0 ) { + fctxt.redirectURL += '?' + Array.from(params).map(a => + `${a[0]}=${encodeURIComponent(a[1])}` + ).join('&'); } return out; };