问题如下:所有对COM组件的方法调用均报错:对象不支持此属性或方法。
运行环境:Windows XP SP3 with IE 8.0
代码如下:
<html>
<script language=javascript>
function test_config()
{
config.FileName = "G:\\Projects\\Else\\fdsa.ini";
alert(config.GetStringValue("ddd", "eee", "fdkf;adjfdsa"));
alert(config.GetLongValue("abc", "def", 123));
}

function test_cashcode()
{
cashcode.OpenDevice(1);
cashcode.ResetDevice();
cashcode.SetPermitCashTypes("1 2,5.10/20\\50|100");
cashcode.AsyncPoll(30000);
}
</script><script language="javascript" for="cashcode" event=CashPolled(money)>
alert("收到钱币" + money);
</script><body onunload="javascript:cashcode.Cancel();">
<object height=0 id="cashcode" clsid="CLSID:F2C949F7-8203-435D-834D-9A0A3F60715F"></object>
<object height=0 id="config" clsid="CLSID:ED50FF8D-7CDC-4D83-8C9D-2A67DF230469"></object>
<p>
<input type="button" value="config" onclick="javascript:test_config();">
<input type="button" value="cashcode" onclick="javascript:test_cashcode();">
<input type="button" value="cancel" onclick="javascript:cashcode.Cancel();">
</p>
</body>
</html>PS:组件均已通过VC和VB测试,无任何问题,均支持IDispatch接口。

解决方案 »

  1.   

    哦。应该使用classid不是clsid。
      

  2.   

    IE8对com接口应该改动不大,其他浏览器可以的com接口基本上还是可以用的,自己再检查一下
      

  3.   

    我还没有测试过任何IE8有关的东西。首先,你得确认组件是否已加载,我看你的object标签貌似用错了属性名称,应该是 classid="CLSID:XXX" 而不是clsid="clsid:xxx"。
    如果不是这个问题,建议做下列尝试:
    在IE6/IE7下测试一下是否有相同的问题;
    检查组件在IE8中是否加载成功;
    关闭IE的保护模式试试;
    设置断点,看看能否单步执行,如果断点不成功,尝试在DEBUG版本中加入ATLASSERT(FALSE),然后启动IE8看看能否弹出调试提示窗口。
      

  4.   

    写成接口ID了 ?
    应该是类的GUID
      

  5.   

    我也有这个问题.WIN2008+IE8 activex控件的属性可以获取或设置,可就是一调方法,没有一个是认的,程序原在IE6,IE7下面都通过了.现在换了IE8就没办法调试了.
    只能装个虚拟机,在VM里调试以前的程序了.