- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
function toUrl(url, key, value) {
if(url=='') url=window.location.href;
if(url.indexOf('//')<0) url='//'+url;
// protocol
var u=url.split(/\/?\//);
url={}; url.protocol=u.shift()+'//';
// hostname
url.hostname=u.shift().split(':');
if(url.hostname.length>1) url.port=':'+url.hostname.pop()
url.hostname=url.hostname.pop().split('@').pop();
// сохраним порядок для последующей свертки
url.pathname='/'; url.pagename='';
try {
// hash
url.search=u.pop().split(/#/);
if(url.search.length==2) url.sh='#'+url.search.pop();
url.search=url.search.shift().split(/\?/);
// pagename
url.pagename=url.search.shift(); url.search=url.search[0]
// pathname
url.pathname+=u.join('/')+(u.length?'/':'');
// разбор search, (c) Steven Benner, 2010
try {
var u = {};
url.search.replace(
new RegExp('([^?=&]+)(=([^&]*))?', 'g'),
function($0, $1, $2, $3) {
u[$1] = decodeURIComponent($3);
}
);
url.search=u;
} catch(e) {
delete url.search;
}
} catch(e) { };
// вернем URL как объект, где search так же
// представлен объектом {key:value}
if(!key && !value) return(url);
// возвращаем значение ключа
if(key && !value) return(url.search[key]);
// roll up url
var roll = function(url,search){
var out='';
for(var key in url) {
out+=(search?'&'+key+'=':'')+(key=='search'?'?'+roll(url[key],1).substr(1):url[key]);
};
return out;
};
// устанавливаем значение ключа
if(value) url.search[key]=value.toString();
// сворачиваемся, с учетом порядка следования свойств
return(roll(url));
}
// применение
console.log(toUrl('http://site.my:81/home/path/page.htm?a=1&b=2#hash','a',5));
bootcamp_dropout 06.10.2019 15:04 # 0
cmepmop 07.10.2019 13:45 # −102
cmepmop 07.10.2019 14:43 # −102
см. что ей передаёт на вход этот долбоёб.
XAPDKOPHblu_nemyx 07.10.2019 14:51 # 0