activex控件中调用html页面中的javascript

activex控件中调用html页面中的javascript(转)

关于delphi中开发activex控件,并从activex控件中调用html页面中的javascript。

这几天在搞个需要activex控件来实现的项目,丫丫的activex控件应该属于都快被人遗忘的技术了。

delphi中开发activex控件其实挺简单的,唯一的问题就是怎么调用页面中的javascript呢。

搜了n久发现一个c++写的通过接口调用方法,看上去贼复杂。

其实delphi中调用页面上的javascript贼简单。

方法如下:
1.创建一个方法->SetDoc->procedure SetDoc(const Doc: IUnknown); safecall;

用了一个IUnknown类型.

2.就一句话将IUnknown转成IHTMLDocument2->代码如下:

procedure TCxty_Lib.SetDoc(const Doc: IUnknown);
begin
  if Assigned(Doc) then
  begin
    HTMLDoc := IHTMLDocument2(Doc as IHTMLDocument);
  end;
end;

注意前头要申明一个 HTMLDoc ,是IhtmlDocument2类型,我申明在 private 中.

3.就是写一个调用javascript的方法咯,代码如下:

procedure TCxty_Lib.CallJavascript(script: string);
var
  win: IHTMLWindow2;
begin
  if not Assigned(HTMLDoc) then
    Exit;
  win := HTMLDoc.parentWindow;
  if not Assigned(win) then
    Exit;

  win.execScript(script, 'JavaScript');
end;

delphi部分就已完成.

贼简单吧,还没完重要的在html页面上,代码如下:
创建OBJECT

<OBJECT
      classid="clsid:C15DFE4C-B668-4178-A64B-3945365725F2"
      codebase="Cxty_LibProj1.ocx#version=1,0,0,0"
      width=0
      height=0
      align=center
      hspace=0
      vspace=0
      id="Cxty"
>
</OBJECT>
<SCRIPT LANGUAGE="JavaScript">
var Yannyo_Net = document.getElementByIdx('Yannyo_Net');
Yannyo_Net.SetDoc(document);//这句就吧页面上的document传给了activex,然后activex就为所欲为了.
</SCRIPT>


activex中调用脚本的时候只需调用 CallJavascript('javascript函数名称(参数)');

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值