Passando valores para o HTML com JSObject

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

o Agnaldo apresenta a classe JSObject, usada para comunicação entre um applet java e o documento HTML

publicado em 20 de maio de 2008 por Agnaldo em www.50minutos.com.br 
 
Nesse post mostrei a criação de um applet capaz de alterar valores de um campo de formulário HTML mas não entrei em detalhes como consegui acessar a estrutura da página onde o applet estava.

Um applet não acessa, por padrão, um objeto do container onde ele está inserido. Para suprir essa deficiência (na verdade é uma característica do applet) a Netscape criou a classe JSObject, pertencente ao pacote (package) netscape.javascript.

Essa classe deriva diretamente de java.lang.Object e sua declaração é:

public final class JSObject
  extends Object

Os principais métodos da classe são:

  • call(String, Object[]) - executa um método JavaScript;
  • eval(String) - avalia uma expressão JavaScript;
  • finalize() - remove a referência do objeto no objeto JavaScript correspondente;
  • getMember(String) - retorna um objeto do JavaScript, acessado pelo nome. É equivalente ao this.name;
  • getSlot(int) - retorna um objeto do JavaScript, acessado pelo índice. É equivalente ao this[index];
  • removeMember(String) - remove um objeto do JavaScript, acessado pelo nome;
  • setMember(String, Object) - Atribui um valor a um objeto do JavaScript, acessado pelo nome. Equivale ao this.name = value;
  • setSlot(int, Object) - Atribui um valor a um objeto do JavaScript, acessado pelo índice. Equivale ao this[index] = value;
  • toString() - retorna a representação do objeto em forma de String.

O pacote netscape.javascript é instalado juntamente com o Java SE e está no arquivo plugin.jar.

Algumas observações devem ser feitas quando usamos essa classe:

Se estamos editando o programa num editor de textos simples e compilando com javac, precisamos incluir o caminho das classes na variável de ambiente CLASSPATH.

EXEMPLO: conteúdo de CLASSPATH - .;C:\Sun\SDK\jdk\jre\lib\plugin.jar

telaclasspath.jpg

Se estamos editando o programa numa IDE, como o NetBeans, precisamos fazer uma referência ao arquivo, usando Library >>> Add jar or file da janela Project.

telanb.jpg

Para acessar a partir de um applet um objeto que está no HTML usamos o código abaixo:

...
JSObject campoDoFormularioHTML = new JSObject();
      // cria um objeto JSObject


JSObject objWin = JSObject.getWindow(this);
      // obtém uma referência para o objeto window do JavaScript


JSObject objDoc = (JSObject)objWin.getMember("document");
      // obtém uma referência para o objeto document, pertencente ao window


JSObject objForms = (JSObject)objDoc.getMember("forms");
      // obtém uma referência para a coleção de formulários do document


JSObject objForm = (JSObject)objForms.getMember("nomeForm");
      // obtém uma referência para um formulário chamado nomeForm,
// que está na coleção forms


JSObject objElements = (JSObject)objForm.getMember("elements");
      // obtém uma referência para a coleção de elementos (campos) do formulário


campoDoFormularioHTML = (JSObject)objElements.getMember("nomeCampo");
      // obtém uma referência para um elemento chamado nomeCampo
// que está na coleção elements


campoDoFormularioHTML.setMember("value", "agnaldo");
      // atribui o valor agnaldo para o membro (propriedade) value do objeto elemento
...

Se quiser saber mais sobre o Document Object Model (modelo de objetos) clique aqui para fazer download de uma apostila de JavaScript que escrevi em 2000/2001.

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?