有时做项目难免用到代码交叉调用,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不可用,会提示未定义。

  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, StdCtrls;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. Memo1: TMemo;
  12. Button1: TButton;
  13. Edit1: TEdit;
  14. Label1: TLabel;
  15. procedure Button1Click(Sender: TObject);
  16. end;
  17.  
  18. var
  19. Form1: TForm1;
  20.  
  21. implementation
  22.  
  23. {$R *.dfm}
  24.  
  25. uses ComObj;
  26.  
  27. {此函数需要 ComObj 单元的支持}
  28. {参数 JsCode 是要执行的 Js 代码; 参数 JsVar 是要返回的变量}
  29. function RunJs(const JsCode, JsVar: string): string;
  30. var
  31. script: OleVariant;
  32. begin
  33. try
  34. script := CreateOleObject('ScriptControl');
  35. script.Language := 'JavaScript';
  36. script.ExecuteStatement(JsCode);
  37. Result := script.Eval(JsVar);
  38. except
  39. Result := '';
  40. end;
  41. end;
  42.  
  43. procedure TForm1.Button1Click(Sender: TObject);
  44. var
  45. s: string;
  46. begin
  47. s := RunJs(Memo1.Text, 'str');
  48. ShowMessage(s);
  49. end;
  50.  
  51. end.

在delphi中执行javascript代码的更多相关文章

  1. python中执行javascript代码

    python中执行javascript代码: 1.安装相应的库,我使用的是PyV8 2.import PyV8 ctxt = PyV8.JSContext()     ctxt.enter()     ...

  2. JAVA中执行JavaScript代码并获取返回值

    JAVA中执行JavaScript代码并获取返回值 场景描述 实现思路 技术要点 代码实现 测试方法 运行结果 改进空间 场景描述 今天在CSDN上偶然看到一个帖子对于一段字符串 “var p=‘xx ...

  3. UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等) - walterlv

    原文:UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等) - walterlv UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等) ...

  4. UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等)

    UWP 中使用 WebView 时可以在网页中额外执行一些代码.于是你几乎可以在网页上做任何事情,那些你可以在浏览器控制台中做的事情. 本文将介绍做法. 本文内容 准备环境 执行 JavaScript ...

  5. 尚学堂 215 在java中执行JavaScript代码

    package com.bjsxt.test; import java.io.FileReader; import java.net.URL; import java.util.List; impor ...

  6. Selenium2(WebDriver)中执行JavaScript代码 (转)

    在用selenium编写web页面的自动化测试代码时,可能需要执行一些JavaScript代码,selenium本身就支持执行js,我们在代码中可以使用executeScript.executeAsy ...

  7. java util - 在java代码中执行javascript代码工具 rhino-1.7.7.jar

    需要 rhino-1.7.7.jar 包 代码示例: package cn.java.mozilla.javascript; import org.mozilla.javascript.Context ...

  8. C#执行javascript代码

    最近在做网站自动登陆小工具,遇到技术屏障.密码在submit时会使用js进行加密.这时我需要模拟这个加密过程,想到使用C#执行javascript代码. 对于执行javascript代码,纯代码方式使 ...

  9. 在WebBrowser中执行javascript脚本的几种方法整理(execScript/InvokeScript/NavigateScript) 附完整源码

    [实例简介] 涵盖了几种常用的 webBrowser执行javascript的方法,详见示例截图以及代码 [实例截图] [核心代码] execScript方式: 1 2 3 4 5 6 7 8 9 1 ...

随机推荐

  1. 四轴电池ADC监控学习

    一.硬件原理 电池供电通过两个分压电阻接地,STM32则在两电阻中间通过ADC检测电池电压.(引脚BAT_DET) 二.ADC通道初始化 //初始化电池检测ADC //开启ADC1的通道8 //Bat ...

  2. oracle 查看所有表的数据量并排序

    select t.table_name,t.num_rows from user_tables t ORDER BY NUM_ROWS DESC; 还可以直接查看dblink的:select t.ta ...

  3. Linux运维学习网站收藏

    Linux运维之道 1>  http://www.linuxidc.com/      //Linux公社,收藏Linux学习的很多知识 2> http://http://www.jb51 ...

  4. delphi 以系统权限运行程序的代码

    program sysrun; uses Windows, SysUtils, tlhelp32, AccCtrl, AclAPI; function findprocess(TheProcName: ...

  5. 转-C++之string判断字符串是否包含某个子串

    转自:https://blog.csdn.net/zhouxinxin0202/article/details/77862615/ 1.string类函数find C++的string类提供了字符串中 ...

  6. networkComms 通信框架之 消息处理器

    经常做Tcp通信的朋友知道,客户端发送数据到服务器 或者 服务器发送消息到客户端,接收端都要有相对应的处理器来对消息进行处理. 这里有两个概念 需要进行区别 消息类型 实际的数据类型  这里指的是未被 ...

  7. ES6数组方法

    ES6数组方法 以下方法添加到了Array.prototype对象上(isArray除外) indexOf 类似字符串的indexOf()方法 stringObject.indexOf(searchv ...

  8. upc组队赛14 Evolution Game【dp】

    Evolution Game 题目描述 In the fantasy world of ICPC there are magical beasts. As they grow, these beast ...

  9. 马士兵对话京东T6阿里P7(薪水):月薪5万,他为何要离职?

    马士兵大佬你知道吗? 你竟然不知道?你怎么可能不知道!你不知道是不可能的! 记得自己的第一行Java代码,你的Hello World是跟着谁学的吗?我的就是马士兵老师! 马士兵是唯一一个在当时讲课是让 ...

  10. WPF 动态添加控件以及样式字典的引用(Style introduction)

    原文:WPF 动态添加控件以及样式字典的引用(Style introduction) 我们想要达到的结果是,绑定多个Checkbox然后我们还可以获取它是否被选中,其实很简单,我们只要找到那几个关键的 ...