Je cherche à créer une bibliothèque Javascript pour les objets ActiveX, permettant la mise en chaîne.Comment puis-je inspecter par programme un ActiveXObject à l'exécution, en utilisant Javascript?
Par exemple, je cherche à remplacer:
var dbEngine=new ActiveXObject('DAO.DBEngine.36');
var dbs=dbEngine.OpenDatabase('D:\\Todo.mdb');
var rs=dbs.OpenRecordset('SELECT * FROM ListItems');
avec quelque chose comme ça (la jQuery):
var rs=AX('DAO.DBEngine.36')
.OpenDatabase('D:\\Todo.mdb')
.OpenRecordset('SELECT * FROM ListItems');
Je sais que je peux le faire:
var rs=new ActiveXObject('DAO.DBEngine.36')
.OpenDatabase('D:\\Todo.mdb')
.OpenRecordset('SELECT * FROM ListItems');
mais je n'ai aucun moyen d'accéder à l'objet Database à partir de l'objet Recordset. Pour ce faire, la fonction AX doit créer l'objet DBEngine en interne et inspecter ses membres/propriétés, puis exposer les méthodes correspondantes sur l'objet retourné.
Si le membre/propriété renvoie un objet, cet objet lui-même sera renvoyé dans la fonction AX.
Assurez-vous que le moteur JScript ne le permet pas. AFAIK, IDispatchEx (utilisé par les objets DOM dans IE) permet une énumération limitée des méthodes et propriétés, mais à moins que tous les objets exposent diligemment cette interface, vous êtes bloqué. Et oui, c'est très regrettable. – Shog9
Il y a toujours de la force brute ;-) – bobince
Vous ne pouvez rien appeler dans un objet AX à moins qu'il ne soit exposé par IDispatch. Mais la question initiale est assez floue: qu'essayez-vous exactement de faire? Vous pouvez utiliser le mécanisme foreach dans JavaScript pour énumérer les membres exposés d'un objet. – EricLaw