Erweiterung einer ActiveXObject in javascript
Möchte ich hinzufügen, dass einige Funktionen verfolgen bestimmte Aufrufe des ActiveX-Objekts Methoden in javascript.
Ich in der Regel meine activeX-Objekt wie folgt erhalten:
var tconn = new ActiveXObject("Tconnector");
Muss ich log jedes mal, wenn die öffnen Methode wird aufgerufen, auf tconn und alle weiteren Instanzen der activeX-Steuerelement.
Kann ich nicht ändern tconn Prototyp, weil es nicht ein!
Ich denke, dass ich eine dummy ActiveXObject Funktion, erstellen Sie eine proxy-Objekt proxy-Aufrufe an die Reale. Können Sie mir helfen tun?
Hinweis: das schreiben eine direkte wrapper ist, steht außer Frage, denn es sind bereits 1000 Aufrufe dieses activeX-innerhalb der Anwendung.
- Ich glaube nicht, dass dies ist möglich. Haben Quelle für die Tconnetor? Kann Ihr verteilen von binaries, um die Kunden und/oder verteilen Sie Ihre eigenen binaries, wenn Sie nicht selber drauf?
- Ich habe nicht die Quelle, aber ich habe eine Lizenz, die mir erlaubt, zu verteilen es frei. So oder so, warum alle von dieser Materie, wenn ich einen proxy javascript-Objekt, das als proxy-Aufrufe an das activeX-Objekt?
- Ich habe aufgeräumt/aktualisiert den code in meiner Antwort, und ich habe erstellt eine Verknüpfung " beantworten Sie die Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie in der Tat überschreiben
ActiveXObject()
.Bedeutet dies, können Sie versuchen, zu bauen ein transparentes proxy-Objekt um das eigentliche Objekt und der Haken, auf den die Methode fordert. Dies würde bedeuten, dass Sie müssten, um zu bauen ein proxy um jede Methode und Eigenschaft Ihres ActiveX-Objekt hat, es sei denn, Sie sind absolut sicher, es ist kein code überhaupt den Aufruf einer bestimmten Methode oder Eigenschaft.
Habe ich eine kleine wrapper für die
"MSXML2.XMLHTTP"
Objekt. Es sind wohl alle Arten von Problemen, die Sie ausführen können in, so nehmen Sie das mit einem Körnchen Salz:Disclaimer: Insbesondere die async/onReadyStateChange handling ist wahrscheinlich nicht richtig, und der code kann andere Probleme haben als gut. Wie gesagt, es ist nur eine Idee. Behandeln Sie Sie mit Sorgfalt.
P. S.: EIN COM-Objekt ist der groß-und Kleinschreibung, wenn es um die Methode - und property-Namen. Dieser wrapper ist (wie alle JavaScript) groß-und Kleinschreibung. Zum Beispiel, wenn Ihr code passiert zu nennen, beide
"Send()"
und"send()"
ist, benötigen Sie ein Skelett "Send ()" - Methode in der wrapper so gut:Danken Ihnen sehr für Ihre wrapper. Mit Ihrer Hilfe war ich in der Lage, erstellen Sie ein xmlrequest-Detektor für IE und FF und der rest.
Ich habe eine version (kombiniert aus einem anderen Beispiel), funktioniert bei FF , IE und der rest der Bande,
Ist eine kleine Korrektur für "Die Daten, die notwendig sind, um diesen Vorgang abzuschließen, ist noch nicht verfügbar" im IE6 - warten auf Vollständigkeit, bevor die Bevölkerung von response-Eigenschaften:
Das problem hier ist, dass es scheint, dass der IE nicht damit das speichern der ursprünglichen activXObject Konstruktor und ein stack-overflow (;-) nach erstellen der ActualActiveXObject.
es scheint, dass dieser spezielle für die ActivX, weil es arbeitet dabei mit anderen javascript-Objekte.