2009-09-22 10 views
5

devo semplice html sul Login.aspx con un oggetto ActiveX:javascript: "L'oggetto non supporta questa proprietà o metodo" quando oggetto ActiveX chiamato

<!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> 

il codice funziona perfettamente bene sulla mia macchina (modifica: ospitato ed eseguito), non funziona sull'altro: c'è un errore "L'oggetto non supporta questa proprietà o metodo" nella prima riga della funzione javascript. Il file cab si trova nella stessa cartella del file di paging. Non conosco il javascript e non ho idea del perché il problema si verifichi. Googling non ha aiutato. Hai qualche idea?

Modifica: su entrambe le macchine è stato utilizzato IE e activex era abilitato.

Edit2: Ho aggiunto anche se (document.MyActiveX) all'inizio della funzione e ottengo ancora errori nella stessa riga di codice - intendo che sembra documento.MyActiveX è vero ma chiama il metodo non riesce ancora

+0

Sei sicuro che ActiveX è abilitato sulla macchina su cui stai fallendo? Nota che Zone avrà importanza (locale, intranet, internet) e avrà caratteristiche di sicurezza diverse. Le zone locali e intranet generalmente disattivano ActiveX per impostazione predefinita. –

+0

controllato tutto - tutte le zone hanno tutto con activex abilitato allo – agnieszka

+0

stesso problema qui. stessa pagina funziona in IE7 ma non in IE8. –

risposta

0

forse il browser sull'altro computer non supporta activeX? solo una supposizione selvaggia

+0

no. cioè con activex abilitato – agnieszka

2

Penso che l'evento onload sta facendo funzionare la funzione anche prima che l'oggetto ActiveX sia caricato. Si può provare il seguente invece:

<!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> 

Ora la funzione GetUserInfo() inizierà a correre 500 millisecondi dopo che la pagina viene caricata. Questo deve dare un po 'di tempo per caricare l'oggetto ActiveX.

+0

La maggior parte delle volte, l'installazione di ActiveX è bloccata dai browser. Se si utilizza IE, viene visualizzata una barra di avviso gialla che chiede se si desidera installare l'oggetto. Solo dopo il consenso dell'utente, l'oggetto verrà installato. Se l'oggetto non è caricato, la funzione relativa all'oggetto deve verificare se l'oggetto richiesto è caricato. E hey, non tutti gli oggetti ActiveX sono precaricati nella macchina di tutti. – Nirmal

+0

ma non c'è una barra di avviso ..solo un errore – agnieszka

+0

Poiché si sta chiamando la funzione non appena viene caricato il documento, esiste la possibilità che la funzione venga eseguita anche prima che l'oggetto ActiveX sia caricato. Fare riferimento alla mia risposta modificata. – Nirmal

0

Forse l'ActiveX necessita di alcuni prerequisiti (ad esempio CRuntime) che non sono presenti sulle altre macchine? Hai provato a eseguire depends per Activex sul computer host?

0

Forse l'altra macchina ha uno scanner antivirus o simili che impedisce in modo silenzioso l'uso di ActiveX?

2

IE8 gestisce l'accesso a ActiveX a livello di dominio.

Per risolvere il problema:

  1. IE8, Strumenti -> Gestione componenti aggiuntivi
  2. In "Barre degli strumenti ed estensioni" trova il tuo ActiveX
  3. clic destro - Maggiori informazioni
  4. Click - Consenti tutti i siti
  5. Divertiti
Problemi correlati