DELPHI Android: In JavaScript erfasste Werte speichern und in Delphi-Variablen einfügenJavaScript

Javascript-Forum
Guest
 DELPHI Android: In JavaScript erfasste Werte speichern und in Delphi-Variablen einfügen

Post by Guest »

Code: Select all

unit Unit1;

interface

uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.WebBrowser, FMX.Controls.Presentation, FMX.StdCtrls, FMX.Edit,
Androidapi.JNIBridge, Androidapi.JNI.WebKit, Androidapi.JNI.JavaTypes;

type
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;

TForm1 = class(TForm)
WebBrowser: TWebBrowser;
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
FJavaScriptValueCallback: TJavaScriptValueCallback;
procedure NewDateResultHandler(Sender: TObject; const AJavaScriptResult: string);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;

var
Form1: TForm1;

implementation

{$R *.fmx}

uses
Androidapi.Helpers;

{ TJavaScriptValueCallback }

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

{ TForm1 }

constructor TForm1.Create(AOwner: TComponent);
begin
inherited;
FJavaScriptValueCallback := TJavaScriptValueCallback.Create;
end;

destructor TForm1.Destroy;
begin
FJavaScriptValueCallback.Free;
inherited;
end;

procedure TForm1.NewDateResultHandler(Sender: TObject; const AJavaScriptResult: string);
begin
Edit1.Text := AJavaScriptResult;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
LWebView: JWebView;
begin
if Supports(WebBrowser, JWebView, LWebView) then
begin
FJavaScriptValueCallback.OnResult := NewDateResultHandler;
LWebView.evaluateJavascript(StringToJString('document.getElementById("ID").innerHTML;'), FJavaScriptValueCallback);
end;
end;

end.
Bis dahin kann dieser Code „ein Element“ der HTML-Seite erfassen. Ich muss andere Werte speichern. Wie könnten Sie dies ausgehend von diesem Skript tun? Einen anderen Wert in Edit2.Text, Edit3.Text speichern?
Ich verwende FMX.TWebBrowser.Navigate, um auf die Seite zuzugreifen. Mit JavaScript wähle ich das Element aus, von dem ich den Wert benötige, ich spiele ihn innerhalb der Funktion ab, die ihn in einen String konvertiert, und verwende dabei diese Androidapi-Bibliotheken, das wäre es.
Das würde ich gerne Speichern Sie es in einer TStringList, einem Array oder so etwas, um es in Firemonkey-Formularen anzeigen zu können.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post