forked from websanova/js-url
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhash.js
44 lines (37 loc) · 1012 Bytes
/
hash.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class Hash {
constructor() {
}
getHash() {
var hashString = location.hash.slice(1);
return hashString.split('/')[0];
}
getArgs() {
var hashString, argsString, argsArray, argsObj = {};
hashString = location.hash.slice(1);
argsString = hashString.split('/')[1];
if(argsString){
argsArray = argsString.split('&');
}
if(argsArray && argsArray.length){
argsArray.forEach(item => {
let arg = item.split('=');
argsObj[arg[0]] = arg[1]
})
}
return argsObj;
}
setArgs(obj) {
var args = this.getArgs();
$.extend(args, obj);
location.hash = `#${this.getHash()}/${this.parse(args)}`;
}
parse(obj) {
var argsArray = [];
for(let key in obj){
argsArray.push([key, obj[key]].join('='))
}
return argsArray.join('&')
}
};
Hash.hash = new Hash;
module.exports = Hash;