Если вам нужно несколько элементов в декодированном формате, попробуйте сначала применить decodeURIComponent к строке href. Если вы хотите декодировать только% 3A, вероятно, будет проще всего сначала декодировать его (чтобы строка выглядела так, как будто она использует =
знаки).
function getUrlVars() {
var vars = {};
var partsWithEqSign = window.location.href.replace(/%3A/g, "=");
var parts = partsWithEqSign.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
Кстати, Используемый фрагмент кода включает регулярные выражения, которые являются одним из самых сложных понятий в JavaScript, но действительно полезны, когда вы их изучите.