Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Nerdmonkey

Ler url após trocar o seu valor

Recommended Posts

Boa noite.

Estou trabalhando com

window.history.replaceState('Object', 'Title', destination);

para alterar a url sem atualizar a página. Até ai tudo ok. Agora a dúvida que surgiu é, como ler o novo valor de um parâmetro que foi alterado?

 

Por exemplo:

Utilizo a função a baixo para utilizar o $_GET na minha url com o jquery

var $_GET = {};

document.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function () {
function decode(s) {
return decodeURIComponent(s.split("+").join(" "));
}
$_GET[decode(arguments[1])] = decode(arguments[2]);
});

Porém quando troco a url, o que está funcionando muito bem, minhas demais funções não funcionam. Pra funcionar preciso atualizar a página, o que não é o objetivo nesse caso.

 

Exemplo:

 

 

// Open overlay [insert-new]
if($_GET['action'] == 'insert-new'){
$('.overlay').slideDown();
}

 

Se atualizar, executa, se não, nada acontece.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas que coisa complicada. Não estou sabendo manipular o DOM aqui pra persistir minha funções. Vou por o exemplo da URL pra vocês entenderem melhor o que estou fazendo.

adm?show=list-main&action=insert-new

Enquanto a url acima existir no endereço do navegador, deveria executar a função abaixo

// Open overlay [insert-new]
if($_GET['action'] == 'insert-new'){
    $('.overlay').slideDown();
}

O que eu preciso fazer exatamente é: verificar o valor da URL com a minha função $_GET => determinar a ação da página. Porém isso deve ser feito após a criação do DOM.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O php nunca será chamado, pois a página não foi para o backend.

 

Esse mesmo teste vc pode fazer com JavaScript client-side, e não com php. Entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Willian. É tudo javascript, não tem php.

 

O $_GET vem da função lá na primeira postagem, ele funciona, mas só se atualizar a página.

Eu preciso que ele funcione em realtime. Alterei a url, quero que ele continue disparando os eventos e checando as funções, mas isso não acontece de jeito nenhum.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah tá.. então, vc precisa executar aquilo no momento em que troca a URL.

 

Não existe um evento para te avisar que a URL foi alterada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@NerdMonkey

 

Com a função window.location.href você consegue resgatar o valor atualizado:


window.history.replaceState( {} , 'testUrl', '/testUrl?teste1=1&test2=2&test3=3' );
console.log(window.location.href)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw pela ajuda de todos. Consegui resolver assim:

 

 

$('.actions').on('click', 'a', function(e){
e.preventDefault();
var destination = ($(this).attr('href'));

window.history.replaceState([], 'Controle de registros', destination);

$('.asides p').removeClass('opening');
$('.asides ul').slideUp();

var explode = destination.split('&'),
explode0 = explode[1].split('=');

// Open overlay [insert-new]
if(explode0[1] == 'insert-new'){
$('.overlay').slideDown();
}
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.