Ir para conteúdo

POWERED BY:

Arquivado

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

Wilker

eval em IE

Recommended Posts

galera, to com um probleminha meio serio com o IE... tipo, eu to usando ajax, mas preferi postar aki pq acho q o assunto nao seja relacionado direto a ajax, entao vamo la...

 

imagina isso:

 

codigo = "function aa() { alert('alertou!'); }";eval(codigo);aa();
esse codigo assim nao funciona em canto nenhum... vamos ao 2 codigo

 

codigo = "function aa() { alert('alertou!'); }";eval.call(window, codigo);aa();
esse agora funciona em Opera, Firefox e Netscape... mas no mizeral do IE nao pega de jeito nenhum :@

 

e pq você n usa a funcao diretamente no lugar de usar eval?

 

simples, pq os dados vao vim por ajax ao carregar a pagina... ou seja... n da pra colocar codigo direto (acontece igual ao 1 exemplo)...

 

c alguem tiver alguma ideia pra resolve... to realmente precisando...

 

obs importante: se voce usar os codigos q eu escrevi direto no script principal da pagina, todos irao funcionar, mas experimente fazer isso trocando o innerHTML de algum elemento, que voce vai ver oq eu disse

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta

eval("function aa() { alert('alertou!'); }");aa();

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra, eh como eu disse, eh pq eh tipo assim... coisa assincrona, imagina isso aki:

 

function criaFuncao() {  eval("function nova() {alert('ccc');}");}function usaOutra() {  criaFuncao();  nova();}
pronto, o kso eh exatamente esse ai, eu ateh arrumei um jeito... mas n gostei mto do uso... mas c n tiver solucao vai ser ele mesmo, q seria assim (o codigo abaixo funciona em qq browser):

 

<html><head><title> codigo </title><script>function criaFuncao() {  eval("window.nova = function() {alert('ccc');};");}function usaOutra() {  criaFuncao();  nova();}</script></head><body><button type="button" onclick="usaOutra()">Clique</button></body></html>
pronto, nesse kso funciona, mas eu tenho q colocar window.funcao = function() {};

 

ainda q fosse var funcao = function() {}; era melhorzinho, mas window.funcao eh meio estranho... mas c for o jeito...

Compartilhar este post


Link para o post
Compartilhar em outros sites

soh completando, o seguinte codigo funciona em todos os browsers, MENOS no IE:

 

<html><head><title> codigo </title><script>function criaFuncao() {	eval.call(window, "function nova() {alert('ccc');}"); //invocando eval no contexto de window}function usaOutra() {	criaFuncao();	nova();}</script></head><body><button type="button" onclick="usaOutra()">Clique</button></body></html>

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.