Jump to content

POWERED BY:

Archived

This topic is now archived and is closed to further replies.

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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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..

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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..

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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>..

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.