偶在delphi中用 建立一个ActiveX工程
添加一个ActiveX Control,添加一个Automation Object
在Type Library中添加一个Method1的方法procedure TActiveFormX.Method1;
begin
    ShowMessage('123');
end;
生成一个ocx,然后用windows的iexpress打包成一个cab文件建立一个html页面
用如下代码调用<HTML>
<script language="javascript">
function aa()
{
alert(document.act.Method1);
}
</script>
<H1> Delphi 6 ActiveX Test Page </H1><p>
You should see your Delphi 6 forms or controls embedded in the form below.
<HR><center><P>
<OBJECT
classid="clsid:1C31FE0A-23BC-4735-A393-DA221AFE52F4"
codebase="123.cab#version=1,0,0,0"
width=538
height=350
align=center
hspace=0
vspace=0
id="act"
>
</OBJECT><br><input type="button" onClick="aa()" value="click2"/>
</HTML>页面按钮单击后总是显示undefined(没有定义)
请各位大侠指点指点,偶想用Activex控件在页面返回指定的字符串,不知道以上做法是否正确?

解决方案 »

  1.   

    你的组件靠什么触发啊?delphi里有没有定义事件啊?
      

  2.   

    <script language="VBScript">Set TestFunc=CreateObject("Project1.Test")
    TestFunc.Foo()</script>
      

  3.   

    哪果打包成了CAB没有客户端没有注册的话应该提示下载安装组件才对呀。
      

  4.   

    去 C:\WINDOWS\Downloaded Program Files\ 看看你的组件是否存在,在就表示组件正常,不在表示组件有问题。
      

  5.   

    function aa()
    {
    alert(document.act.Method1); //这个是错的。改为:act.Method1();
    }
      

  6.   

    对于WEB客户端不用注册,他打开时会自动下载的
      

  7.   

    这个问题我已经测试通过:第一:确认你的webserver和C:\WINDOWS\Downloaded Program Files目录下的ocx是最新版本.(主要是为了确认方法名Method1是否正确.)第二:你把js代码做如下变动:
         alert(document.act.Method1);
         变为
         document.act.Method1();
      

  8.   

    可能需要重载ActiveX组件的Invoke方法,因为脚本是后期绑定,通过Invoke方法来调用各种方法和属性,所以自己在里边控制一下就ok了