DELPHI Android: сохраняйте значения, полученные в JavaScript, и помещайте их в переменные Delphi.Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 DELPHI Android: сохраняйте значения, полученные в JavaScript, и помещайте их в переменные Delphi.

Сообщение Anonymous »

Код: Выделить всё

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.
До тех пор этот код может захватывать «элемент» HTML-страницы. Мне нужно сохранить другие значения. Как вы могли бы это сделать, исходя из этого сценария? сохранить другое значение в Edit2.Text, Edit3.Text?
Я использую FMX.TWebBrowser.Navigate для доступа к странице. С помощью JavaScript я выбираю элемент, значение которого мне нужно, я воспроизвожу его внутри функции, которая преобразует его в строку, используя эти библиотеки Androidapi, вот и все.
Я хотел бы сохраните его в TStringList, Array или что-то в этом роде, чтобы иметь возможность отображать его в формах Firemonkey.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -variables
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»