11document . addEventListener ( 'DOMContentLoaded' , function ( ) {
22 var queryString = window . location . search
33
4- function getParameterByName ( name , url ) {
4+ /*
5+ * Thanks to https://gomakethings.com/getting-all-query-string-values-from-a-url-with-vanilla-js/
6+ */
7+ function getParams ( url ) {
58 if ( ! url ) url = window . location . href
6- name = name . replace ( / [ [ \] ] / g, '\\$&' )
7- var regex = new RegExp ( '[?&]' + name + '(=([^&#]*)|&|#|$)' )
8- var results = regex . exec ( url )
9- if ( ! results ) return null
10- if ( ! results [ 2 ] ) return ''
11- var val = decodeURIComponent ( results [ 2 ] . replace ( / \+ / g, ' ' ) )
12- console . log ( name + '=' + val )
13- return val
9+ var params = { }
10+ var parser = document . createElement ( 'a' )
11+ parser . href = url
12+ var query = parser . search . substring ( 1 )
13+ var vars = query . split ( '&' )
14+ for ( var i = 0 ; i < vars . length ; i ++ ) {
15+ var pair = vars [ i ] . split ( '=' )
16+ params [ pair [ 0 ] ] = decodeURIComponent ( pair [ 1 ] )
17+ }
18+ return params
1419 }
1520
16- function walkText ( node , pattern , value ) {
21+ function replaceParamsInNodes ( node , pattern , value ) {
1722 if ( node . nodeType === 3 ) {
1823 var re = new RegExp ( pattern , 'g' )
1924 var text = node . data
@@ -25,13 +30,16 @@ document.addEventListener('DOMContentLoaded', function () {
2530 }
2631 if ( node . nodeType === 1 && node . nodeName !== 'SCRIPT' ) {
2732 for ( var i = 0 ; i < node . childNodes . length ; i ++ ) {
28- walkText ( node . childNodes [ i ] , pattern , value )
33+ replaceParamsInNodes ( node . childNodes [ i ] , pattern , value )
2934 }
3035 }
3136 }
3237
33- walkText ( document . body , '(%USER%|\\$USERNAME)' , getParameterByName ( 'USER' ) )
34- walkText ( document . body , '(%PASSWORD%|\\$PASSWORD)' , getParameterByName ( 'PASSWORD' ) )
38+ var allParams = getParams ( )
39+ var keys = Object . keys ( allParams )
40+ for ( var i = 0 ; i < keys . length ; i ++ ) {
41+ replaceParamsInNodes ( document . body , '(%' + keys [ i ] . toUpperCase ( ) + '%)' , allParams [ keys [ i ] ] )
42+ }
3543
3644 document . querySelectorAll ( '.userfied-link' ) . forEach ( function ( el ) {
3745 el . href += queryString
0 commit comments