diff --git a/assets/resources/scriptlets.js b/assets/resources/scriptlets.js index 55f512dde..4cc2e938f 100644 --- a/assets/resources/scriptlets.js +++ b/assets/resources/scriptlets.js @@ -3503,17 +3503,26 @@ function hrefSanitizer( } return ''; }; + const extractParam = (href, source) => { + if ( Boolean(source) === false ) { return href; } + const recursive = source.includes('?', 1); + const end = recursive ? source.indexOf('?', 1) : source.length; + try { + const url = new URL(href, document.location); + const value = url.searchParams.get(source.slice(1, end)); + if ( value === null ) { return href } + if ( recursive ) { return extractParam(value, source.slice(end)); } + return value; + } catch(x) { + } + return href; + }; const extractText = (elem, source) => { if ( /^\[.*\]$/.test(source) ) { return elem.getAttribute(source.slice(1,-1).trim()) || ''; } if ( source.startsWith('?') ) { - try { - const url = new URL(elem.href, document.location); - return url.searchParams.get(source.slice(1)) || ''; - } catch(x) { - } - return ''; + return extractParam(elem.href, source); } if ( source === 'text' ) { return elem.textContent