Ir para conteúdo

POWERED BY:

Arquivado

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

LeoO_DF

Cancelar Funções javascript

Recommended Posts

Eu estou fazendo um sistema de navegação e nele ao clicar no link a pagina irá ser carregada, terá todo aquele efeito de loading da pagina e talz, e se o usuário clicar em outro link aquele load da pagina anteriormente clicada deverá ser cancelado, porem eu não consigo fazer isso, e também tenho um sistema de Modal, que ele busca o conteúdo através de um $.get();

Bom eu queria saber como eu posso cancelar esse 2 eventos javascript, Como cancelar o $.get(); da Modal e como cancelar o load da navegação, o sistema de modal é apenas o $.get no sistema de navegação eu utilizo este aqui: http://wbruno.com.br/ajax/navegacao-sem-refresh-%E2%80%93-carregando-conteudo-ajax-em-div-2/

Compartilhar este post


Link para o post
Compartilhar em outros sites

vc pode ao clicar no outro link, vc terá que disparar outro evento load para aquele click, com isso ele "Cancela" o anterior. Por exemplo, em uma página que quando o user pressionar <ESC> ele para o Fade-In ou seja no <ESC> ele executa o Fade-Out

 

$(document).keyup(function(e) {        if(e.which == 27){            $('#page-loader').fadeOut();        }    });

 

ou fazer uso do stopPropagation() ou do window.event.cancelBubble = true, pois o OnStop ou OnAbort, tem limitações

Compartilhar este post


Link para o post
Compartilhar em outros sites

vc pode ao clicar no outro link, vc terá que disparar outro evento load para aquele click, com isso ele "Cancela" o anterior. Por exemplo, em uma página que quando o user pressionar <ESC> ele para o Fade-In ou seja no <ESC> ele executa o Fade-Out

 

$(document).keyup(function(e) {        if(e.which == 27){            $('#page-loader').fadeOut();        }    });

 

ou fazer uso do stopPropagation() ou do window.event.cancelBubble = true, pois o OnStop ou OnAbort, tem limitações

Mais tipo ao cancelar o load da navegação ele deverá voltar a pagina anterior, ou seja a pagina onde ele clicou no link que ele está se direcionando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vc pode armazenar a url anterior, pelo history.back(), faz um link para a pagina anterior no histórico, ou através do salvamento da página num cookie

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para cancelar o fade usa o stop():

$('#modal').stop().fadeIn();

A função stop irá parar qualquer efeito que estiver acontecendo naquele elmemento;

 

Quanto as requisições, tente associar a requisição a uma variável, assim você pode abortá-la quando nescessário

if(requisicao) requisicao.abort();
var requisicao = $.get('arquivo.php');

Compartilhar este post


Link para o post
Compartilhar em outros sites

O método event.stopPropagation () pára o "bubbling" de um evento de elementos pai, impedindo quaisquer manipuladores de eventos de pais de ser executado.

Dica: Use o método event.isPropagationStopped () para verificar se este método foi chamado para o evento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, o problema da Modal aparentemente resolveu eu apenas configurando o modo de edição da Box, ainda e também fiz o que Jerri Dick falou, agora a Navegação tipo, o problema é que se eu clicar em um link e ao msm tempo clicar em outro vai da 2 load, tipo a pagina que cliquei primeiro ia dar o efeito de fade primeiro e depois a segunda, isso na requisição ajax, meu código está assim:

var Troca_Navegacao = '';
$( document ).delegate("a[data-ajaxfunction='Navegation']","click",function(e){
		e.preventDefault();		
		clearTimeout(Troca_Navegacao);
		var $a = this,
		attr = $a.getAttribute("data-ajaxconfigs"),
		json = JSON.parse(attr);
		var Div_Retorno = json.retorno;		
		if(Div_Retorno != "" && Div_Retorno != null)
		{
			var Href_Pag = $(this).attr("href");
			if(Href_Pag != "" && Href_Pag != null)
			{
				var Loading_Bool = json.loading;
				var Load_Html = json.loading_modulo;
				var Menu_Loading = json.load_menu;
				if(Menu_Loading == "true")
				{
					$("img#load_menu").remove();
					$(this).html($(this).html()+"<img id='load_menu' src='Administrativo/Conteudo/imagens/loader_ajax.gif' style='float:right;' />");
				}
				if(Loading_Bool == "true" && Load_Html != "")
				{
					$(Div_Retorno).html(Load_Html);
				}
			}
			$.ajax({
				url: Href_Pag,
				success: function( response ){
					//forçando o parser
					var data = $( response ).find(Div_Retorno).html();

					//apenas atrasando a troca, para mostrarmos o loading
					if(Menu_Loading == "true")
					{
						Troca_Navegacao = window.setTimeout( function(){
							$(Div_Retorno).fadeOut('slow', function(){
								$(Div_Retorno).html( data ).fadeIn();
								document.title = json.page_title;
								history.pushState({ page: json.page_title }, json.page_title, Href_Pag);
								$("img#load_menu").remove();
								$( "ul.menu" ).sortable();
							});
						}, 500 );
					}
					else
					{
						$(Div_Retorno).fadeOut('slow', function(){
							$(Div_Retorno).html( data ).fadeIn();
							if(json.page_title != "")
							{
								document.title = json.page_title;
							}							
							history.pushState({ page: json.page_title }, json.page_title, Href_Pag);							
							$( "ul.menu" ).sortable();
						});
					}
				}
			});
		}
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

esta gerando algum erro ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

esta gerando algum erro ?

Tipo, como eu disse se eu clico em um link e ja clico em outro em um pequeno tempo a função é realizada 2 vezes ai a pagina é carregada 2 vezes, eu queria que ao clicar em outra pagina cancelar totalmente o evento anterior, a mesma coisa quando clicar em esc, cancelar totalmente o evento que estava sendo realizado.

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.