Logica server side para gerar Javascript e rodar automaticamente no browser?
13 respostas
P
Pittella
Ola pessoal,
Eu preciso de uma logica server-side aonde eu pudesse receber requests de diversas paginas e pudesse gerar codigo javascript para essas paginas processarem.
Primeiramente pensei em uma solucao com Java Custom tags pq elas me dariam uma forma pratica de renderizer o javascript e ter o browser automaticamente rodando o codigo, mas o problema e que nem todas as paginas poderiam incluir a Custom tag pq elas nao sao paginas Java.
Alguma outra alternativa? tecnologia para fazer isso ?
O que eu consigo ver seria… com javascript fazer um request para um Servlet/WS Restful que pudesse gerar a resposta XML para mim…
MAs dai eu precisaria ter codigo javascript na pagina para poder fazer o parser e dai de alguma forma rodar o javscript.
Eu quero eliminar adicional logica javscript para montar o js que vem do server, queria que o javascript rodasse ja como resposta do servico como com as Custom Tags… (mime: application/javascript)
Não conhesso muito de muita coisa, mas pelo que sei richfaces gera ajax, pode ser que ele tenha alguma funcionalidade para gerar javascript.
É só um chute
P
pedruhenrik
vc quer devolver um xml no client side?
tipo, usuário acessa página, clica no botão, botão chama servlet, servlet faz N processamentos, servlet retorna xml processado p/ tela requisitante.
algo assim?
não entendi o pq do js.
att,
P
Pittella
oi…
Entao…a resposta do meu servico e uma tag javascript
<SCRIPT>
…
</SCRIPT>
Mas esse javascript deve ser gerado de acordo com o client (pagina) que faz a requisicao…
O XML iria conter a minha funcao javscript (mas isso pq eu nao vejo uma outra forma de retornar a funcao javscript que nao seja por XML entende?)
Essa e a minha duvida…
no final, eu quero que a minha funcao JS rode no browser…
preciso enteder como recuperar a funcao js do XML e ja rodar…tipo um parsing automatico seguido da execucao ta tag javascript…sem ter que desenvolver meu proprio codigo javascript for parsing e etc…
Existe isso ?
Tks tks
P
pedruhenrik
q q é isso, rs, ñ da p/ refazer?
faço a minima idéia, nunca me deparei com esse cénario.
JSON será q ñ te ajuda?
att,
J
jaboot
Pittella,
Eu juro que ainda não entendi direito o que você quer fazer, mas deixo uma palavrinha ou duas:
XML é bacana, tem bastante parser de XML por aí, mas o que o Javascript gosta mesmo é JSON. Dá uma olhada, não é complicado, acho até mais fácil que XML.
Você conhece uma biblioteca chamada DWR? Eles tem um lance de Ajax bem diferente. Talvez seja o que você precisa para rodar a sua aplicação e “avisar” o browser do cliente (é um lance chamado Piggyback, alguns chamam de Reverse Ajax)
G
gomesrod
Eu também não entendi a necessidade de enviar script para o client. Seria melhor o servlet lidar apenas com os dados, e um script pronto no lado client processaria esses dados como conveniente.
Os scripts podem ser encapsulados em uma biblioteca que cada desenvolvedor de páginas referencia com
Explique melhor o que você precisa implementar, funcionalmente falando.
P
Pittella
cada vez que a uma pagina e carregada, a pagina envia alguns parameters para o componente server-side…
Este componente executa logica complexa que nao poderia ser feita com javascript libraries
ao inves de retornar um XML com dados e fazer o parsing e depois montar o HTML/javascript eu precisaria retornar ja a tag javascript (HTML/js)
preciso rodar a menor quantidade possivel de logica javscript na pagina para evitar problema de processamento (page-loading)…
Entendam que esta logica e particular…este servico foi feito para isso…e considerado um third-party service que nao pode impactar as paginas (processing)…nao levem em considerecao aqui MVC, frameworks and etc… meu servico e como uma Custom tag que escreve HTML na pagina…com a desvatagem de rodar antes da pagina ser carregada no browser…por isso a necessidade de gerar javascript…
Fui mais claro ?
obrigado pela ajuda!!!
G
gomesrod
Não fica bravo, mas eu não entendi ainda porque o servidor tem que gerar o javascript ao invés de apenas os dados... hehe :D
Mesmo assim vou dar uma sugestão. É uma solução extremamente simples:
/myapp/script é um caminho que está mapeado para um Servlet.
Ou seja, vai buscar o retorno do servlet e tratar como se fosse um arquivo .js estático.
No código do servlet basta então "cuspir" o javascript que se deseja executar:
Parece que ao incluir dinamicamente no HTML uma tag o browser não processa essa tag. Verifiquei isso com a página de teste abaixo, o que vc tentou fazer não funciona no Firefox nem no IE.
Aproveitando, estou colocando aqui mais uma opção, o comando eval
Como resolver o problema para <script src=""> </script>
Pq vc concatena a ultima parte da string com + "<" + "/script>";
Obriagdo desde ja,
G
gomesrod
O eval realmente não funciona com a tag <script>, apenas com o código javascript propriamente dito.
Para utilizá-lo, seria necessário fazer uma chamada HTTP para http://domain.com/resource.sd?param1=x¶m2=yyy , e depois aplicar o eval sobre a string retornada.
Adicionar a tag script de forma que ela seja executada eu infelizmente não sei como fazer… achei esses links sobre o assunto, veja se resolve: http://unixpapa.com/js/dyna.html
Usei “<” + “/script>” porque se colocasse “</script>” o browser podia acabar se confundindo pensando que eu estava realmente fechando a tag script (aquela que começa lá na linha 4).