30 Star 67 Fork 23

Langji / Wke4Delphi

 / 详情

分享一个jsNativeFunction的示例

待處理
創建於  
2021-01-15 21:24

如果作者愿意指定一种方便商用的许可方式,那么我就不必把所有的变量和单元名都改一遍再加入我的代码里了
为此我先分享一个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>

发的时候代码有修改希望不会错得太离谱 :stuck_out_tongue_winking_eye:

評論 (0)

uccBlack 創建了任务
uccBlack 關聯倉庫設置為Langji/Wke4Delphi
uccBlack 修改了描述
展開全部操作日誌

登錄 後才可以發表評論

狀態
負責人
里程碑
Pull Requests
關聯的 Pull Requests 被合併後可能會關閉此 issue
分支
開始時間   -   結束時間
-
置頂選項
優先級
参与者(1)
Delphi
1
https://gitee.com/LangjiApp/Wke4Delphi.git
git@gitee.com:LangjiApp/Wke4Delphi.git
LangjiApp
Wke4Delphi
Wke4Delphi

搜索幫助

14c37bed 8189591 565d56ea 8189591