quarta-feira, 7 de março de 2012

Dicas de Programação: Como executar um Javascript dentro de um Javascript?

O título ficou meio estranho, mas acho que deu para entender... :P

Penso que todo programador, com alguns anos de prática, já sentiu a necessidade de fazer o seguinte comando:

var script = "<script> alert('Erro: Número inválido'); </script>";
document.write(script);

O problema é que isso não funciona na maioria dos navegadores, por causa das políticas de segurança. (alguém já ouviu falar de code injection? :P)

Mas para isso, sempre existe um jeitinho... (não que isso seja o certo, mas funciona :) )

O  problema do código acima, é que a tag <script> é inválida dentro das instruções javascript...
Mas se eu fizer esta instrução assim:

document.write("<scr" + "ipt> alert('Erro: Número inválido'); </scr" + "ipt>");

Ela vai funcionar!

O que acontece é que o javascript é uma linguagem interpretada, e como a tag "script" esta dividida em duas "strings" ("scr" + "ipt"), este não consegue identificar e com isso, a instrução passa sem nenhum bloqueio!

Obs.: Não sei até quando esta "facilitação" (para não falar de gambiarra...) vai existir, mas pelo que testei, ainda esta valendo. :)

Até mais!

Um comentário:

Takemura disse...

Acabei de perceber que já postei esta dica... Sorry, pessoal :P