2009-09-22 22 views
5

tengo html simple en Login.aspx con un objeto ActiveX:javascript: "El objeto no admite esta propiedad o método" cuando el objeto ActiveX llamado

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

el código funciona perfectamente bien en mi máquina (editar: alojado y ejecutado), no funciona en el otro: hay un error "El objeto no admite esta propiedad o método" en la primera línea de la función javascript. El archivo cab está en la misma carpeta que el archivo de página. No sé javascript en absoluto y no tengo idea de por qué está ocurriendo el problema. Google no ayudó. ¿Tienes alguna idea?

Editar: en ambas máquinas se usó IE y se activó activex.

Edit2: También agregué if (document.MyActiveX) al comienzo de la función y todavía obtengo un error en la misma línea de código - Quiero decir que parece que document.MyActiveX es verdadero pero llamar al método aún falla

+0

¿Está seguro de que ActiveX está habilitado en la máquina que está fallando? Tenga en cuenta que la zona tendrá importancia (local, intranet, internet) y tendrá diferentes características de seguridad. Las zonas de Intranet locales normalmente tienen desactivado ActiveX por completo. –

+0

lo comprobé todo - todas las zonas tienen todo con activex habilitado – agnieszka

+0

mismo problema aquí. la misma página funciona en IE7 pero no en IE8. –

Respuesta

0

tal vez el navegador en la otra máquina no sea compatible con activeX? sólo una conjetura salvaje

+0

no. es decir, con activex habilitado – agnieszka

2

Creo que el evento de carga hace que la función se ejecute incluso antes de que se cargue el objeto ActiveX. Puede intentar lo siguiente en su lugar:

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

Ahora la función getUserInfo() comenzará a funcionar a 500 milisegundos después de cargar la página. Esto debe dar un tiempo para que se cargue el objeto ActiveX.

+0

La mayoría de las veces, la instalación de ActiveX está bloqueada por los navegadores. Si usa IE, aparece una barra de alerta amarilla que le pregunta si desea instalar el objeto. Solo después del consentimiento del usuario, el objeto será instalado. Si el objeto no está cargado, entonces la función que trata con el objeto debe verificar si el objeto requerido está cargado. Y bueno, no todos los objetos ActiveX están precargados en la máquina de todos. – Nirmal

+0

pero no hay barra de alerta ..simplemente un error – agnieszka

+0

Dado que está llamando a la función tan pronto como se carga el documento, existe la posibilidad de que la función se ejecute incluso antes de que se cargue el objeto ActiveX. Consulte mi respuesta editada. – Nirmal

0

Tal vez el ActiveX necesita algún requisito previo (por ejemplo, tiempo de ejecución) que no está presente en las otras máquinas? ¿Has intentado ejecutar depends para Activex en la máquina de alojamiento?

0

¿Tal vez la otra máquina tiene un escáner de virus o similar que silenciosamente impide el uso de ActiveX?

2

IE8 gestiona el acceso a ActiveX en el nivel de dominio.

Para solucionarlo:

  1. IE8, Herramientas -> Administrar complementos
  2. En "Barras de herramientas y extensiones" encontrar su ActiveX
  3. clic derecho - Más información
  4. Click - Permitir el todos los sitios
  5. Disfrute
Cuestiones relacionadas