我在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>
代码在我的机器上工作得很好(编辑:托管和运行),它在另一个上不起作用:在javascript函数的第一行中有一个错误“对象不支持这个属性或方法” 。 cab文件与页面文件位于同一文件夹中。我根本不懂javascript,也不知道为什么会出现这个问题。谷歌搜索没有帮助。你知道吗?
编辑:在两台机器上使用IE并启用了activex。
Edit2:我还在函数的开头添加if(document.MyActiveX)并且我仍然在同一行代码中出错 - 我的意思是它看起来像document.MyActiveX是真的但调用方法仍然失败
答案 0 :(得分:2)
我认为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()函数将开始运行500毫秒。这必须给一些时间来加载ActiveX对象。
答案 1 :(得分:2)
IE8管理域级别的ActiveX访问。
修复它:
答案 2 :(得分:0)
也许其他机器上的浏览器不支持activeX?只是一个疯狂的猜测
答案 3 :(得分:0)
也许ActiveX需要一些其他机器上不存在的先决条件(例如CRuntime)?您是否尝试在主机上为Activex运行depends?
答案 4 :(得分:0)
也许其他机器有一个病毒扫描程序或类似程序,它会无声地阻止ActiveX的使用?