Java, Javascript, communication, LiveConnect,acces,Java, Javascript, communication, LiveConnect,acces
  

Les communications entre Java et Javascript

  alian_yoyo_anime.gif (10540 octets)

1. Présentation

2. Communication javascript-java

3. Communication java-javascript

1. Présentation :

Ce document est à lire si vous cherchez à faire communiquer Java et Javascript ensemble. Les technologies employées sont Javascript et LiveConnect (Package Java).

Java et Javascript sont très différents:  .Javascript n'a aucun contrôle de type au contraire de Java et il est souvent inutile de déclarer ou initialiser ses variables. L'un est compilé puis interprété, l'autre est simplement interprété. Javascript n'a pas la possibilité d'écrire des fichiers sur le poste client.

Cependant ils s'appuient tous les deux sur le même modèle de classe Il existe donc des moyens très simple de faire communiquer les deux. (Et pourquoi pas les cookies du navigateur client et ainsi mémoriser des choix pour votre applet ...).

  canari.gif (1773 octets)

  bouton_bleu.gif (1689 octets)

 

 

 

 

 

2. Communication javascript-java :

Javascript peut appeler une procédure Java par la méthode suivante :
<nom du document>.<nom de l’applet>.<méthode Java publique>

Exemple : On peut appeler la méthode public void processJavascript() ; de la classe MaClasse par :

Page HTML :

<html><body>
<applet code="MaClasse.class" name="my"></applet>
<form>
<input type=button value="Call Javascript"  
       onclick="if (my) {my.callJavascript();}">
</form>
</body></html>

MaClasse.java :

import java.applet.Applet;
import java.awt.Graphics;

public class MaClasse extends Applet
{
StringBuffer buffer;
Graphics graph=null;

public void paint(Graphics g)
  {
  g.drawString(buffer.toString(), 20, 25);
  graph=g;
  }

public void callJavascript()
  {
  buffer = new StringBuffer();
  buffer.append("Vous avez appuyez sur ...");
  repaint();
  }

public void init()
  {
  buffer = new StringBuffer();
  buffer.append("Exemple :");
  repaint();
  }
}

  chat_jaune.gif (1870 octets)

bouton_bleu.gif (1689 octets)  

3. Communication java – javascript :

La classe donnée en exemple montre comment utiliser les méthodes de la classe JSObject. Cet exemple ouvre une nouvelle fenetre personnalisée d’attente au moment du chargement de l’applet. Les classes netscape.javascript.JSObject; sont fournies en standards avec Netscape, mais pas avec Internet Explorer. Il faut donc penser à les rajouter au package de votre applet lors du téléchargement pour une compatibilité avec IE.

Exemple :

Page HTML : (remarquez la balise mayscript obligatoire)

<html><body>
<applet mayscript code="ProcessJavascript.class" name=my></applet>
</body></html>

ProcessJavascript.java :

import netscape.javascript.JSObject;
import java.awt.*;
import java.lang.*;
import java.applet.*;

/**
* ProcessJavascript est le client principal. Il     
* surclasse Applet.
* @author BARBET Alain
*/
public class ProcessJavascript extends Applet
  {
  // Javascript appele une fois l'applet telechargee
  String monJavascript = "alert('Applet demaree');";
  StringBuffer buffer;

  public void paint(Graphics g)
    {g.drawString(buffer.toString(), 50, 25);}

  public void start ()
    {
    System.out.println("debut de start()");
    try
      {
      JSObject win = JSObject.getWindow(this);
      win.eval(monJavascript);
      }
    catch (Exception e)
      {
      System.out.println("Exception:Javascript");
      e.printStackTrace();
       }
    }

  public void init()
    {
    buffer = new StringBuffer();
    buffer.append("J'attends ...");
    repaint();
    }
}