J'ai besoin d'insérer un objet Java en ajoutant dynamiquement un élément OBJECT dans une page, puis d'exécuter une méthode de l'objet inséré:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// --- Insertion objet Java ---
var mailApplet = document.getElementById("sendmail");
if (mailApplet == null) {
	mailApplet = document.createElement('object');
	mailApplet.setAttribute("id","sendmail");
	mailApplet.setAttribute("codetype","application/java");
	mailApplet.setAttribute("classid","java:SendMail.class");
	document.getElementsByTagName('body')[0].insertBefore(mailApplet,document.getElementsByTagName('body')[0].firstChild);
}
// --- Utilisation de l'objet ---
var mailApplet = document.getElementById('sendmail');
alert(mailApplet.codetype); // renvoie undefined
alert(mailApplet.sHostAddress);  // renvoie undefined
mailApplet.Send(); // ne s'exécute pas: fonction non connue
Le problème semble être qu'au moment où le code est interprêté, l'objet n'existe pas. En remplaçant le code Javascript de cration de l'objet par le code HTML correspondant, pas de problème. Evidemment, cette solution n'est pas applicable puisque le code en question doit être exécuté depuis GreaseMonkey (je ne peux pas modifier la page HTML en dur pour y ajouter l'OBJECT).

Comment faire pour que le code ne soit interprêté qu'une fois l'objet chargé? J'ai essayé des addEventListener sur 'load' voire même 'click', mais cela ne résoud pas le problème puisque l'exécution est différée mais pas l'interprétation.

Des idées?