javascript:";对象没有';“不支持此属性或方法”;调用ActiveX对象时

javascript:";对象没有';“不支持此属性或方法”;调用ActiveX对象时,javascript,activex,Javascript,Activex,我在Login.aspx上有一个带有ActiveX对象的简单html: <!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"

我在Login.aspx上有一个带有ActiveX对象的简单html:

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

函数getUserInfo()
{
var userInfo=MyActiveX.GetInfo();
form1.info.value=用户信息;
表格1.提交();
}
代码在我的机器上运行得很好(edit:hosted and run),在另一台机器上不工作:javascript函数的第一行出现错误“Object不支持此属性或方法”。cab文件与页面文件位于同一文件夹中。我根本不懂javascript,也不知道为什么会出现这个问题。谷歌搜索没有帮助。你知道吗

编辑:在两台机器上都使用了IE并启用了activex


Edit2:我还在函数开始时添加了if(document.MyActiveX),但在同一行代码中仍然出现错误-我的意思是document.MyActiveX看起来是真的,但调用该方法仍然失败

可能另一台计算机上的浏览器不支持activeX?只是一个猜测

我认为onload事件使函数甚至在加载ActiveX对象之前运行。您可以尝试以下方法:

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

函数getUserInfo(){
if(document.MyActiveX){
var userInfo=MyActiveX.GetInfo();
form1.info.value=用户信息;
表格1.提交();
}
}
setTimeout(“getUserInfo()”,500);

现在,getUserInfo()函数将在页面加载500毫秒后开始运行。这必须给ActiveX对象一些加载时间。

可能ActiveX需要一些其他计算机上不存在的先决条件(例如CRuntime)?您是否已尝试在主机上运行Activex?

可能另一台计算机有病毒扫描程序或类似程序,会自动阻止Activex的使用?

IE8在域级别管理对Activex的访问

要解决此问题,请执行以下操作:

  • IE8,工具->管理加载项
  • 在“工具栏和扩展”中找到您的ActiveX
  • 右键单击-详细信息
  • 在所有站点上单击-允许
  • 享受

  • 您确定要失败的计算机上已启用ActiveX吗?请注意,区域将很重要(本地、intranet、internet),并具有不同的安全特性。默认情况下,本地、intranet区域通常完全关闭ActiveX。全部选中-所有区域都具有启用ActiveX的所有内容。此处存在问题。同一个页面在IE7中工作,但在IE8中不工作。您找到解决方案了吗?大多数情况下,ActiveX安装被浏览器阻止。如果使用IE,会出现一个黄色警告栏,询问您是否要安装该对象。只有在用户同意后,才会安装该对象。如果未加载对象,则处理该对象的函数必须检查是否加载了所需的对象。嘿,并不是所有的ActiveX对象都预先加载到每个人的计算机中。因为您在加载文档时就调用了函数,所以函数可能在加载ActiveX对象之前就已经运行了。参考我编辑的答案。支持加载事件;OP也可以尝试从那里运行
    getUserInfo()
    。不完全启动js函数您确定没有启动该函数吗?您是否可以在功能中使用警告消息重新检查?