我们有第三方ActiveX。它似乎在Windows XP机器(Internet Explorer 7)上正常工作。但是,当我们在Windows 7 Professional 64位(Internet Explorer 9)上进行测试时,我们会收到一条错误消息 - "对象不支持属性或方法' {methodname}' "
任何人都知道造成这种情况的原因是什么?
操作系统是否存在问题 - 安全性更严格,因此程序集需要什么?
浏览器是否存在问题 - 再次,安全性可能更严格,因此工具中的内容>>互联网选项>>需要调整安全性吗?
非常感谢您的想法或建议!
HTML:
<body onload="OpenActiveX()">
<OBJECT id="OurActiveX"
name=”OurActiveX"
classid="clsid:43663B77-905C-4885-BC6B-4F57FE10A270"
VIEWASTEXT codebase="CS1504CAB.cab">
</OBJECT>
<script language="javascript">
function OpenActiveX()
{
try
{
alert(document.OurActiveX.Echo("Hi I am here."));
var sdata = document.OurActiveX.GetData();
if(sdata == "0"){
document.getElementById("barcodes").innerHTML = "No barcodes found.";
}
else if( sdata == "1"){
document.getElementById("barcodes").innerHTML = "Could not find the barcode reader.";
}
else{
var adata = sdata.split(":");
document.getElementById("barcodes").innerHTML = adata[0] + "<BR/>" + adata[1];
}
}
catch(Err)
{
alert(Err.description);
}
}
</script>
<div id="barcodes" />
答案 0 :(得分:2)
错误消息表明该控件在机器上不可用。您可以在客户端计算机上检查IE的安全设置,并验证IE的以下安全设置为“提示”或“已启用”:
1)下载已签名的ActiveX控件 2)运行ActiveX控件和插件 3)脚本ActiveX控件标记为脚本安全
默认情况下,Windows 7中的保护模式为“Turn the proected mode off”或尝试以管理员身份运行IE可以解决安全问题。
此外,如果您使用的是64位IE,则需要确保该控件支持64位。
答案 1 :(得分:0)
没有document.OurActiveX
,因为HTML中的name
属性已被破坏(您使用了“智能引号”代替普通双引号 - 如果仔细查看,语法突出显示了这个。)
所以,事实上,document.OurActiveX
是undefined
,这就是你不能在其上调用任何方法的原因。
<OBJECT id="OurActiveX" name=”OurActiveX" classid="..."></OBJECT>
变为:
<OBJECT id="OurActiveX" name="OurActiveX" classid="..."></OBJECT>
无论如何,选择像document.someName
这样的DOM节点是非常过时的,并且容易出错;完全摆脱name
属性并使用document.getElementById
选择节点,就像你在其他地方一样。
答案 2 :(得分:0)
ActiveX不适用于64位IE。