Я использую следующую функцию вырезания / вставки для получения параметров URL.
function getUrlVars() { var vars = [], hash; var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); var i = 0; for(i = 0; i < hashes.length; i++) { hash = hashes[i].split('='); vars.push(hash[0]); vars[hash[0]] = hash[1]; } return vars; }
Он отлично работает, но когда я получаю URL-адрес вроде:
http://someurl.com/login.html?redirecturl=http://someurl.com/game_detail.html?id=3&reminderid=5
и я делаю что-то вроде:
loginVars = getUrlVars(); alert("redirecting to: "+loginVars['redirecturl']);
Я получаю только:
redirecting to: http://someurl.com/game_detail.html?id
но я хочу всего: http://someurl.com/game_detail.html?id=3&reminderid=5
http://someurl.com/game_detail.html?id=3&reminderid=5
Как я уже сказал, в общем случае вы не можете «угадать», особенно когда параметры (по RFC) относятся к исходному URL, а не к URL внутри одного из этих параметров, но в приложении к вашему примеру вы можете использовать
var str = 'http://someurl.com/login.html?redirecturl='+ 'http://someurl.com/game_detail.html?id=3&reminderid=5', separator = 'redirecturl='; alert(str.substring(str.indexOf(separator)+separator.length));