刚来一家新公司,项目经理想做一个ACTIVEX控件,说实话以前看过一些有关com的数据,个人感觉应该没有什么问题,就算有问题不是还有网络吗,网上有很多关于com、atl、activex的东西,个人感觉写的比较详细的就是“Phinecos(洞庭散人)”写的 《COM组件开发实践》系列文章(
http://www.cnblogs.com/phinecos/archive/2008/08/25/1275923.html
)写的很全也很详细,对于一些基本的activex、atl写的很好了。
   我刚开始也是按照洞庭大大的教程的学习,一直没有问题,可是当我把activex与ie结合起来问题就来了,
下面是COM组件开发实践(二)中的代码


<HTML>
<HEAD>
<TITLE>New Page</TITLE>
<script language="javascript">
    
function doTest()
    
{
        
var sum = FuckATL1.AddNumbers(3,4);
        alert(sum);
    }

</script>
</HEAD>
<BODY>
<OBJECT ID="FuckATL1" CLASSID="CLSID:7BF3B65F-A800-4604-AE6B-91844EFD5F05">
</OBJECT>
<input type="button" value="测试加法" id="btnOK" onclick="doTest();"></input>
</BODY>
</HTML>

但是我按照上面的写法activex出来了,没有问题,但是调用doTest的时候问题就出来了,总是调用失败,开始以为是我程序的问题,就上网找呀找呀还是没有解决,后来我想到了会不是是与activex的id有关系,于是我就换了一中写法
    function doTest()
    
{
         var obj = document.getElementById("FuckATL1");
        
var sum = obj.AddNumbers(3,4
);
        alert(sum);
    }

然后开始刷新运行,没想到对话框弹出来了。

可是到最后我还是不明白,activex是在客户端不是在服务端,为什么就不能直接使用id来调用函数?
可惜我对javascript不了解,希望如果哪位知道能告知。

写的不好,请大家多多包涵
posted on 2010-08-19 17:08 arrow8209 阅读(1970) 评论(4)  编辑 收藏 引用
评论
  • # re: 关于使用JavaScript调用com中ATL和AcitveX的一些问题
    yugi
    Posted @ 2010-08-19 17:32
    你把Script放Object后面去 试试  回复  更多评论   
  • # re: 关于使用JavaScript调用com中ATL和AcitveX的一些问题
    普派
    Posted @ 2010-08-19 21:58
    你把Script放Object后面  回复  更多评论   
  • # re: 关于使用JavaScript调用com中ATL和AcitveX的一些问题
    yugi
    Posted @ 2010-08-20 08:49
    再不行的话出了ID属性外
    还加个name属性 其值和ID一样

      回复  更多评论   
  • # re: 关于使用JavaScript调用com中ATL和AcitveX的一些问题
    arrow8209
    Posted @ 2010-08-20 09:09
    以上方法都试过了。就是不行。在此谢谢各位。  回复  更多评论   

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


统计