fmx android webbrowser 发送和接收网页返回值

欢迎加入全网最大Delphi 技术交流群 682628230

声明一个接收网页返回值的 类: TJavaScriptValueCallback

interface

uses
{$IFDEF POSIX}
Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNIBridge,
Androidapi.JNI.Telephony,
Androidapi.Jni.JavaTypes,
Androidapi.JNI.Net,
Androidapi.Helpers,
Androidapi.JNI.WebKit,
Androidapi.JNI.Embarcadero,
FMX.Platform.Android,
{$ENDIF}
FMX.Dialogs,
system.UITypes,
FMX.Forms,
FMX.Types,
System.Messaging,
fmx.WebBrowser,
System.RegularExpressions,
System.SysUtils,
System.Types,
System.Classes;

type

{$IFDEF POSIX}

TJavaScriptResultEvent = procedure(Sender: TObject; const JavaScriptResult: string) of object;

TJavaScriptValueCallback = class(TJavaLocal, JValueCallback)
private
FOnResult: TJavaScriptResultEvent;
public
{ JValueCallback }
procedure onReceiveValue(value: JObject); cdecl;
public
property OnResult: TJavaScriptResultEvent read FOnResult write FOnResult;
end;

{$ENDIF}

———————————————

实现部分

{ TJavaScriptValueCallback }

procedure TJavaScriptValueCallback.onReceiveValue(value: JObject);
begin
if Assigned(FOnResult) then
FOnResult(Self, JStringToString(TJString.Wrap(value)).DeQuotedString(‘”‘));
end;

——————————————–

再写个函数封装 app 发送内容的:

class function TApp.EvaluateJavascript( script: string; wb: TWebBrowser; resValue: TJavaScriptValueCallback): Boolean;
var
view: jWebView;
begin
result := Supports(wb, JWebView, view);
if result then
view.evaluateJavascript( StringToJString( script), resValue);
end;

——————————————-

使用方式: 在 form 创建一个 TJavaScriptValueCallback , 然后处理它得到 网页返回的事件, 如:

JsValue := TJavaScriptValueCallback.Create;
JsValue.OnResult := OnJSValueCallBack;

procedure TFamBrowser.OnJSValueCallBack(Sender: TObject; const Result: string);

这里就是网页返回的地方, result 就是网页返回的内容

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享