Inquiridor
JavaScript em document.write() - Internet Explorer

Pergunta
-
Boa tarde.
Estou criando uma rotina que executa um JavaScript dentro de um document.write():
document.write('<script type="text/javascript" enableviewstate="false"> OAS_publicidade.OAS_AD(\'' + adunits[ad]['pos'] + '\'); alert(\'teste\')</script>');
Onde:
OAS_publicidade.OAS_AD(......) é o método que desejo chamar, vindo de um arquivo js externo ao que está sendo usado na implementação. Este método pode chamar tanto um método JS que está dentro de OAS_publicidade, quanto um outro método (OAS_RICH()) que vem de um endereço externo na WEB. Normalmente é executado o OAS_RICH().
A solução com document.write() foi adotada pois, devido ao método OAS_RICH não existir no escopo de OAS_publicidade, estava dando erro quando chamava apenas OAS_AD e este tentava por sua vez chamar OAS_RICH. OAS_RICH está no escopo da página, pois foi importado através de uma outra rotina, usando document.write().
Esta solução funciona apenas no FireFox. no Internet Explorer (qualquer versão) não é executado o código inserido pelo document.write(). Pesquisando na internet encontrei várias alternativas, usando escape nas tags <script> e </script>, transformando as tags em "<"+"script>" e "</"+"script>", mas nenhuma delas resolveu problema. No IE simplesmente não executa, e olhando o código gerado no debugbar fica assim:
<SCRIPT type=text/javascript enableviewstate="false"> OAS_publicidade.OAS_AD('Top2'); alert('teste'); </SCRIPT>
Alguém poderia me ajudar?
Obrigado.
Henery Linck Rosenhaim
Todas as Respostas
-
Uma dúvida,
Esse document.write é do Javascript? Se sim, acredito que o problema é que no IE não é possível escrever javascript que gere javascript. Acho que isso não deveria funcionar nem no IE.
Agora esse problema de escopo de função deve ser pelo local em que você faz o include do script e onde deseja utilizá-lo.
Posta o seu código aqui.
Roberto Santos http://blog.robertoosantos.com -
Olá Henery,
Veja se ajuda:Javascript com paginas aspx
http://social.msdn.microsoft.com/Forums/pt-BR/aspnetpt/thread/61b3867b-efec-4b3b-997e-b5968bf27eed
Pergunta JavaScript
http://social.msdn.microsoft.com/Forums/pt-BR/aspnetpt/thread/628c1401-978a-431d-a40a-cd4512697ecc
Tente implementar o código javascript dentro de Response.Write... veja o link a seguir:Modificando código
http://social.msdn.microsoft.com/forums/pt-BR/aspnetpt/thread/f5532da1-d3f0-4f62-8d07-e2fd9a722ff8/
Abraço,
Magno Machado Borba |- Se o post foi util ou resposta nao esqueca de marcar. -
Experimente algo assim:
var txt = '<'+'scr'+'ipt type="text/javascript">OAS_publicidade.OAS_AD(\'' + adunits[ad]['pos'] + '\');</'+'scri'+'pt'+'>'; alert(txt); document.write(txt);
O que acontece é que o IE interpreta como falha de segurança fazer document.write('<script>'), então vc quebra pra burlar isso.
Talves, o seu problema tenha persistido por causa desse enableviewstate que não existe.