Ir para conteúdo

Arquivado

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

Gastro

Ler função JS "trazida" via AJAX

Recommended Posts

Opa.. beleza.. galera.E o seguinte.. usei a funçao de voces ai na minha aplicação..Ate ai tudo bem.. So que to trabalhando com abas..Em cada aba o ajax busca paginas diferente e poem no mesmo div da aba anterior..Entao..A aba1 carrega no onload da pagina e a aba2 carrega quando clico.e carrega outra pagina na mesma div da primeira.E tente chamar scripts da aba2 e nao funciona.. diz metodo nao existe.E os script anterior da aba1 continuam existindo..Do um alert no codigo lido pela funçao esta ok.So nao funciona..Teriam uma ideia de como me ajudar?E meio complicadinho de explicar.. http://forum.imasters.com.br/public/style_emoticons/default/cry.gif

bahh caraposta algum codigo ai, ou explica melhorpelo menos eu num entendi o que queis fazerabraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim..Essa funçao so funciona se no bloco de script contiver apenas um script..Ex:<script>function alerta(){ alert("To aqui");}</script>se tiver mais de um metodo no bloco ele nao funciona..ex:<script>function alerta(){ alert("To aqui");}function alerta2(){ alert("To aqui");}function alerta3(){ alert("To aqui");}</script>Pelo meno aqui nao funcionou..Por que será???Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta fazer o seguinte... aqui tava dando pal do jeito original... postado ai... então mudei um detalhe....onde estávar fim = texto.indexOf('</script>', ini);troca para var fim = texto.indexOf('//<;;>', ini);ficou assim a função todafunction extraiScript(texto){ var ini = 0; while (ini != -1){ ini = texto.indexOf('<script', ini); if (ini >= 0){ ini = texto.indexOf('>', ini) + 1; var fim = texto.indexOf('//<;;>', ini); codigo = texto.substring(ini,fim); novo = document.createElement("script") novo.text = codigo; document.body.appendChild(novo); } }dai nos codigos JS você faz assim<script>function alerta(){alert("To aqui");}function alerta2(){alert("To aqui");}function alerta3(){alert("To aqui");}//<;;> </script>Repara na penultima linha antes do </script>então...da um alert da variável codigo...ele tem que trazer só as funçõesvlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Continuou nao dando certo..

 

Na pagaina carregada pelo ajax tem dois scripts assim..

 

<script language="javascript">function menu(){};menu.prototype.MudaIco = function (obj,op){	obj.src=op;}menu.prototype.iniModulo = function (id){	window.top.principal.location.href='ss_005_menu.php?mod='+id;}var metodo = new menu;//fim</script>

Ai na funçao logo depois q carrega o ajax tem assim

 

 

/** Função para carregar script caregado por AJAX.* @param __txt O arquivo carregado pelo ajax.*/startExpert.prototype.getRecall = function (texto){	var ini = 0;	while (ini != -1){		ini = texto.indexOf('<script', ini);		if (ini >= 0){			ini = texto.indexOf('>', ini) + 1;			var fim = texto.indexOf('//fim', ini);			codigo = texto.substring(ini,fim);			novo = document.createElement("script")			novo.text = codigo;			document.body.appendChild(novo);		}	}}

E continua nao funcionando..

Se deixou apenas um metodo funciona legal..

Agora mais de um.. nao funciona..

 

Saberiam me dizer pq??

Valeu... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Continuou nao dando certo..Na pagaina carregada pelo ajax tem dois scripts assim..

<script language="javascript">function menu(){};menu.prototype.MudaIco = function (obj,op){	obj.src=op;}menu.prototype.iniModulo = function (id){	window.top.principal.location.href='ss_005_menu.php?mod='+id;}var metodo = new menu;//fim</script>
Ai na funçao logo depois q carrega o ajax tem assim
/** Função para carregar script caregado por AJAX.* @param __txt O arquivo carregado pelo ajax.*/startExpert.prototype.getRecall = function (texto){	var ini = 0;	while (ini != -1){		ini = texto.indexOf('<script', ini);		if (ini >= 0){			ini = texto.indexOf('>', ini) + 1;			var fim = texto.indexOf('//fim', ini);			codigo = texto.substring(ini,fim);			novo = document.createElement("script")			novo.text = codigo;			document.body.appendChild(novo);		}	}}
E continua nao funcionando..Se deixou apenas um metodo funciona legal..Agora mais de um.. nao funciona..Saberiam me dizer pq??Valeu... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif
No teu codigo ajax deve ter um momento que você tem assimdiv = document.getElementById('centro');div.innerHTML = http_request.responseText;onde você atribui o resultado a uma tag html etcneste momento tenta colocarvar ini = 0;acho que tive este problema tb...dai resolvi assimvlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, eu fiz o teste com minha função aqui sem mudar nada e deu tudo certo. Coloquei 2 funções dentro e chamou beleza.

<script>function alertao(){alert("alerta da funcao");}function alertao2(){alert("alerta da funcao 2");}</script>

Agora vou testar com seu código pra ver...

 

PS.: Gastro, porque tá dando pau do jeito original? (o jeito que agente procura pelo fim do script através de </script>) ???

comigo aqui tá 100%

 

 

** -------- Novo post --------- **

 

Seguinte cara, peguei sua função testei e deu tudo certo. Olha só:

function menu(){};menu.prototype.MudaIco = function (obj,op){	alert(obj + " " + op);	//obj.src=op;}menu.prototype.iniModulo = function (id){	alert(id);	//window.top.principal.location.href='ss_005_menu.php?mod='+id;}var metodo = new menu;

Após o ajax carregar a página que tinha ela eu consigo chamar elas diboas:

<span onclick="metodo.MudaIco('hei','hou')">MudaIco</span><span onclick="metodo.iniModulo('haha')">MudaIco</span>

 

Talvez (talvez) voce esteja errando na hora de chamar os métodos.

Lembre-se que voce deve chamar através do objeto chamado "metodo" que voce havia instanciado (olhe meus spans acima).

 

PS.: Não mudei 1 linha no meu código e funcionou TUUUDO beleza.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu imagino que talvez voce esteja colocando a quantidade de parametros errada ao chamar a função. A função pede 2 parametros, então voce tem que colocar os 2.Posta aí comé que tá o código onde voce chama a função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao o problema nao e esse nao..

Pois passo os dois paramentros..

 

e outra... se deixo qualquer uma das duas.. sosinha na funçao ela funciona certinho..

Mais segue onde chama o java script:

 

onmouseover="menu.MudaIco(this,'galeria/icos/ico_ss_1.jpg');"

Nada ainda galera.. estranho isso.

Valeu..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Peraê!!!Voce não me falou que tá usando o metodo.MudaIco ao invés de menu.MudaIco????Qual é o nome da instância? metodo ou menu???A classe eu sei que chama menu, e pelo que eu ví no código lá de cima, a instância se chama "metodo".Ah e outra coisa, tira o "var" que tem no momento que voce instancia a classe praver se dá certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe..Assim tanto faz menu ou metodo.. q no momento q post tava usando metodo mais mudei.. pra ver pra menu.. sem var ou com var.. da tudo no mesmo cara..Ta fodaa....Acho q vou criar um arquivo .js pra cada modulo se nao to fudido e separar por classe no javascript mesmo..Se nao vou ficar amarrado e nao vai dar..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho que voce tá errando coisa pequena na sintaxe.Posta os códigos ae... Tenho quase certeza.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois eh não sei pq não vai com </script> mas da nada....tb acho que o codigo dele tá errado...faz assim velho manda TUDO ai... toda a função ajaxe o arquivo que você tá lendo pelo ajaxflw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois eh não sei pq não vai com </script> mas da nada....

Gastro, que navegador voce tá testando? Eu testei no FF1.5 e IE6 e deu tudo beleza com o </script>..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois eh não sei pq não vai com </script> mas da nada....

Gastro, que navegador voce tá testando? Eu testei no FF1.5 e IE6 e deu tudo beleza com o </script>..
Em ambos... Mas dei um jeitinho de momento... logo vou revisar tudo... testes etc... dai vejo q q ele tá se passandoabraço

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.