2009-09-22 13 views
5

Ich habe auf Login.aspx mit einem ActiveX-Objekt einfache HTML bekommt:javascript: „Objekt nicht unterstützt diese Eigenschaft oder Methode“, wenn ActiveX-Objekt namens

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head><title></title> 
<script language="javaScript" type="text/javascript"> 

    function getUserInfo() 
    { 
     var userInfo = MyActiveX.GetInfo(); 
     form1.info.value = userInfo; 
     form1.submit(); 
    } 

</script> 
</head> 

<body onload="javascript:getUserInfo()"> 
<object id="MyActiveX" name="MyActiveX" codebase="MyActiveX.cab" classid="CLSID:C63E6630-047E-4C31-H457-425C8412JAI25"></object> 
    <form name="form1" method="post" action="Login.aspx"> 
     <input type="hidden" id="info" name="info" value="" /> 
    </form> 
</body> 
</html> 

Der Code funktioniert völlig in Ordnung, auf meinem Rechner (Bearbeiten: gehostet und ausgeführt), funktioniert es nicht auf der anderen Seite: Es gibt einen Fehler "Objekt unterstützt diese Eigenschaft oder Methode nicht" in der ersten Zeile der JavaScript-Funktion. Die CAB-Datei befindet sich im selben Ordner wie die Auslagerungsdatei. Ich kenne Javascript überhaupt nicht und habe keine Ahnung, warum das Problem auftritt. Googeln hat nicht geholfen. Hast du eine Idee?

Edit: auf beiden Maschinen wurde IE verwendet und activex wurde aktiviert.

Edit2: Ich habe auch wenn (document.MyActiveX) sich am Anfang der Funktion und ich immer noch Fehler in der gleichen Zeile Code bekommen - ich meine, es sieht aus wie document.MyActiveX wahr ist, aber Aufruf der Methode immer noch nicht

+0

Sind Sie sicher, dass ActiveX sind Fehler auf dem System aktiviert ist, Sie? Beachten Sie, dass Zone wichtig ist (lokal, Intranet, Internet) und unterschiedliche Sicherheitsmerkmale aufweist. Lokale, Intranetzonen haben standardmäßig standardmäßig ActiveX off. –

+0

überprüft alles - alle Zonen haben alles mit ActiveX aktiviert – agnieszka

+0

das gleiche Problem hier. Die gleiche Seite funktioniert in IE7, aber nicht in IE8. –

Antwort

0

vielleicht unterstützt der Browser auf dem anderen Computer ActiveX nicht? nur eine wilde Schätzung

+0

nein. dh mit aktiviertem ActiveX – agnieszka

2

Ich denke, das Onload-Ereignis macht die Funktion ausführen, noch bevor das ActiveX-Objekt geladen ist. Sie können die folgenden stattdessen versuchen:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
    <head> 
     <title></title> 
     <script language="javaScript" type="text/javascript"> 
      function getUserInfo(){ 
       if(document.MyActiveX){ 
        var userInfo = MyActiveX.GetInfo(); 
        form1.info.value = userInfo; 
        form1.submit(); 
       } 
      } 
     </script> 
    </head> 
    <body> 
     <object id="MyActiveX" name="MyActiveX" codebase="MyActiveX.cab" classid="CLSID:C63E6630-047E-4C31-H457-425C8412JAI25"></object> 
     <script for="window" event="onload" language="JavaScript"> 
      window.setTimeout("getUserInfo()", 500); 
     </script> 

     <form name="form1" method="post" action="Login.aspx"> 
      <input type="hidden" id="info" name="info" value="" /> 
     </form> 
    </body> 
</html> 

die jetzt GetUserInfo() Funktion 500 Millisekunden ausgeführt wird gestartet, nachdem die Seite geladen wird. Dies muss etwas Zeit für das Laden des ActiveX-Objekts geben.

+0

Die meiste Zeit ist die ActiveX-Installation von den Browsern blockiert. Wenn Sie IE verwenden, wird eine gelbe Warnmeldung angezeigt, in der Sie gefragt werden, ob Sie das Objekt installieren möchten. Erst nach Zustimmung des Benutzers wird das Objekt installiert. Wenn das Objekt nicht geladen ist, muss die Funktion des Objekts prüfen, ob das gewünschte Objekt geladen ist. Und hey, nicht alle ActiveX-Objekte sind auf jedem Rechner vorinstalliert. – Nirmal

+0

aber es gibt keine Alarmleiste ..nur ein Fehler – agnieszka

+0

Da Sie die Funktion aufrufen, sobald das Dokument geladen wird, besteht die Möglichkeit, dass die Funktion ausgeführt wird, noch bevor das ActiveX-Objekt geladen wird. Siehe meine bearbeitete Antwort. – Nirmal

0

Möglicherweise benötigt das ActiveX einige Voraussetzungen (z. B. CRuntime), die auf den anderen Computern nicht vorhanden sind? Haben Sie versucht, depends für das ActiveX auf dem Host-Computer laufen?

0

Vielleicht hat die andere Maschine einen Virenscanner oder ähnliches, der ActiveX-Anwendungen im Hintergrund verhindert?

2

IE8 verwaltet den Zugriff auf das ActiveX auf Domänenebene.

es zu beheben:

  1. IE8, Werkzeuge -> Add-Ons verwalten
  2. In "Symbolleisten und Erweiterungen" finden Sie Ihre ActiveX
  3. Rechtsklick - Weitere Informationen
  4. Click - Lassen Sie auf Alle Standorte
  5. Genießen
Verwandte Themen