quinta-feira, dezembro 16, 2004

JavaScript acessando objetos Java

Desenvolvendo uma aplicação (Applet) que deve ser lançada por um script em JavaScrit e depois de dentro do applet atualizar a página html através do Applet. Tivemos que criar algumas chamadas do JavaScript ao objeto Java.

Para isso foi criado um applet que lança um JOptionPane com os recursos para obter os dados necessários.

O problema era em, como chamar um método do applet pelo JavaScript. Com a ajuda de um amigo, conseguimos resolver o problema.

Para isso, após ter colocado seu applet como objeto na página HTML (Veja a ferramenta HtmlConvert que vem no pacote do J2SDK), o acesso a ele foi feito desta maneira no javascript:
var myApplet = document.myApplet;

myApplet.execute();

Só tome cuidado que se for criado para IE e NS, deve diferenciar os nomes do applet (Sendo object com um nome e embed com outro) e verificar na hora da chamada qual recuperar para executar. (Tive alguns problemas com este recurso).

Para utilizar recursos do javascript no applet, deve ser criado um Objeto JSObject, assim:
JSObject win = JSObject.getWindow(this);

win.eval("javascript:alert('Hello word')");

Para utilização deste objeto deve ser incluido o pacote plugin.jar que consta dentro das bibliotecas do JRE.

Este cógido eu agradeço ao amigo Riko que ajudou a encontrar como fazer isso.

E mais uma coisa que foi descoberto depois...

Correndo atrás de executar um método que eu tinha criado em um arquivo JavaScript. Não adianta só utilizar o método eval(), como mostrado acima, para fazer chamadas a seus métodos, precisa fazer a chamada com o método call, desta forma:
JSObject win = JSObject.getWindow(this);

win.call("meuMetodo", new Object[] {umValor});

Esta chamada faz com que chame o método no meu JavaScript:
function meuMetodo(valorEntrada) {

alert(valorEntrada);
}


O négocio é este. Divirta-se :)

Nenhum comentário: