[资料收集]Delphi 与 JavaScript
2013-04-22 15:05 lilooo 阅读(452) 评论(0) 编辑 收藏 举报一、在 Delphi 中调用 JavaScript
[来源]http://www.cnblogs.com/del/archive/2008/07/30/1256826.html
本例测试用的 Html 文件(包含三个要测试的 Js 函数):
本例效果图:
代码文件:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, SHDocVw; type TForm1 = class(TForm) WebBrowser1: TWebBrowser; Button1: TButton; Button2: TButton; Button3: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var HtmlPath: string; begin WebBrowser1.Left := -WebBrowser1.Width; {隐藏 WebBrowser1} HtmlPath := ExtractFilePath(ParamStr(0)) + 'Test.htm'; WebBrowser1.Navigate(HtmlPath); end; procedure TForm1.Button1Click(Sender: TObject); var str: Variant; begin str := WebBrowser1.OleObject.document.parentWindow.JsStr2('12345'); ShowMessage(str); end; procedure TForm1.Button2Click(Sender: TObject); var num: Variant; begin num := WebBrowser1.OleObject.document.parentWindow.JsNum2(4); ShowMessage(num); end; procedure TForm1.Button3Click(Sender: TObject); begin WebBrowser1.OleObject.document.parentWindow.JsMsg('ABC'); {也可以这样:} WebBrowser1.OleObject.document.parentWindow.execScript('JsMsg("ABCDEFG")', 'JavaScript'); end; end.
二、Delphi程序中运行JavaScript脚本代码
[来源]http://blog.csdn.net/manstar/article/details/7216343
微软Windows操作系统中有一个叫ScriptControl的OCX组件
利用这个组件,可以在自己的程序中运行JavaScript或VBScript这两种脚本代码
使用很简单,新建一个工程,在窗体中放一个Button1控件
在Button1控件的Click事件中写代码如下:
procedure TForm1.Button1Click(Sender: TObject); var js:OleVariant; begin js:=CreateOleObject('ScriptControl');//创建组件 js.Language:='JavaScript';//指定组件所使用的语言,也可以是VBScript ShowMessage(js.Eval('100+1'));//计算100+1的值 js:=Unassigned; end;
上例中,使用ScriptControl组件计算出100+1的值,并显示出来
Eval是ScriptControl组件的一个常用方法,返回值是string类型
另一个比较常用的方法是AddCode,如果有比较复杂的脚本代码需要运行,就先用AddCode将脚本代码添加进来,再进行运算
示例2:
{此函数需要 ComObj 单元的支持} {参数 JsCode 是要执行的 Js 代码; 参数 JsVar 是要返回的变量} function RunJs(const JsCode, JsVar: string): string; var script: OleVariant; begin try script := CreateOleObject('ScriptControl'); script.Language := 'JavaScript'; script.ExecuteStatement(JsCode); Result := script.Eval(JsVar); except Result := ''; end; end; procedure TForm1.Button1Click(Sender: TObject); var s: string; begin s := RunJs(Memo1.Text, 'str'); ShowMessage(s); end;