有时做项目难免用到代码交叉调用,delphi中执行js就是一种,两种方法可用:

一、使用webbrower,比较麻烦

二、使用ScriptControl,简单方便:

1.首先

uses ComObj;

2.通用函数:

function ExecScript(Code,Lang,Func:string):string;

var

script:OleVariant;

begin

try

script:=CreateOleObject('ScriptControl');

script.Language:=Lang;

script.AddCode(Code);

Result:=script.Eval(Func);

except

end;

end;

3.放入一个memo,直接在form的create时,loadfromfile即可,或是直接把javascript代码放到memo中

procedure TForm1.FormCreate(Sender: TObject);

begin

mmoscript.Lines.LoadFromFile('uifordata.js');

end;

4.调用

cbbValue7.Text := ExecScript(mmoscript.Text,'JavaScript','function1(123)');

注意:本方法调用时,javascript的全局变量像screen不可用,会提示未定义。

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
end; var
Form1: TForm1; implementation {$R *.dfm} uses ComObj; {此函数需要 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; end.

最新文章

  1. Derived Column 用法
  2. Cannot create an instance of OLE DB provider "OraOLEDB.Oracle" for linked server "xxxxxxx".
  3. python 聊天室
  4. bzoj3926: [Zjoi2015]诸神眷顾的幻想乡
  5. MXNet设计笔记之:深度学习的编程模式比较
  6. 安装 Dubbo 注册中心(Zookeeper-3.4.6)--单节点
  7. Javascript的封装
  8. 【UVALive - 3713】Astronauts (2-SAT)
  9. poj3295 Tautology , 计算表达式的值
  10. node Express安装与使用(一)
  11. JMS基础篇(二)
  12. spring boot application.properties 属性详解
  13. 【练习】Python第三次
  14. 3.sparkSQL整合Hive
  15. rx.js 的冷和热观察
  16. 【托业】【新托业TOEIC新题型真题】学习笔记10-题库七-P7
  17. sqlserver触发器执行顺序【未经验证】
  18. linux 计划任务(十)
  19. java web开发过程中的“\”指的是什么,如何区分
  20. 常用Javascript函数与原型功能收藏

热门文章

  1. c# 定义operator运算符
  2. (转)Uncaught TypeError: Cannot set property 'innerHTML' of null
  3. L1、L2损失函数、Huber损失函数
  4. Least Common Ancestors
  5. linux基础知识汇总(三)-vmware下ubuntu上网配置
  6. 远程到Server系统安装和使用QTP
  7. Tomcat_shutdown
  8. Hexo next博客的pjax一个Bug引发的关于pjax用法的小技巧-----pjax后图片点击放大的js失效
  9. VMware Workstation Pro 15.5.0 官方版本及激活密钥
  10. JVM内存图