Skip to content

Commit 36c0559

Browse files
committed
(fix) replace for all parameter
1 parent 2af113c commit 36c0559

File tree

3 files changed

+23
-14
lines changed

3 files changed

+23
-14
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
/node_modules/
33
/public/
44
yarn.lock
5+
.tool-versions

preview-src/index.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Hello %USER% your password is %PASSWORD%
2424
You need to https://console.openshift.com[login,role=userfied-link]
2525

2626

27-
Hello $USERNAME your password is $PASSWORD
27+
I like %COLOR% color
2828

2929
== Cu solet
3030

src/js/07-userparams-behaviour.js

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,24 @@
11
document.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

Comments
 (0)