首页 > 其他分享 >Delphi 通过WebBrowser调用JS方法

Delphi 通过WebBrowser调用JS方法

时间:2023-07-03 15:44:37浏览次数:42  
标签:f1 end Sender Delphi TForm1 TObject JS WebBrowser procedure

Delphi 通过WebBrowser 调用JS时,为防止版本问题导致调用失败,需要在html中增加

<meta http-equiv="X-UA-Compatible" content="IE=edge"/>


  • 示例
    html 代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
		<title></title>
		<script>
			function f1(s){  //定义一个简单的方法f1(),传入参数为字符串  s ,返回结果如下
				return "Hello Test "+s;
			}
		</script>
	</head>
	<body>
		<div>
			<button onclick="f1('tt')"> 测试1</button>
		</div>
	</body>
</html>
  • Delphi 调用
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, StdCtrls;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  WebBrowser1.Navigate('http://127.0.0.1:8848/site/t1.html');
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  s:string;
begin
  s:=WebBrowser1.OleObject.document.parentWindow.f1('张三');  //调用javascript 方法,传入参数并返回值
  caption:=s;  //返回结果 Hello Test 张三
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  s:string;
begin
  s:=WebBrowser1.OleObject.document.parentWindow.execScript('f1(''李四'')','JavaScript');  //执行一段javascript脚本,此时不能处理返回值
  Caption:=s;  //返回 空
end;

procedure TForm1.Button4Click(Sender: TObject);
var
  s:string;
begin
  s:=WebBrowser1.OleObject.document.Script.eval('f1(''李四'')');  //执行JavaScript中的eval,通过eval 方法解释执行JavaScript方法f1(),传入参数并返回数据
  Caption:=s; //返回结果 Hello Test 李四
end;

end.

image

image

标签:f1,end,Sender,Delphi,TForm1,TObject,JS,WebBrowser,procedure
From: https://www.cnblogs.com/sundh1981/p/17523057.html

相关文章

  • JS常见的事件
    onblur元素失去焦点时触发onblur事件会在对象失去焦点时发生。Onblur经常用于Javascript验证代码,一般用于表单输入框。提示:onblur相反事件为onfocus事件。onchange该事件在表单元素的内容改变时触发(<input>,<keygen>,<select>,和<textarea>)onchang......
  • jsjiami.v6加密混淆逆向分析介绍
    在互联网的不断发展的今天,网站的安全性越来越受到重视。JS混淆加密技术是一种常用的保护网站安全的手段。jsjiami.v6是一款常用的JS混淆加密工具,下面我们来详细了解一下。首先,我们来看一下一个使用jsjiami.v6进行混淆加密的案例代码:eval(function(p,a,c,k,e,r){e=function(c){re......
  • Jmeter之二_JSR223取样器,断言等添加失败的解决办法
    Jmeter之二_JSR223取样器,断言等添加失败的解决办法背景最近在学习jmeter但是发现在进行JSR223的相关取样器以及断言处理时出现了错误:java.lang.NoClassDefFoundError:Couldnotinitializeclassorg.apache.jmeter.assertions.JSR223AssertionBeanInfo错误信息如下图......
  • nodejs——linux安装环境
    yum安装nodejsv18.16.1model:unknown,wordcount:7,tokenestimate:14   在yum仓库中,可能没有提供Node.js18.16.1的特定版本。通常,yum仓库中提供的是最新稳定版本的软件包。如果您需要安装特定版本的Node.js,可以考虑使用Node版本管理工具(例如nvm......
  • 细节决定成败,聊聊JS的类型(上)
    今天我们来讲讲JavaScript的内容,在这个部分,我首先想跟你聊一聊类型。JavaScript类型对每个前端程序员来说,几乎都是最为熟悉的概念了。但是你真的很了解它们吗?我们不妨来看看下面的几个问题。为什么有的编程规范要求用void0代替undefined?字符串有最大长度吗?0.1+0.2......
  • 【JAVA基础】JSON转换
    JSON转换json字符串与dto转换publicJsonDataJtMdmResultDataDTOreceiveinfoMQ(StringreqContent){JtMdmMaterialReqDTOjtMdmMaterialReqDTO=newJtMdmMaterialReqDTO();List<JsonDataJtMdmResultDataInfosDTO>jsonDataJtMdmResultDataInfoDTOList......
  • js 数字格式化,只能输入正负整数,小数
     1、只能输入正整数<inputname="columnValue"class="input96required"type="text"size="50"onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replac......
  • JS(DOM)
    一WebAPIs和JS基础关联性1.1JS的组成1.2JS基础阶段以及WebAPIs阶段JS基础学习ECMAScript基础语法为后面作铺垫,WebAPIs是JS的应用,大量使用JS基础语法做交互效果二API和WebAPI2.1APIAPI(ApplicationProgrammingInterface,应用程序编程接口)是一......
  • 如何在AutoCAD中快速将矢量数据导出到shp、mdb、kml、geojson、gpx文件?
    在AutoCAD中借助GIS4CAD插件能为您提供便捷的矢量数据导出功能,不论是shp、mdb、kml、geojson还是gpx等矢量文件格式都能轻松导出。方法/步骤下载并安装GIS4CAD插件http://www.geosaas.com/download/gis4cad.exe 下载并安装GIS4CAD插件,安装成功后在AutoCAD菜单栏的最后会......
  • 如何在AutoCAD中加载shp、mdb、kml、geojson、gpx等矢量数据?
    在AutoCAD中加载矢量数据是一个非常有用的功能,它可以帮助用户将多种不同格式的数据集合在一个平台上进行分析和编辑。按照以下步骤可快速在AutoCAD中加载shp、mdb、kml、geojson、gpx等矢量数据。方法/步骤下载并安装GIS4CAD插件http://www.geosaas.com/download/gis4cad.e......