QueryString no JavaScript

Talvez eu apanhe de algumas pessoas por esta mexendo com javascript he he, mas estou a terminar um pequeno e simples freela de um site, na verdade estou ajudando um amigo com a parte de Javascript/Ajax.
Entenda a Situacao:
Tinhamos a seguinte URL para consumir
www.nomedosite.com/?pagina=fotos&album=Casamento
No caso precisaríamos do valor de album (Casamento) e ele fez o seguinte script:
window.location.search.substring(20);
Que no caso pega apartir da posicao 20 ate o fim da string
Isso funcionou? Sim!
Problema Resolvido? Sim!
Foi à melhor forma de fazer? Não!
Tínhamos tempo para resolver algumas coisas, então depois que finalizamos algumas coisas eu fiquei com isso na cabeça, o maldito substring(20) que ate então eu nunca tinha usado sem passar seu segundo parâmetro.
Foi então que juntando minha vontade de aprender OOP, pensei em fazer um método para eu pegar qualquer QueryString , pois no exemplo acima se tivéssemos qualquer outro parâmetro depois dele já não iria funcionar (esse é o problema de qualquer sistema sem sua fase de TDD).
Já agradeço o Julio Greff que postou sobre métodos estáticos em javascript, eu estava quebrando a cabeça colocando o Método dentro da função xD.
Estou aprendendo a documentar, Na verdade nao estudei ainda isso rs Mas eu vou arrumar Palavra de “Poeta Morto”.
Eu já tinha a lógica toda na cabeça então foi muito simples fazer, olha só:
/**
* URLUtils
* @author Ronaldo Hard - hardinspire.com
*/
function URLUtils()
{
}
/**
* Método Statico para QueryString
* @param passa a String a ser procurada
*/
URLUtils.getParameter = function(queryString)
{
var nothingFound = 0;
var arrParameters = new Array();
arrParameters = window.location.search.split("&");
arrParameters[0] = arrParameters[0].substring(1, arrParameters[0].length)
for( var i in arrParameters )
{
if (arrParameters[i].indexOf(queryString) == 0)
{
var searchParams = arrParameters[i].indexOf("=") + 1;
var cutParam = arrParameters[i].substring(searchParams, arrParameters[i].toString().length);
return new String(cutParam);
}
else
{
nothingFound++;
if ( nothingFound == arrParameters.length)
{
throw new Error("QueryString não encontrada!");
}
}
}
}// JavaScript Document
Salve esse script como URLUtils.js, e qualquer arquivo que quiser usaldo basta usar direto o metodo estatico por exemplo:
//getAlbum recebe o valor do parametro album
var getAlbum = URLUtils.getParameter("album");
Simples assim!
=)
Nesse seu script, como você só usa métodos estáticos, você não precisava ter usado uma função. Existe uma coisa no JavaScript chamada literal de objeto (ou JSON, pros mais chegados), e você pode definir métodos pra ele também:
var URLUtils = {
“getParameter”: function() { /* e o método vai aqui… */ }
}
Nossa acabei de escrever o post e comentou o.O’
To de bicao em javascript, rs Mas valeu a dica vou ver esse esquema que voce postou
vlw fera!
=)
Ahh, o javascript e a suas 329408329084 formas de se fazer a mesma coisa… hehe
Boa solução!
@Julio Greff – Mas tipo, pretendo futuramente colocar mais metodos ao URLUtils (seria uma library pessoal sabe) com o Json matador eu conseguiria ?
seria tipo assim:
var URLUtils = { “getParameter”: function() { /* e o método vai aqui… */ } “getHash”: function() { /* e o método vai aqui… */ } }@Hard: sim, você pode adicionar quantos métodos estáticos você quiser. Só não funcionam métodos de instância, aí você precisaria de um construtor mesmo. Ali no seu exemplo só faltou a vírgula depois do final do primeiro método
@Julio Greff: Ah sim! Entendi! É vero esqueci a virgula para separar as coisas, rs Vlw cara.
=)