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

来源:互联网 发布:php电商开源系统 2017 编辑:程序博客网 时间:2024/05/16 12:10

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函数名称(参数)');