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