程式碼拉取完成,頁面將自動刷新
如果作者愿意指定一种方便商用的许可方式,那么我就不必把所有的变量和单元名都改一遍再加入我的代码里了
为此我先分享一个jsNativeFunction的示例作为见面礼。没错,这个例子是从github.yangyxd那里改出来的
我觉得这个示例很重要
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
Langji.Wke.types, Langji.Wke.lib,Langji.Wke.Webbrowser, Vcl.ExtCtrls;
type
TForm1 = class(TForm)
btn_create_Lj: TButton;
btn_file: TButton;
Panel1: TPanel;
Panel2: TPanel;
procedure btn_create_LjClick(Sender: TObject);
procedure btn_fileClick(Sender: TObject);
private
LjWke: TWkeWebbrowser;
{ Private declarations }
public
{ Public declarations }
end;
function _Test(p1, p2, es_: jsExecState): jsValue;
function _Test1(p1, p2, es_: jsExecState): jsValue; //测试从Html传参数
var
Form1: TForm1;
implementation
{$R *.dfm}
function _Test(p1, p2, es_: jsExecState): jsValue;
begin
Result := jsString(es_,'66666');
end;
function _Test1(p1, p2, es_: jsExecState): jsValue;
var
_msg: String;
begin
_msg :=jsToTempString(es_,jsArg(es_, 0)); // 获取从Html传入的参数 获取第一个参数也就是0号参数
_msg:=_msg+'7777777'; //不用中文,有效避开utf8的坑
Result := jsStringw(es_,pchar(_msg));
end;
procedure TForm1.btn_create_LjClick(Sender: TObject);
begin
LjWke := TWkeWebbrowser.Create(Self);
LjWke.Parent := Panel2;
LjWke.Align := alClient;
jsBindFunction('delphi_Test', @_Test, 1);
jsBindFunction('delphi_Test1', @_Test1, 1);
end;
procedure TForm1.btn_fileClick(Sender: TObject);
begin
LjWke.LoadFile( 'd:\LjWkeNativeFnTest.htm';);
end;
end.
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<script>
function jsTestCall()
{
var result;
result = delphi_Test()
document.getElementById("btn_t1").value="从Delphi获取字符串>>>>>>>>> "+result;
}
function jsTest1Call()
{
var text;
var result;
text="abcd"
result = delphi_Test1(text)
alert("从Delphi获取字符串(带参数)>>>>>>>>> "+result);
document.getElementById("btn_t2").value="从Delphi获取字符串(带参数)>>>>>>>>> "+result;
}
</script>
<body >
<input type="button" style="width:100%;height:30" value="调用Delph本地函数" onclick="jsTestCall()" id="btn_t1"><br>
<input type="button" style="width:100%;height:30" value="调用Delph本地函数(传参数)" onclick="jsTest1Call()" id="btn_t2">
</body>
发的时候代码有修改希望不会错得太离谱